@dwelle/excalidraw 0.3.18 → 0.3.19

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.
@@ -1846,7 +1846,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
1846
1846
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1847
1847
 
1848
1848
  "use strict";
1849
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ \"../../../node_modules/react/jsx-runtime.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash */ \"../../../node_modules/lodash/lodash.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _data_json__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../data/json */ \"../../data/json.ts\");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../i18n */ \"../../i18n.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils */ \"../../utils.ts\");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./App */ \"../../components/App.tsx\");\n/* harmony import */ var _ConfirmDialog__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./ConfirmDialog */ \"../../components/ConfirmDialog.tsx\");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./icons */ \"../../components/icons.tsx\");\n/* harmony import */ var _LibraryUnit__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./LibraryUnit */ \"../../components/LibraryUnit.tsx\");\n/* harmony import */ var _Stack__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./Stack */ \"../../components/Stack.tsx\");\n/* harmony import */ var _ToolButton__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./ToolButton */ \"../../components/ToolButton.tsx\");\n/* harmony import */ var _Tooltip__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./Tooltip */ \"../../components/Tooltip.tsx\");\n/* harmony import */ var _LibraryMenuItems_scss__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./LibraryMenuItems.scss */ \"../../components/LibraryMenuItems.scss\");\n/* harmony import */ var _LibraryMenuItems_scss__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(_LibraryMenuItems_scss__WEBPACK_IMPORTED_MODULE_13__);\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nconst LibraryMenuItems = ({ libraryItems, onRemoveFromLibrary, onAddToLibrary, onInsertShape, pendingElements, theme, setAppState, libraryReturnUrl, library, files, id, selectedItems, onToggle, onPublish, resetLibrary, }) => {\r\n const renderRemoveLibAlert = (0,react__WEBPACK_IMPORTED_MODULE_2__.useCallback)(() => {\r\n const content = selectedItems.length\r\n ? (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"alerts.removeItemsFromsLibrary\", { count: selectedItems.length })\r\n : (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"alerts.resetLibrary\");\r\n const title = selectedItems.length\r\n ? (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"confirmDialog.removeItemsFromLib\")\r\n : (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"confirmDialog.resetLibrary\");\r\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ConfirmDialog__WEBPACK_IMPORTED_MODULE_7__[\"default\"], Object.assign({ onConfirm: () => {\r\n if (selectedItems.length) {\r\n onRemoveFromLibrary();\r\n }\r\n else {\r\n resetLibrary();\r\n }\r\n setShowRemoveLibAlert(false);\r\n }, onCancel: () => {\r\n setShowRemoveLibAlert(false);\r\n }, title: title }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"p\", { children: content }, void 0) }), void 0));\r\n }, [selectedItems, onRemoveFromLibrary, resetLibrary]);\r\n const [showRemoveLibAlert, setShowRemoveLibAlert] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(false);\r\n const isMobile = (0,_App__WEBPACK_IMPORTED_MODULE_6__.useIsMobile)();\r\n const renderLibraryActions = () => {\r\n const itemsSelected = !!selectedItems.length;\r\n const items = itemsSelected\r\n ? libraryItems.filter((item) => selectedItems.includes(item.id))\r\n : libraryItems;\r\n const resetLabel = itemsSelected\r\n ? (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"buttons.remove\")\r\n : (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"buttons.resetLibrary\");\r\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: \"library-actions\" }, { children: [(!itemsSelected || !isMobile) && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ToolButton__WEBPACK_IMPORTED_MODULE_11__.ToolButton, { type: \"button\", title: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"buttons.load\"), \"aria-label\": (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"buttons.load\"), icon: _icons__WEBPACK_IMPORTED_MODULE_8__.load, onClick: () => {\r\n (0,_data_json__WEBPACK_IMPORTED_MODULE_3__.importLibraryFromJSON)(library)\r\n .then(() => {\r\n // Close and then open to get the libraries updated\r\n setAppState({ isLibraryOpen: false });\r\n setAppState({ isLibraryOpen: true });\r\n })\r\n .catch(_utils__WEBPACK_IMPORTED_MODULE_5__.muteFSAbortError)\r\n .catch((error) => {\r\n setAppState({ errorMessage: error.message });\r\n });\r\n }, className: \"library-actions--load\" }, \"import\")), !!items.length && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ToolButton__WEBPACK_IMPORTED_MODULE_11__.ToolButton, Object.assign({ type: \"button\", title: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"buttons.export\"), \"aria-label\": (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"buttons.export\"), icon: _icons__WEBPACK_IMPORTED_MODULE_8__.exportToFileIcon, onClick: () => __awaiter(void 0, void 0, void 0, function* () {\r\n const libraryItems = itemsSelected\r\n ? items\r\n : yield library.loadLibrary();\r\n (0,_data_json__WEBPACK_IMPORTED_MODULE_3__.saveLibraryAsJSON)(libraryItems)\r\n .catch(_utils__WEBPACK_IMPORTED_MODULE_5__.muteFSAbortError)\r\n .catch((error) => {\r\n setAppState({ errorMessage: error.message });\r\n });\r\n }), className: \"library-actions--export\" }, { children: selectedItems.length > 0 && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"span\", Object.assign({ className: \"library-actions-counter\" }, { children: selectedItems.length }), void 0)) }), \"export\"), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ToolButton__WEBPACK_IMPORTED_MODULE_11__.ToolButton, Object.assign({ type: \"button\", title: resetLabel, \"aria-label\": resetLabel, icon: _icons__WEBPACK_IMPORTED_MODULE_8__.trash, onClick: () => setShowRemoveLibAlert(true), className: \"library-actions--remove\" }, { children: selectedItems.length > 0 && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"span\", Object.assign({ className: \"library-actions-counter\" }, { children: selectedItems.length }), void 0)) }), \"reset\")] }, void 0)), itemsSelected && !isPublished && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Tooltip__WEBPACK_IMPORTED_MODULE_12__.Tooltip, Object.assign({ label: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"hints.publishLibrary\") }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_ToolButton__WEBPACK_IMPORTED_MODULE_11__.ToolButton, Object.assign({ type: \"button\", \"aria-label\": (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"buttons.publishLibrary\"), label: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"buttons.publishLibrary\"), icon: _icons__WEBPACK_IMPORTED_MODULE_8__.publishIcon, className: \"library-actions--publish\", onClick: onPublish }, { children: [!isMobile && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"label\", { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"buttons.publishLibrary\") }, void 0), selectedItems.length > 0 && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"span\", Object.assign({ className: \"library-actions-counter\" }, { children: selectedItems.length }), void 0))] }), void 0) }), void 0))] }), void 0));\r\n };\r\n const CELLS_PER_ROW = isMobile ? 4 : 6;\r\n const referrer = libraryReturnUrl || window.location.origin + window.location.pathname;\r\n const isPublished = selectedItems.some((id) => { var _a; return ((_a = libraryItems.find((item) => item.id === id)) === null || _a === void 0 ? void 0 : _a.status) === \"published\"; });\r\n const createLibraryItemCompo = (params) => {\r\n var _a, _b, _c, _d, _e;\r\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Stack__WEBPACK_IMPORTED_MODULE_10__[\"default\"].Col, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LibraryUnit__WEBPACK_IMPORTED_MODULE_9__.LibraryUnit, { elements: (_a = params.item) === null || _a === void 0 ? void 0 : _a.elements, files: files, isPending: !((_b = params.item) === null || _b === void 0 ? void 0 : _b.id) && !!((_c = params.item) === null || _c === void 0 ? void 0 : _c.elements), onClick: params.onClick || (() => { }), id: ((_d = params.item) === null || _d === void 0 ? void 0 : _d.id) || null, selected: !!((_e = params.item) === null || _e === void 0 ? void 0 : _e.id) && selectedItems.includes(params.item.id), onToggle: () => {\r\n var _a;\r\n if ((_a = params.item) === null || _a === void 0 ? void 0 : _a.id) {\r\n onToggle(params.item.id);\r\n }\r\n } }, void 0) }, params.key));\r\n };\r\n const renderLibrarySection = (items) => {\r\n const _items = items.map((item) => {\r\n if (item.id) {\r\n return createLibraryItemCompo({\r\n item,\r\n onClick: () => onInsertShape(item.elements),\r\n key: item.id,\r\n });\r\n }\r\n return createLibraryItemCompo({\r\n key: \"__pending__item__\",\r\n item,\r\n onClick: () => onAddToLibrary(pendingElements),\r\n });\r\n });\r\n // ensure we render all empty cells if no items are present\r\n let rows = (0,lodash__WEBPACK_IMPORTED_MODULE_1__.chunk)(_items, CELLS_PER_ROW);\r\n if (!rows.length) {\r\n rows = [[]];\r\n }\r\n return rows.map((rowItems, index, rows) => {\r\n if (index === rows.length - 1) {\r\n // pad row with empty cells\r\n rowItems = rowItems.concat(new Array(CELLS_PER_ROW - rowItems.length)\r\n .fill(null)\r\n .map((_, index) => {\r\n return createLibraryItemCompo({\r\n key: `empty_${index}`,\r\n item: null,\r\n });\r\n }));\r\n }\r\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Stack__WEBPACK_IMPORTED_MODULE_10__[\"default\"].Row, Object.assign({ align: \"center\", gap: 1 }, { children: rowItems }), index));\r\n });\r\n };\r\n const publishedItems = libraryItems.filter((item) => item.status === \"published\");\r\n const unpublishedItems = [\r\n // append pending library item\r\n ...(pendingElements.length\r\n ? [{ id: null, elements: pendingElements }]\r\n : []),\r\n ...libraryItems.filter((item) => item.status !== \"published\"),\r\n ];\r\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: \"library-menu-items-container\" }, { children: [showRemoveLibAlert && renderRemoveLibAlert(), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: \"layer-ui__library-header\" }, { children: [renderLibraryActions(), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"a\", Object.assign({ href: `${process.env.REACT_APP_LIBRARY_URL}?target=${window.name || \"_blank\"}&referrer=${referrer}&useHash=true&token=${id}&theme=${theme}`, target: \"_excalidraw_libraries\" }, { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"labels.libraries\") }), void 0)] }), \"library-header\"), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Stack__WEBPACK_IMPORTED_MODULE_10__[\"default\"].Col, Object.assign({ className: \"library-menu-items-container__items\", align: \"start\", gap: 1 }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: \"separator\" }, { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"labels.personalLib\") }), void 0), renderLibrarySection(unpublishedItems)] }, void 0), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: \"separator\" }, { children: [(0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"labels.excalidrawLib\"), \" \"] }), void 0), renderLibrarySection(publishedItems)] }, void 0)] }), void 0)] }), void 0));\r\n};\r\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (LibraryMenuItems);\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9MaWJyYXJ5TWVudUl0ZW1zLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQStCO0FBQ2U7QUFDMEI7QUFHNUM7QUFRZ0I7QUFDUjtBQUNRO0FBQ3lCO0FBQ3pCO0FBQ2hCO0FBQ2M7QUFDTjtBQUVIO0FBRWpDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxFQUN4QixZQUFZLEVBQ1osbUJBQW1CLEVBQ25CLGNBQWMsRUFDZCxhQUFhLEVBQ2IsZUFBZSxFQUNmLEtBQUssRUFDTCxXQUFXLEVBQ1gsZ0JBQWdCLEVBQ2hCLE9BQU8sRUFDUCxLQUFLLEVBQ0wsRUFBRSxFQUNGLGFBQWEsRUFDYixRQUFRLEVBQ1IsU0FBUyxFQUNULFlBQVksR0FpQmIsRUFBRSxFQUFFO0lBQ0gsTUFBTSxvQkFBb0IsR0FBRyxrREFBVyxDQUFDLEdBQUcsRUFBRTtRQUM1QyxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsTUFBTTtZQUNsQyxDQUFDLENBQUMsd0NBQUMsQ0FBQyxnQ0FBZ0MsRUFBRSxFQUFFLEtBQUssRUFBRSxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdEUsQ0FBQyxDQUFDLHdDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUM3QixNQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsTUFBTTtZQUNoQyxDQUFDLENBQUMsd0NBQUMsQ0FBQyxrQ0FBa0MsQ0FBQztZQUN2QyxDQUFDLENBQUMsd0NBQUMsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sQ0FDTCx1REFBQyxzREFBYSxrQkFDWixTQUFTLEVBQUUsR0FBRyxFQUFFO2dCQUNkLElBQUksYUFBYSxDQUFDLE1BQU0sRUFBRTtvQkFDeEIsbUJBQW1CLEVBQUUsQ0FBQztpQkFDdkI7cUJBQU07b0JBQ0wsWUFBWSxFQUFFLENBQUM7aUJBQ2hCO2dCQUNELHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQy9CLENBQUMsRUFDRCxR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Q0FBQyxrQkFBa0IsQ0FBQyxZQUNwQixNQVR3QyxnQkFBZ0IsQ0FVeEQsRUFDTix3REFBQyxtREFBUyxrQkFDUixTQUFTLEVBQUMscUNBQXFDLEVBQy9DLEtBQUssRUFBQyxPQUFPLEVBQ2IsR0FBRyxFQUFFLENBQUMsaUJBRU4sOEhBQ0UsOEVBQUssU0FBUyxFQUFDLFdBQVcsZ0JBQUUsd0NBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxZQUFPLEVBQ3pELG9CQUFvQixDQUFDLGdCQUFnQixDQUFDLFlBQ3RDLEVBRUgsOEhBQ0UsK0VBQUssU0FBUyxFQUFDLFdBQVcsaUJBQUUsd0NBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxrQkFBUSxFQUU1RCxvQkFBb0IsQ0FBQyxjQUFjLENBQUMsWUFDcEMsYUFDTyxhQUNSLENBQ1AsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLGlFQUFlLGdCQUFnQixFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvTGlicmFyeU1lbnVJdGVtcy50c3g/Zjc0MiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjaHVuayB9IGZyb20gXCJsb2Rhc2hcIjtcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgaW1wb3J0TGlicmFyeUZyb21KU09OLCBzYXZlTGlicmFyeUFzSlNPTiB9IGZyb20gXCIuLi9kYXRhL2pzb25cIjtcbmltcG9ydCBMaWJyYXJ5IGZyb20gXCIuLi9kYXRhL2xpYnJhcnlcIjtcbmltcG9ydCB7IEV4Y2FsaWRyYXdFbGVtZW50LCBOb25EZWxldGVkIH0gZnJvbSBcIi4uL2VsZW1lbnQvdHlwZXNcIjtcbmltcG9ydCB7IHQgfSBmcm9tIFwiLi4vaTE4blwiO1xuaW1wb3J0IHtcbiAgQXBwU3RhdGUsXG4gIEJpbmFyeUZpbGVzLFxuICBFeGNhbGlkcmF3UHJvcHMsXG4gIExpYnJhcnlJdGVtLFxuICBMaWJyYXJ5SXRlbXMsXG59IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgbXV0ZUZTQWJvcnRFcnJvciB9IGZyb20gXCIuLi91dGlsc1wiO1xuaW1wb3J0IHsgdXNlSXNNb2JpbGUgfSBmcm9tIFwiLi9BcHBcIjtcbmltcG9ydCBDb25maXJtRGlhbG9nIGZyb20gXCIuL0NvbmZpcm1EaWFsb2dcIjtcbmltcG9ydCB7IGV4cG9ydFRvRmlsZUljb24sIGxvYWQsIHB1Ymxpc2hJY29uLCB0cmFzaCB9IGZyb20gXCIuL2ljb25zXCI7XG5pbXBvcnQgeyBMaWJyYXJ5VW5pdCB9IGZyb20gXCIuL0xpYnJhcnlVbml0XCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIi4vU3RhY2tcIjtcbmltcG9ydCB7IFRvb2xCdXR0b24gfSBmcm9tIFwiLi9Ub29sQnV0dG9uXCI7XG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSBcIi4vVG9vbHRpcFwiO1xuXG5pbXBvcnQgXCIuL0xpYnJhcnlNZW51SXRlbXMuc2Nzc1wiO1xuXG5jb25zdCBMaWJyYXJ5TWVudUl0ZW1zID0gKHtcbiAgbGlicmFyeUl0ZW1zLFxuICBvblJlbW92ZUZyb21MaWJyYXJ5LFxuICBvbkFkZFRvTGlicmFyeSxcbiAgb25JbnNlcnRTaGFwZSxcbiAgcGVuZGluZ0VsZW1lbnRzLFxuICB0aGVtZSxcbiAgc2V0QXBwU3RhdGUsXG4gIGxpYnJhcnlSZXR1cm5VcmwsXG4gIGxpYnJhcnksXG4gIGZpbGVzLFxuICBpZCxcbiAgc2VsZWN0ZWRJdGVtcyxcbiAgb25Ub2dnbGUsXG4gIG9uUHVibGlzaCxcbiAgcmVzZXRMaWJyYXJ5LFxufToge1xuICBsaWJyYXJ5SXRlbXM6IExpYnJhcnlJdGVtcztcbiAgcGVuZGluZ0VsZW1lbnRzOiBMaWJyYXJ5SXRlbVtcImVsZW1lbnRzXCJdO1xuICBvblJlbW92ZUZyb21MaWJyYXJ5OiAoKSA9PiB2b2lkO1xuICBvbkluc2VydFNoYXBlOiAoZWxlbWVudHM6IExpYnJhcnlJdGVtW1wiZWxlbWVudHNcIl0pID0+IHZvaWQ7XG4gIG9uQWRkVG9MaWJyYXJ5OiAoZWxlbWVudHM6IExpYnJhcnlJdGVtW1wiZWxlbWVudHNcIl0pID0+IHZvaWQ7XG4gIHRoZW1lOiBBcHBTdGF0ZVtcInRoZW1lXCJdO1xuICBmaWxlczogQmluYXJ5RmlsZXM7XG4gIHNldEFwcFN0YXRlOiBSZWFjdC5Db21wb25lbnQ8YW55LCBBcHBTdGF0ZT5bXCJzZXRTdGF0ZVwiXTtcbiAgbGlicmFyeVJldHVyblVybDogRXhjYWxpZHJhd1Byb3BzW1wibGlicmFyeVJldHVyblVybFwiXTtcbiAgbGlicmFyeTogTGlicmFyeTtcbiAgaWQ6IHN0cmluZztcbiAgc2VsZWN0ZWRJdGVtczogTGlicmFyeUl0ZW1bXCJpZFwiXVtdO1xuICBvblRvZ2dsZTogKGlkOiBMaWJyYXJ5SXRlbVtcImlkXCJdKSA9PiB2b2lkO1xuICBvblB1Ymxpc2g6ICgpID0+IHZvaWQ7XG4gIHJlc2V0TGlicmFyeTogKCkgPT4gdm9pZDtcbn0pID0+IHtcbiAgY29uc3QgcmVuZGVyUmVtb3ZlTGliQWxlcnQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgY29udGVudCA9IHNlbGVjdGVkSXRlbXMubGVuZ3RoXG4gICAgICA/IHQoXCJhbGVydHMucmVtb3ZlSXRlbXNGcm9tc0xpYnJhcnlcIiwgeyBjb3VudDogc2VsZWN0ZWRJdGVtcy5sZW5ndGggfSlcbiAgICAgIDogdChcImFsZXJ0cy5yZXNldExpYnJhcnlcIik7XG4gICAgY29uc3QgdGl0bGUgPSBzZWxlY3RlZEl0ZW1zLmxlbmd0aFxuICAgICAgPyB0KFwiY29uZmlybURpYWxvZy5yZW1vdmVJdGVtc0Zyb21MaWJcIilcbiAgICAgIDogdChcImNvbmZpcm1EaWFsb2cucmVzZXRMaWJyYXJ5XCIpO1xuICAgIHJldHVybiAoXG4gICAgICA8Q29uZmlybURpYWxvZ1xuICAgICAgICBvbkNvbmZpcm09eygpID0+IHtcbiAgICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIG9uUmVtb3ZlRnJvbUxpYnJhcnkoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzZXRMaWJyYXJ5KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHNldFNob3dSZW1vdmVMaWJBbGVydChmYWxzZSk7XG4gICAgICAgIH19XG4gICAgICAgIG9uQ2FuY2VsPXsoKSA9PiB7XG4gICAgICAgICAgc2V0U2hvd1JlbW92ZUxpYkFsZXJ0KGZhbHNlKTtcbiAgICAgICAgfX1cbiAgICAgICAgdGl0bGU9e3RpdGxlfVxuICAgICAgPlxuICAgICAgICA8cD57Y29udGVudH08L3A+XG4gICAgICA8L0NvbmZpcm1EaWFsb2c+XG4gICAgKTtcbiAgfSwgW3NlbGVjdGVkSXRlbXMsIG9uUmVtb3ZlRnJvbUxpYnJhcnksIHJlc2V0TGlicmFyeV0pO1xuXG4gIGNvbnN0IFtzaG93UmVtb3ZlTGliQWxlcnQsIHNldFNob3dSZW1vdmVMaWJBbGVydF0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3QgaXNNb2JpbGUgPSB1c2VJc01vYmlsZSgpO1xuXG4gIGNvbnN0IHJlbmRlckxpYnJhcnlBY3Rpb25zID0gKCkgPT4ge1xuICAgIGNvbnN0IGl0ZW1zU2VsZWN0ZWQgPSAhIXNlbGVjdGVkSXRlbXMubGVuZ3RoO1xuICAgIGNvbnN0IGl0ZW1zID0gaXRlbXNTZWxlY3RlZFxuICAgICAgPyBsaWJyYXJ5SXRlbXMuZmlsdGVyKChpdGVtKSA9PiBzZWxlY3RlZEl0ZW1zLmluY2x1ZGVzKGl0ZW0uaWQpKVxuICAgICAgOiBsaWJyYXJ5SXRlbXM7XG4gICAgY29uc3QgcmVzZXRMYWJlbCA9IGl0ZW1zU2VsZWN0ZWRcbiAgICAgID8gdChcImJ1dHRvbnMucmVtb3ZlXCIpXG4gICAgICA6IHQoXCJidXR0b25zLnJlc2V0TGlicmFyeVwiKTtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJsaWJyYXJ5LWFjdGlvbnNcIj5cbiAgICAgICAgeyghaXRlbXNTZWxlY3RlZCB8fCAhaXNNb2JpbGUpICYmIChcbiAgICAgICAgICA8VG9vbEJ1dHRvblxuICAgICAgICAgICAga2V5PVwiaW1wb3J0XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgdGl0bGU9e3QoXCJidXR0b25zLmxvYWRcIil9XG4gICAgICAgICAgICBhcmlhLWxhYmVsPXt0KFwiYnV0dG9ucy5sb2FkXCIpfVxuICAgICAgICAgICAgaWNvbj17bG9hZH1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgaW1wb3J0TGlicmFyeUZyb21KU09OKGxpYnJhcnkpXG4gICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgLy8gQ2xvc2UgYW5kIHRoZW4gb3BlbiB0byBnZXQgdGhlIGxpYnJhcmllcyB1cGRhdGVkXG4gICAgICAgICAgICAgICAgICBzZXRBcHBTdGF0ZSh7IGlzTGlicmFyeU9wZW46IGZhbHNlIH0pO1xuICAgICAgICAgICAgICAgICAgc2V0QXBwU3RhdGUoeyBpc0xpYnJhcnlPcGVuOiB0cnVlIH0pO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKG11dGVGU0Fib3J0RXJyb3IpXG4gICAgICAgICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgc2V0QXBwU3RhdGUoeyBlcnJvck1lc3NhZ2U6IGVycm9yLm1lc3NhZ2UgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgY2xhc3NOYW1lPVwibGlicmFyeS1hY3Rpb25zLS1sb2FkXCJcbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICB7ISFpdGVtcy5sZW5ndGggJiYgKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICA8VG9vbEJ1dHRvblxuICAgICAgICAgICAgICBrZXk9XCJleHBvcnRcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgdGl0bGU9e3QoXCJidXR0b25zLmV4cG9ydFwiKX1cbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD17dChcImJ1dHRvbnMuZXhwb3J0XCIpfVxuICAgICAgICAgICAgICBpY29uPXtleHBvcnRUb0ZpbGVJY29ufVxuICAgICAgICAgICAgICBvbkNsaWNrPXthc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGlicmFyeUl0ZW1zID0gaXRlbXNTZWxlY3RlZFxuICAgICAgICAgICAgICAgICAgPyBpdGVtc1xuICAgICAgICAgICAgICAgICAgOiBhd2FpdCBsaWJyYXJ5LmxvYWRMaWJyYXJ5KCk7XG4gICAgICAgICAgICAgICAgc2F2ZUxpYnJhcnlBc0pTT04obGlicmFyeUl0ZW1zKVxuICAgICAgICAgICAgICAgICAgLmNhdGNoKG11dGVGU0Fib3J0RXJyb3IpXG4gICAgICAgICAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHNldEFwcFN0YXRlKHsgZXJyb3JNZXNzYWdlOiBlcnJvci5tZXNzYWdlIH0pO1xuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cImxpYnJhcnktYWN0aW9ucy0tZXhwb3J0XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3NlbGVjdGVkSXRlbXMubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibGlicmFyeS1hY3Rpb25zLWNvdW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgIHtzZWxlY3RlZEl0ZW1zLmxlbmd0aH1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L1Rvb2xCdXR0b24+XG4gICAgICAgICAgICA8VG9vbEJ1dHRvblxuICAgICAgICAgICAgICBrZXk9XCJyZXNldFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICB0aXRsZT17cmVzZXRMYWJlbH1cbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD17cmVzZXRMYWJlbH1cbiAgICAgICAgICAgICAgaWNvbj17dHJhc2h9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFNob3dSZW1vdmVMaWJBbGVydCh0cnVlKX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibGlicmFyeS1hY3Rpb25zLS1yZW1vdmVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7c2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJsaWJyYXJ5LWFjdGlvbnMtY291bnRlclwiPlxuICAgICAgICAgICAgICAgICAge3NlbGVjdGVkSXRlbXMubGVuZ3RofVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvVG9vbEJ1dHRvbj5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgICAge2l0ZW1zU2VsZWN0ZWQgJiYgIWlzUHVibGlzaGVkICYmIChcbiAgICAgICAgICA8VG9vbHRpcCBsYWJlbD17dChcImhpbnRzLnB1Ymxpc2hMaWJyYXJ5XCIpfT5cbiAgICAgICAgICAgIDxUb29sQnV0dG9uXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPXt0KFwiYnV0dG9ucy5wdWJsaXNoTGlicmFyeVwiKX1cbiAgICAgICAgICAgICAgbGFiZWw9e3QoXCJidXR0b25zLnB1Ymxpc2hMaWJyYXJ5XCIpfVxuICAgICAgICAgICAgICBpY29uPXtwdWJsaXNoSWNvbn1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibGlicmFyeS1hY3Rpb25zLS1wdWJsaXNoXCJcbiAgICAgICAgICAgICAgb25DbGljaz17b25QdWJsaXNofVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7IWlzTW9iaWxlICYmIDxsYWJlbD57dChcImJ1dHRvbnMucHVibGlzaExpYnJhcnlcIil9PC9sYWJlbD59XG4gICAgICAgICAgICAgIHtzZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImxpYnJhcnktYWN0aW9ucy1jb3VudGVyXCI+XG4gICAgICAgICAgICAgICAgICB7c2VsZWN0ZWRJdGVtcy5sZW5ndGh9XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9Ub29sQnV0dG9uPlxuICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH07XG5cbiAgY29uc3QgQ0VMTFNfUEVSX1JPVyA9IGlzTW9iaWxlID8gNCA6IDY7XG5cbiAgY29uc3QgcmVmZXJyZXIgPVxuICAgIGxpYnJhcnlSZXR1cm5VcmwgfHwgd2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTtcbiAgY29uc3QgaXNQdWJsaXNoZWQgPSBzZWxlY3RlZEl0ZW1zLnNvbWUoXG4gICAgKGlkKSA9PiBsaWJyYXJ5SXRlbXMuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gaWQpPy5zdGF0dXMgPT09IFwicHVibGlzaGVkXCIsXG4gICk7XG5cbiAgY29uc3QgY3JlYXRlTGlicmFyeUl0ZW1Db21wbyA9IChwYXJhbXM6IHtcbiAgICBpdGVtOlxuICAgICAgfCBMaWJyYXJ5SXRlbVxuICAgICAgfCAvKiBwZW5kaW5nIGxpYnJhcnkgaXRlbSAqLyB7XG4gICAgICAgICAgaWQ6IG51bGw7XG4gICAgICAgICAgZWxlbWVudHM6IHJlYWRvbmx5IE5vbkRlbGV0ZWQ8RXhjYWxpZHJhd0VsZW1lbnQ+W107XG4gICAgICAgIH1cbiAgICAgIHwgbnVsbDtcbiAgICBvbkNsaWNrPzogKCkgPT4gdm9pZDtcbiAgICBrZXk6IHN0cmluZztcbiAgfSkgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICA8U3RhY2suQ29sIGtleT17cGFyYW1zLmtleX0+XG4gICAgICAgIDxMaWJyYXJ5VW5pdFxuICAgICAgICAgIGVsZW1lbnRzPXtwYXJhbXMuaXRlbT8uZWxlbWVudHN9XG4gICAgICAgICAgZmlsZXM9e2ZpbGVzfVxuICAgICAgICAgIGlzUGVuZGluZz17IXBhcmFtcy5pdGVtPy5pZCAmJiAhIXBhcmFtcy5pdGVtPy5lbGVtZW50c31cbiAgICAgICAgICBvbkNsaWNrPXtwYXJhbXMub25DbGljayB8fCAoKCkgPT4ge30pfVxuICAgICAgICAgIGlkPXtwYXJhbXMuaXRlbT8uaWQgfHwgbnVsbH1cbiAgICAgICAgICBzZWxlY3RlZD17ISFwYXJhbXMuaXRlbT8uaWQgJiYgc2VsZWN0ZWRJdGVtcy5pbmNsdWRlcyhwYXJhbXMuaXRlbS5pZCl9XG4gICAgICAgICAgb25Ub2dnbGU9eygpID0+IHtcbiAgICAgICAgICAgIGlmIChwYXJhbXMuaXRlbT8uaWQpIHtcbiAgICAgICAgICAgICAgb25Ub2dnbGUocGFyYW1zLml0ZW0uaWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgIC8+XG4gICAgICA8L1N0YWNrLkNvbD5cbiAgICApO1xuICB9O1xuXG4gIGNvbnN0IHJlbmRlckxpYnJhcnlTZWN0aW9uID0gKFxuICAgIGl0ZW1zOiAoXG4gICAgICB8IExpYnJhcnlJdGVtXG4gICAgICB8IC8qIHBlbmRpbmcgbGlicmFyeSBpdGVtICovIHtcbiAgICAgICAgICBpZDogbnVsbDtcbiAgICAgICAgICBlbGVtZW50czogcmVhZG9ubHkgTm9uRGVsZXRlZDxFeGNhbGlkcmF3RWxlbWVudD5bXTtcbiAgICAgICAgfVxuICAgIClbXSxcbiAgKSA9PiB7XG4gICAgY29uc3QgX2l0ZW1zID0gaXRlbXMubWFwKChpdGVtKSA9PiB7XG4gICAgICBpZiAoaXRlbS5pZCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlTGlicmFyeUl0ZW1Db21wbyh7XG4gICAgICAgICAgaXRlbSxcbiAgICAgICAgICBvbkNsaWNrOiAoKSA9PiBvbkluc2VydFNoYXBlKGl0ZW0uZWxlbWVudHMpLFxuICAgICAgICAgIGtleTogaXRlbS5pZCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gY3JlYXRlTGlicmFyeUl0ZW1Db21wbyh7XG4gICAgICAgIGtleTogXCJfX3BlbmRpbmdfX2l0ZW1fX1wiLFxuICAgICAgICBpdGVtLFxuICAgICAgICBvbkNsaWNrOiAoKSA9PiBvbkFkZFRvTGlicmFyeShwZW5kaW5nRWxlbWVudHMpLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICAvLyBlbnN1cmUgd2UgcmVuZGVyIGFsbCBlbXB0eSBjZWxscyBpZiBubyBpdGVtcyBhcmUgcHJlc2VudFxuICAgIGxldCByb3dzID0gY2h1bmsoX2l0ZW1zLCBDRUxMU19QRVJfUk9XKTtcbiAgICBpZiAoIXJvd3MubGVuZ3RoKSB7XG4gICAgICByb3dzID0gW1tdXTtcbiAgICB9XG5cbiAgICByZXR1cm4gcm93cy5tYXAoKHJvd0l0ZW1zLCBpbmRleCwgcm93cykgPT4ge1xuICAgICAgaWYgKGluZGV4ID09PSByb3dzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgLy8gcGFkIHJvdyB3aXRoIGVtcHR5IGNlbGxzXG4gICAgICAgIHJvd0l0ZW1zID0gcm93SXRlbXMuY29uY2F0KFxuICAgICAgICAgIG5ldyBBcnJheShDRUxMU19QRVJfUk9XIC0gcm93SXRlbXMubGVuZ3RoKVxuICAgICAgICAgICAgLmZpbGwobnVsbClcbiAgICAgICAgICAgIC5tYXAoKF8sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiBjcmVhdGVMaWJyYXJ5SXRlbUNvbXBvKHtcbiAgICAgICAgICAgICAgICBrZXk6IGBlbXB0eV8ke2luZGV4fWAsXG4gICAgICAgICAgICAgICAgaXRlbTogbnVsbCxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTdGFjay5Sb3cgYWxpZ249XCJjZW50ZXJcIiBnYXA9ezF9IGtleT17aW5kZXh9PlxuICAgICAgICAgIHtyb3dJdGVtc31cbiAgICAgICAgPC9TdGFjay5Sb3c+XG4gICAgICApO1xuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IHB1Ymxpc2hlZEl0ZW1zID0gbGlicmFyeUl0ZW1zLmZpbHRlcihcbiAgICAoaXRlbSkgPT4gaXRlbS5zdGF0dXMgPT09IFwicHVibGlzaGVkXCIsXG4gICk7XG4gIGNvbnN0IHVucHVibGlzaGVkSXRlbXMgPSBbXG4gICAgLy8gYXBwZW5kIHBlbmRpbmcgbGlicmFyeSBpdGVtXG4gICAgLi4uKHBlbmRpbmdFbGVtZW50cy5sZW5ndGhcbiAgICAgID8gW3sgaWQ6IG51bGwsIGVsZW1lbnRzOiBwZW5kaW5nRWxlbWVudHMgfV1cbiAgICAgIDogW10pLFxuICAgIC4uLmxpYnJhcnlJdGVtcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uc3RhdHVzICE9PSBcInB1Ymxpc2hlZFwiKSxcbiAgXTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwibGlicmFyeS1tZW51LWl0ZW1zLWNvbnRhaW5lclwiPlxuICAgICAge3Nob3dSZW1vdmVMaWJBbGVydCAmJiByZW5kZXJSZW1vdmVMaWJBbGVydCgpfVxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJsYXllci11aV9fbGlicmFyeS1oZWFkZXJcIiBrZXk9XCJsaWJyYXJ5LWhlYWRlclwiPlxuICAgICAgICB7cmVuZGVyTGlicmFyeUFjdGlvbnMoKX1cbiAgICAgICAgPGFcbiAgICAgICAgICBocmVmPXtgJHtwcm9jZXNzLmVudi5SRUFDVF9BUFBfTElCUkFSWV9VUkx9P3RhcmdldD0ke1xuICAgICAgICAgICAgd2luZG93Lm5hbWUgfHwgXCJfYmxhbmtcIlxuICAgICAgICAgIH0mcmVmZXJyZXI9JHtyZWZlcnJlcn0mdXNlSGFzaD10cnVlJnRva2VuPSR7aWR9JnRoZW1lPSR7dGhlbWV9YH1cbiAgICAgICAgICB0YXJnZXQ9XCJfZXhjYWxpZHJhd19saWJyYXJpZXNcIlxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJsYWJlbHMubGlicmFyaWVzXCIpfVxuICAgICAgICA8L2E+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxTdGFjay5Db2xcbiAgICAgICAgY2xhc3NOYW1lPVwibGlicmFyeS1tZW51LWl0ZW1zLWNvbnRhaW5lcl9faXRlbXNcIlxuICAgICAgICBhbGlnbj1cInN0YXJ0XCJcbiAgICAgICAgZ2FwPXsxfVxuICAgICAgPlxuICAgICAgICA8PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic2VwYXJhdG9yXCI+e3QoXCJsYWJlbHMucGVyc29uYWxMaWJcIil9PC9kaXY+XG4gICAgICAgICAge3JlbmRlckxpYnJhcnlTZWN0aW9uKHVucHVibGlzaGVkSXRlbXMpfVxuICAgICAgICA8Lz5cblxuICAgICAgICA8PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic2VwYXJhdG9yXCI+e3QoXCJsYWJlbHMuZXhjYWxpZHJhd0xpYlwiKX0gPC9kaXY+XG5cbiAgICAgICAgICB7cmVuZGVyTGlicmFyeVNlY3Rpb24ocHVibGlzaGVkSXRlbXMpfVxuICAgICAgICA8Lz5cbiAgICAgIDwvU3RhY2suQ29sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgTGlicmFyeU1lbnVJdGVtcztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/LibraryMenuItems.tsx\n");
1849
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ \"../../../node_modules/react/jsx-runtime.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash */ \"../../../node_modules/lodash/lodash.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _data_json__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../data/json */ \"../../data/json.ts\");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../i18n */ \"../../i18n.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils */ \"../../utils.ts\");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./App */ \"../../components/App.tsx\");\n/* harmony import */ var _ConfirmDialog__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./ConfirmDialog */ \"../../components/ConfirmDialog.tsx\");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./icons */ \"../../components/icons.tsx\");\n/* harmony import */ var _LibraryUnit__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./LibraryUnit */ \"../../components/LibraryUnit.tsx\");\n/* harmony import */ var _Stack__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./Stack */ \"../../components/Stack.tsx\");\n/* harmony import */ var _ToolButton__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./ToolButton */ \"../../components/ToolButton.tsx\");\n/* harmony import */ var _Tooltip__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./Tooltip */ \"../../components/Tooltip.tsx\");\n/* harmony import */ var _LibraryMenuItems_scss__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./LibraryMenuItems.scss */ \"../../components/LibraryMenuItems.scss\");\n/* harmony import */ var _LibraryMenuItems_scss__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(_LibraryMenuItems_scss__WEBPACK_IMPORTED_MODULE_13__);\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nconst LibraryMenuItems = ({ libraryItems, onRemoveFromLibrary, onAddToLibrary, onInsertShape, pendingElements, theme, setAppState, libraryReturnUrl, library, files, id, selectedItems, onToggle, onPublish, resetLibrary, }) => {\r\n const renderRemoveLibAlert = (0,react__WEBPACK_IMPORTED_MODULE_2__.useCallback)(() => {\r\n const content = selectedItems.length\r\n ? (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"alerts.removeItemsFromsLibrary\", { count: selectedItems.length })\r\n : (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"alerts.resetLibrary\");\r\n const title = selectedItems.length\r\n ? (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"confirmDialog.removeItemsFromLib\")\r\n : (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"confirmDialog.resetLibrary\");\r\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ConfirmDialog__WEBPACK_IMPORTED_MODULE_7__[\"default\"], Object.assign({ onConfirm: () => {\r\n if (selectedItems.length) {\r\n onRemoveFromLibrary();\r\n }\r\n else {\r\n resetLibrary();\r\n }\r\n setShowRemoveLibAlert(false);\r\n }, onCancel: () => {\r\n setShowRemoveLibAlert(false);\r\n }, title: title }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"p\", { children: content }, void 0) }), void 0));\r\n }, [selectedItems, onRemoveFromLibrary, resetLibrary]);\r\n const [showRemoveLibAlert, setShowRemoveLibAlert] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(false);\r\n const isMobile = (0,_App__WEBPACK_IMPORTED_MODULE_6__.useIsMobile)();\r\n const renderLibraryActions = () => {\r\n const itemsSelected = !!selectedItems.length;\r\n const items = itemsSelected\r\n ? libraryItems.filter((item) => selectedItems.includes(item.id))\r\n : libraryItems;\r\n const resetLabel = itemsSelected\r\n ? (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"buttons.remove\")\r\n : (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"buttons.resetLibrary\");\r\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: \"library-actions\" }, { children: [(!itemsSelected || !isMobile) && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ToolButton__WEBPACK_IMPORTED_MODULE_11__.ToolButton, { type: \"button\", title: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"buttons.load\"), \"aria-label\": (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"buttons.load\"), icon: _icons__WEBPACK_IMPORTED_MODULE_8__.load, onClick: () => {\r\n (0,_data_json__WEBPACK_IMPORTED_MODULE_3__.importLibraryFromJSON)(library)\r\n .then(() => {\r\n // Close and then open to get the libraries updated\r\n setAppState({ isLibraryOpen: false });\r\n setAppState({ isLibraryOpen: true });\r\n })\r\n .catch(_utils__WEBPACK_IMPORTED_MODULE_5__.muteFSAbortError)\r\n .catch((error) => {\r\n setAppState({ errorMessage: error.message });\r\n });\r\n }, className: \"library-actions--load\" }, \"import\")), !!items.length && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ToolButton__WEBPACK_IMPORTED_MODULE_11__.ToolButton, Object.assign({ type: \"button\", title: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"buttons.export\"), \"aria-label\": (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"buttons.export\"), icon: _icons__WEBPACK_IMPORTED_MODULE_8__.exportToFileIcon, onClick: () => __awaiter(void 0, void 0, void 0, function* () {\r\n const libraryItems = itemsSelected\r\n ? items\r\n : yield library.loadLibrary();\r\n (0,_data_json__WEBPACK_IMPORTED_MODULE_3__.saveLibraryAsJSON)(libraryItems)\r\n .catch(_utils__WEBPACK_IMPORTED_MODULE_5__.muteFSAbortError)\r\n .catch((error) => {\r\n setAppState({ errorMessage: error.message });\r\n });\r\n }), className: \"library-actions--export\" }, { children: selectedItems.length > 0 && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"span\", Object.assign({ className: \"library-actions-counter\" }, { children: selectedItems.length }), void 0)) }), \"export\"), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ToolButton__WEBPACK_IMPORTED_MODULE_11__.ToolButton, Object.assign({ type: \"button\", title: resetLabel, \"aria-label\": resetLabel, icon: _icons__WEBPACK_IMPORTED_MODULE_8__.trash, onClick: () => setShowRemoveLibAlert(true), className: \"library-actions--remove\" }, { children: selectedItems.length > 0 && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"span\", Object.assign({ className: \"library-actions-counter\" }, { children: selectedItems.length }), void 0)) }), \"reset\")] }, void 0)), itemsSelected && !isPublished && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Tooltip__WEBPACK_IMPORTED_MODULE_12__.Tooltip, Object.assign({ label: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"hints.publishLibrary\") }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_ToolButton__WEBPACK_IMPORTED_MODULE_11__.ToolButton, Object.assign({ type: \"button\", \"aria-label\": (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"buttons.publishLibrary\"), label: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"buttons.publishLibrary\"), icon: _icons__WEBPACK_IMPORTED_MODULE_8__.publishIcon, className: \"library-actions--publish\", onClick: onPublish }, { children: [!isMobile && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"label\", { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"buttons.publishLibrary\") }, void 0), selectedItems.length > 0 && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"span\", Object.assign({ className: \"library-actions-counter\" }, { children: selectedItems.length }), void 0))] }), void 0) }), void 0))] }), void 0));\r\n };\r\n const CELLS_PER_ROW = isMobile ? 4 : 6;\r\n const referrer = libraryReturnUrl || window.location.origin + window.location.pathname;\r\n const isPublished = selectedItems.some((id) => { var _a; return ((_a = libraryItems.find((item) => item.id === id)) === null || _a === void 0 ? void 0 : _a.status) === \"published\"; });\r\n const createLibraryItemCompo = (params) => {\r\n var _a, _b, _c, _d, _e;\r\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Stack__WEBPACK_IMPORTED_MODULE_10__[\"default\"].Col, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LibraryUnit__WEBPACK_IMPORTED_MODULE_9__.LibraryUnit, { elements: (_a = params.item) === null || _a === void 0 ? void 0 : _a.elements, files: files, isPending: !((_b = params.item) === null || _b === void 0 ? void 0 : _b.id) && !!((_c = params.item) === null || _c === void 0 ? void 0 : _c.elements), onClick: params.onClick || (() => { }), id: ((_d = params.item) === null || _d === void 0 ? void 0 : _d.id) || null, selected: !!((_e = params.item) === null || _e === void 0 ? void 0 : _e.id) && selectedItems.includes(params.item.id), onToggle: () => {\r\n var _a;\r\n if ((_a = params.item) === null || _a === void 0 ? void 0 : _a.id) {\r\n onToggle(params.item.id);\r\n }\r\n } }, void 0) }, params.key));\r\n };\r\n const renderLibrarySection = (items) => {\r\n const _items = items.map((item) => {\r\n if (item.id) {\r\n return createLibraryItemCompo({\r\n item,\r\n onClick: () => onInsertShape(item.elements),\r\n key: item.id,\r\n });\r\n }\r\n return createLibraryItemCompo({\r\n key: \"__pending__item__\",\r\n item,\r\n onClick: () => onAddToLibrary(pendingElements),\r\n });\r\n });\r\n // ensure we render all empty cells if no items are present\r\n let rows = (0,lodash__WEBPACK_IMPORTED_MODULE_1__.chunk)(_items, CELLS_PER_ROW);\r\n if (!rows.length) {\r\n rows = [[]];\r\n }\r\n return rows.map((rowItems, index, rows) => {\r\n if (index === rows.length - 1) {\r\n // pad row with empty cells\r\n rowItems = rowItems.concat(new Array(CELLS_PER_ROW - rowItems.length)\r\n .fill(null)\r\n .map((_, index) => {\r\n return createLibraryItemCompo({\r\n key: `empty_${index}`,\r\n item: null,\r\n });\r\n }));\r\n }\r\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Stack__WEBPACK_IMPORTED_MODULE_10__[\"default\"].Row, Object.assign({ align: \"center\", gap: 1 }, { children: rowItems }), index));\r\n });\r\n };\r\n const publishedItems = libraryItems.filter((item) => item.status === \"published\");\r\n const unpublishedItems = [\r\n // append pending library item\r\n ...(pendingElements.length\r\n ? [{ id: null, elements: pendingElements }]\r\n : []),\r\n ...libraryItems.filter((item) => item.status !== \"published\"),\r\n ];\r\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: \"library-menu-items-container\" }, { children: [showRemoveLibAlert && renderRemoveLibAlert(), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: \"layer-ui__library-header\" }, { children: [renderLibraryActions(), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"a\", Object.assign({ href: `https://libraries.excalidraw.com?target=${window.name || \"_blank\"}&referrer=${referrer}&useHash=true&token=${id}&theme=${theme}`, target: \"_excalidraw_libraries\" }, { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"labels.libraries\") }), void 0)] }), \"library-header\"), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Stack__WEBPACK_IMPORTED_MODULE_10__[\"default\"].Col, Object.assign({ className: \"library-menu-items-container__items\", align: \"start\", gap: 1 }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: \"separator\" }, { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"labels.personalLib\") }), void 0), renderLibrarySection(unpublishedItems)] }, void 0), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: \"separator\" }, { children: [(0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"labels.excalidrawLib\"), \" \"] }), void 0), renderLibrarySection(publishedItems)] }, void 0)] }), void 0)] }), void 0));\r\n};\r\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (LibraryMenuItems);\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9MaWJyYXJ5TWVudUl0ZW1zLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQStCO0FBQ2U7QUFDMEI7QUFHNUM7QUFRZ0I7QUFDUjtBQUNRO0FBQ3lCO0FBQ3pCO0FBQ2hCO0FBQ2M7QUFDTjtBQUVIO0FBRWpDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxFQUN4QixZQUFZLEVBQ1osbUJBQW1CLEVBQ25CLGNBQWMsRUFDZCxhQUFhLEVBQ2IsZUFBZSxFQUNmLEtBQUssRUFDTCxXQUFXLEVBQ1gsZ0JBQWdCLEVBQ2hCLE9BQU8sRUFDUCxLQUFLLEVBQ0wsRUFBRSxFQUNGLGFBQWEsRUFDYixRQUFRLEVBQ1IsU0FBUyxFQUNULFlBQVksR0FpQmIsRUFBRSxFQUFFO0lBQ0gsTUFBTSxvQkFBb0IsR0FBRyxrREFBVyxDQUFDLEdBQUcsRUFBRTtRQUM1QyxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsTUFBTTtZQUNsQyxDQUFDLENBQUMsd0NBQUMsQ0FBQyxnQ0FBZ0MsRUFBRSxFQUFFLEtBQUssRUFBRSxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdEUsQ0FBQyxDQUFDLHdDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUM3QixNQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsTUFBTTtZQUNoQyxDQUFDLENBQUMsd0NBQUMsQ0FBQyxrQ0FBa0MsQ0FBQztZQUN2QyxDQUFDLENBQUMsd0NBQUMsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sQ0FDTCx1REFBQyxzREFBYSxrQkFDWixTQUFTLEVBQUUsR0FBRyxFQUFFO2dCQUNkLElBQUksYUFBYSxDQUFDLE1BQU0sRUFBRTtvQkFDeEIsbUJBQW1CLEVBQUUsQ0FBQztpQkFDdkI7cUJBQU07b0JBQ0wsWUFBWSxFQUFFLENBQUM7aUJBQ2hCO2dCQUNELHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQy9CLENBQUMsRUFDRCxR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QWdCLENBVXhELEVBQ04sd0RBQUMsbURBQVMsa0JBQ1IsU0FBUyxFQUFDLHFDQUFxQyxFQUMvQyxLQUFLLEVBQUMsT0FBTyxFQUNiLEdBQUcsRUFBRSxDQUFDLGlCQUVOLDhIQUNFLDhFQUFLLFNBQVMsRUFBQyxXQUFXLGdCQUFFLHdDQUFDLENBQUMsb0JBQW9CLENBQUMsWUFBTyxFQUN6RCxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUN0QyxFQUVILDhIQUNFLCtFQUFLLFNBQVMsRUFBQyxXQUFXLGlCQUFFLHdDQUFDLENBQUMsc0JBQXNCLENBQUMsa0JBQVEsRUFFNUQsb0JBQW9CLENBQUMsY0FBYyxDQUFDLFlBQ3BDLGFBQ08sYUFDUixDQUNQLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixpRUFBZSxnQkFBZ0IsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL0xpYnJhcnlNZW51SXRlbXMudHN4P2Y3NDIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY2h1bmsgfSBmcm9tIFwibG9kYXNoXCI7XG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IGltcG9ydExpYnJhcnlGcm9tSlNPTiwgc2F2ZUxpYnJhcnlBc0pTT04gfSBmcm9tIFwiLi4vZGF0YS9qc29uXCI7XG5pbXBvcnQgTGlicmFyeSBmcm9tIFwiLi4vZGF0YS9saWJyYXJ5XCI7XG5pbXBvcnQgeyBFeGNhbGlkcmF3RWxlbWVudCwgTm9uRGVsZXRlZCB9IGZyb20gXCIuLi9lbGVtZW50L3R5cGVzXCI7XG5pbXBvcnQgeyB0IH0gZnJvbSBcIi4uL2kxOG5cIjtcbmltcG9ydCB7XG4gIEFwcFN0YXRlLFxuICBCaW5hcnlGaWxlcyxcbiAgRXhjYWxpZHJhd1Byb3BzLFxuICBMaWJyYXJ5SXRlbSxcbiAgTGlicmFyeUl0ZW1zLFxufSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IG11dGVGU0Fib3J0RXJyb3IgfSBmcm9tIFwiLi4vdXRpbHNcIjtcbmltcG9ydCB7IHVzZUlzTW9iaWxlIH0gZnJvbSBcIi4vQXBwXCI7XG5pbXBvcnQgQ29uZmlybURpYWxvZyBmcm9tIFwiLi9Db25maXJtRGlhbG9nXCI7XG5pbXBvcnQgeyBleHBvcnRUb0ZpbGVJY29uLCBsb2FkLCBwdWJsaXNoSWNvbiwgdHJhc2ggfSBmcm9tIFwiLi9pY29uc1wiO1xuaW1wb3J0IHsgTGlicmFyeVVuaXQgfSBmcm9tIFwiLi9MaWJyYXJ5VW5pdFwiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCIuL1N0YWNrXCI7XG5pbXBvcnQgeyBUb29sQnV0dG9uIH0gZnJvbSBcIi4vVG9vbEJ1dHRvblwiO1xuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gXCIuL1Rvb2x0aXBcIjtcblxuaW1wb3J0IFwiLi9MaWJyYXJ5TWVudUl0ZW1zLnNjc3NcIjtcblxuY29uc3QgTGlicmFyeU1lbnVJdGVtcyA9ICh7XG4gIGxpYnJhcnlJdGVtcyxcbiAgb25SZW1vdmVGcm9tTGlicmFyeSxcbiAgb25BZGRUb0xpYnJhcnksXG4gIG9uSW5zZXJ0U2hhcGUsXG4gIHBlbmRpbmdFbGVtZW50cyxcbiAgdGhlbWUsXG4gIHNldEFwcFN0YXRlLFxuICBsaWJyYXJ5UmV0dXJuVXJsLFxuICBsaWJyYXJ5LFxuICBmaWxlcyxcbiAgaWQsXG4gIHNlbGVjdGVkSXRlbXMsXG4gIG9uVG9nZ2xlLFxuICBvblB1Ymxpc2gsXG4gIHJlc2V0TGlicmFyeSxcbn06IHtcbiAgbGlicmFyeUl0ZW1zOiBMaWJyYXJ5SXRlbXM7XG4gIHBlbmRpbmdFbGVtZW50czogTGlicmFyeUl0ZW1bXCJlbGVtZW50c1wiXTtcbiAgb25SZW1vdmVGcm9tTGlicmFyeTogKCkgPT4gdm9pZDtcbiAgb25JbnNlcnRTaGFwZTogKGVsZW1lbnRzOiBMaWJyYXJ5SXRlbVtcImVsZW1lbnRzXCJdKSA9PiB2b2lkO1xuICBvbkFkZFRvTGlicmFyeTogKGVsZW1lbnRzOiBMaWJyYXJ5SXRlbVtcImVsZW1lbnRzXCJdKSA9PiB2b2lkO1xuICB0aGVtZTogQXBwU3RhdGVbXCJ0aGVtZVwiXTtcbiAgZmlsZXM6IEJpbmFyeUZpbGVzO1xuICBzZXRBcHBTdGF0ZTogUmVhY3QuQ29tcG9uZW50PGFueSwgQXBwU3RhdGU+W1wic2V0U3RhdGVcIl07XG4gIGxpYnJhcnlSZXR1cm5Vcmw6IEV4Y2FsaWRyYXdQcm9wc1tcImxpYnJhcnlSZXR1cm5VcmxcIl07XG4gIGxpYnJhcnk6IExpYnJhcnk7XG4gIGlkOiBzdHJpbmc7XG4gIHNlbGVjdGVkSXRlbXM6IExpYnJhcnlJdGVtW1wiaWRcIl1bXTtcbiAgb25Ub2dnbGU6IChpZDogTGlicmFyeUl0ZW1bXCJpZFwiXSkgPT4gdm9pZDtcbiAgb25QdWJsaXNoOiAoKSA9PiB2b2lkO1xuICByZXNldExpYnJhcnk6ICgpID0+IHZvaWQ7XG59KSA9PiB7XG4gIGNvbnN0IHJlbmRlclJlbW92ZUxpYkFsZXJ0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IGNvbnRlbnQgPSBzZWxlY3RlZEl0ZW1zLmxlbmd0aFxuICAgICAgPyB0KFwiYWxlcnRzLnJlbW92ZUl0ZW1zRnJvbXNMaWJyYXJ5XCIsIHsgY291bnQ6IHNlbGVjdGVkSXRlbXMubGVuZ3RoIH0pXG4gICAgICA6IHQoXCJhbGVydHMucmVzZXRMaWJyYXJ5XCIpO1xuICAgIGNvbnN0IHRpdGxlID0gc2VsZWN0ZWRJdGVtcy5sZW5ndGhcbiAgICAgID8gdChcImNvbmZpcm1EaWFsb2cucmVtb3ZlSXRlbXNGcm9tTGliXCIpXG4gICAgICA6IHQoXCJjb25maXJtRGlhbG9nLnJlc2V0TGlicmFyeVwiKTtcbiAgICByZXR1cm4gKFxuICAgICAgPENvbmZpcm1EaWFsb2dcbiAgICAgICAgb25Db25maXJtPXsoKSA9PiB7XG4gICAgICAgICAgaWYgKHNlbGVjdGVkSXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICBvblJlbW92ZUZyb21MaWJyYXJ5KCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc2V0TGlicmFyeSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzZXRTaG93UmVtb3ZlTGliQWxlcnQoZmFsc2UpO1xuICAgICAgICB9fVxuICAgICAgICBvbkNhbmNlbD17KCkgPT4ge1xuICAgICAgICAgIHNldFNob3dSZW1vdmVMaWJBbGVydChmYWxzZSk7XG4gICAgICAgIH19XG4gICAgICAgIHRpdGxlPXt0aXRsZX1cbiAgICAgID5cbiAgICAgICAgPHA+e2NvbnRlbnR9PC9wPlxuICAgICAgPC9Db25maXJtRGlhbG9nPlxuICAgICk7XG4gIH0sIFtzZWxlY3RlZEl0ZW1zLCBvblJlbW92ZUZyb21MaWJyYXJ5LCByZXNldExpYnJhcnldKTtcblxuICBjb25zdCBbc2hvd1JlbW92ZUxpYkFsZXJ0LCBzZXRTaG93UmVtb3ZlTGliQWxlcnRdID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IGlzTW9iaWxlID0gdXNlSXNNb2JpbGUoKTtcblxuICBjb25zdCByZW5kZXJMaWJyYXJ5QWN0aW9ucyA9ICgpID0+IHtcbiAgICBjb25zdCBpdGVtc1NlbGVjdGVkID0gISFzZWxlY3RlZEl0ZW1zLmxlbmd0aDtcbiAgICBjb25zdCBpdGVtcyA9IGl0ZW1zU2VsZWN0ZWRcbiAgICAgID8gbGlicmFyeUl0ZW1zLmZpbHRlcigoaXRlbSkgPT4gc2VsZWN0ZWRJdGVtcy5pbmNsdWRlcyhpdGVtLmlkKSlcbiAgICAgIDogbGlicmFyeUl0ZW1zO1xuICAgIGNvbnN0IHJlc2V0TGFiZWwgPSBpdGVtc1NlbGVjdGVkXG4gICAgICA/IHQoXCJidXR0b25zLnJlbW92ZVwiKVxuICAgICAgOiB0KFwiYnV0dG9ucy5yZXNldExpYnJhcnlcIik7XG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGlicmFyeS1hY3Rpb25zXCI+XG4gICAgICAgIHsoIWl0ZW1zU2VsZWN0ZWQgfHwgIWlzTW9iaWxlKSAmJiAoXG4gICAgICAgICAgPFRvb2xCdXR0b25cbiAgICAgICAgICAgIGtleT1cImltcG9ydFwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIHRpdGxlPXt0KFwiYnV0dG9ucy5sb2FkXCIpfVxuICAgICAgICAgICAgYXJpYS1sYWJlbD17dChcImJ1dHRvbnMubG9hZFwiKX1cbiAgICAgICAgICAgIGljb249e2xvYWR9XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgIGltcG9ydExpYnJhcnlGcm9tSlNPTihsaWJyYXJ5KVxuICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgIC8vIENsb3NlIGFuZCB0aGVuIG9wZW4gdG8gZ2V0IHRoZSBsaWJyYXJpZXMgdXBkYXRlZFxuICAgICAgICAgICAgICAgICAgc2V0QXBwU3RhdGUoeyBpc0xpYnJhcnlPcGVuOiBmYWxzZSB9KTtcbiAgICAgICAgICAgICAgICAgIHNldEFwcFN0YXRlKHsgaXNMaWJyYXJ5T3BlbjogdHJ1ZSB9KTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaChtdXRlRlNBYm9ydEVycm9yKVxuICAgICAgICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICAgIHNldEFwcFN0YXRlKHsgZXJyb3JNZXNzYWdlOiBlcnJvci5tZXNzYWdlIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImxpYnJhcnktYWN0aW9ucy0tbG9hZFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAgeyEhaXRlbXMubGVuZ3RoICYmIChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPFRvb2xCdXR0b25cbiAgICAgICAgICAgICAga2V5PVwiZXhwb3J0XCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIHRpdGxlPXt0KFwiYnV0dG9ucy5leHBvcnRcIil9XG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9e3QoXCJidXR0b25zLmV4cG9ydFwiKX1cbiAgICAgICAgICAgICAgaWNvbj17ZXhwb3J0VG9GaWxlSWNvbn1cbiAgICAgICAgICAgICAgb25DbGljaz17YXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxpYnJhcnlJdGVtcyA9IGl0ZW1zU2VsZWN0ZWRcbiAgICAgICAgICAgICAgICAgID8gaXRlbXNcbiAgICAgICAgICAgICAgICAgIDogYXdhaXQgbGlicmFyeS5sb2FkTGlicmFyeSgpO1xuICAgICAgICAgICAgICAgIHNhdmVMaWJyYXJ5QXNKU09OKGxpYnJhcnlJdGVtcylcbiAgICAgICAgICAgICAgICAgIC5jYXRjaChtdXRlRlNBYm9ydEVycm9yKVxuICAgICAgICAgICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzZXRBcHBTdGF0ZSh7IGVycm9yTWVzc2FnZTogZXJyb3IubWVzc2FnZSB9KTtcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJsaWJyYXJ5LWFjdGlvbnMtLWV4cG9ydFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtzZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImxpYnJhcnktYWN0aW9ucy1jb3VudGVyXCI+XG4gICAgICAgICAgICAgICAgICB7c2VsZWN0ZWRJdGVtcy5sZW5ndGh9XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9Ub29sQnV0dG9uPlxuICAgICAgICAgICAgPFRvb2xCdXR0b25cbiAgICAgICAgICAgICAga2V5PVwicmVzZXRcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgdGl0bGU9e3Jlc2V0TGFiZWx9XG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9e3Jlc2V0TGFiZWx9XG4gICAgICAgICAgICAgIGljb249e3RyYXNofVxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRTaG93UmVtb3ZlTGliQWxlcnQodHJ1ZSl9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cImxpYnJhcnktYWN0aW9ucy0tcmVtb3ZlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3NlbGVjdGVkSXRlbXMubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibGlicmFyeS1hY3Rpb25zLWNvdW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgIHtzZWxlY3RlZEl0ZW1zLmxlbmd0aH1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L1Rvb2xCdXR0b24+XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICAgIHtpdGVtc1NlbGVjdGVkICYmICFpc1B1Ymxpc2hlZCAmJiAoXG4gICAgICAgICAgPFRvb2x0aXAgbGFiZWw9e3QoXCJoaW50cy5wdWJsaXNoTGlicmFyeVwiKX0+XG4gICAgICAgICAgICA8VG9vbEJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD17dChcImJ1dHRvbnMucHVibGlzaExpYnJhcnlcIil9XG4gICAgICAgICAgICAgIGxhYmVsPXt0KFwiYnV0dG9ucy5wdWJsaXNoTGlicmFyeVwiKX1cbiAgICAgICAgICAgICAgaWNvbj17cHVibGlzaEljb259XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cImxpYnJhcnktYWN0aW9ucy0tcHVibGlzaFwiXG4gICAgICAgICAgICAgIG9uQ2xpY2s9e29uUHVibGlzaH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgeyFpc01vYmlsZSAmJiA8bGFiZWw+e3QoXCJidXR0b25zLnB1Ymxpc2hMaWJyYXJ5XCIpfTwvbGFiZWw+fVxuICAgICAgICAgICAgICB7c2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJsaWJyYXJ5LWFjdGlvbnMtY291bnRlclwiPlxuICAgICAgICAgICAgICAgICAge3NlbGVjdGVkSXRlbXMubGVuZ3RofVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvVG9vbEJ1dHRvbj5cbiAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9O1xuXG4gIGNvbnN0IENFTExTX1BFUl9ST1cgPSBpc01vYmlsZSA/IDQgOiA2O1xuXG4gIGNvbnN0IHJlZmVycmVyID1cbiAgICBsaWJyYXJ5UmV0dXJuVXJsIHx8IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7XG4gIGNvbnN0IGlzUHVibGlzaGVkID0gc2VsZWN0ZWRJdGVtcy5zb21lKFxuICAgIChpZCkgPT4gbGlicmFyeUl0ZW1zLmZpbmQoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IGlkKT8uc3RhdHVzID09PSBcInB1Ymxpc2hlZFwiLFxuICApO1xuXG4gIGNvbnN0IGNyZWF0ZUxpYnJhcnlJdGVtQ29tcG8gPSAocGFyYW1zOiB7XG4gICAgaXRlbTpcbiAgICAgIHwgTGlicmFyeUl0ZW1cbiAgICAgIHwgLyogcGVuZGluZyBsaWJyYXJ5IGl0ZW0gKi8ge1xuICAgICAgICAgIGlkOiBudWxsO1xuICAgICAgICAgIGVsZW1lbnRzOiByZWFkb25seSBOb25EZWxldGVkPEV4Y2FsaWRyYXdFbGVtZW50PltdO1xuICAgICAgICB9XG4gICAgICB8IG51bGw7XG4gICAgb25DbGljaz86ICgpID0+IHZvaWQ7XG4gICAga2V5OiBzdHJpbmc7XG4gIH0pID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgPFN0YWNrLkNvbCBrZXk9e3BhcmFtcy5rZXl9PlxuICAgICAgICA8TGlicmFyeVVuaXRcbiAgICAgICAgICBlbGVtZW50cz17cGFyYW1zLml0ZW0/LmVsZW1lbnRzfVxuICAgICAgICAgIGZpbGVzPXtmaWxlc31cbiAgICAgICAgICBpc1BlbmRpbmc9eyFwYXJhbXMuaXRlbT8uaWQgJiYgISFwYXJhbXMuaXRlbT8uZWxlbWVudHN9XG4gICAgICAgICAgb25DbGljaz17cGFyYW1zLm9uQ2xpY2sgfHwgKCgpID0+IHt9KX1cbiAgICAgICAgICBpZD17cGFyYW1zLml0ZW0/LmlkIHx8IG51bGx9XG4gICAgICAgICAgc2VsZWN0ZWQ9eyEhcGFyYW1zLml0ZW0/LmlkICYmIHNlbGVjdGVkSXRlbXMuaW5jbHVkZXMocGFyYW1zLml0ZW0uaWQpfVxuICAgICAgICAgIG9uVG9nZ2xlPXsoKSA9PiB7XG4gICAgICAgICAgICBpZiAocGFyYW1zLml0ZW0/LmlkKSB7XG4gICAgICAgICAgICAgIG9uVG9nZ2xlKHBhcmFtcy5pdGVtLmlkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICAgPC9TdGFjay5Db2w+XG4gICAgKTtcbiAgfTtcblxuICBjb25zdCByZW5kZXJMaWJyYXJ5U2VjdGlvbiA9IChcbiAgICBpdGVtczogKFxuICAgICAgfCBMaWJyYXJ5SXRlbVxuICAgICAgfCAvKiBwZW5kaW5nIGxpYnJhcnkgaXRlbSAqLyB7XG4gICAgICAgICAgaWQ6IG51bGw7XG4gICAgICAgICAgZWxlbWVudHM6IHJlYWRvbmx5IE5vbkRlbGV0ZWQ8RXhjYWxpZHJhd0VsZW1lbnQ+W107XG4gICAgICAgIH1cbiAgICApW10sXG4gICkgPT4ge1xuICAgIGNvbnN0IF9pdGVtcyA9IGl0ZW1zLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgaWYgKGl0ZW0uaWQpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUxpYnJhcnlJdGVtQ29tcG8oe1xuICAgICAgICAgIGl0ZW0sXG4gICAgICAgICAgb25DbGljazogKCkgPT4gb25JbnNlcnRTaGFwZShpdGVtLmVsZW1lbnRzKSxcbiAgICAgICAgICBrZXk6IGl0ZW0uaWQsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNyZWF0ZUxpYnJhcnlJdGVtQ29tcG8oe1xuICAgICAgICBrZXk6IFwiX19wZW5kaW5nX19pdGVtX19cIixcbiAgICAgICAgaXRlbSxcbiAgICAgICAgb25DbGljazogKCkgPT4gb25BZGRUb0xpYnJhcnkocGVuZGluZ0VsZW1lbnRzKSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgLy8gZW5zdXJlIHdlIHJlbmRlciBhbGwgZW1wdHkgY2VsbHMgaWYgbm8gaXRlbXMgYXJlIHByZXNlbnRcbiAgICBsZXQgcm93cyA9IGNodW5rKF9pdGVtcywgQ0VMTFNfUEVSX1JPVyk7XG4gICAgaWYgKCFyb3dzLmxlbmd0aCkge1xuICAgICAgcm93cyA9IFtbXV07XG4gICAgfVxuXG4gICAgcmV0dXJuIHJvd3MubWFwKChyb3dJdGVtcywgaW5kZXgsIHJvd3MpID0+IHtcbiAgICAgIGlmIChpbmRleCA9PT0gcm93cy5sZW5ndGggLSAxKSB7XG4gICAgICAgIC8vIHBhZCByb3cgd2l0aCBlbXB0eSBjZWxsc1xuICAgICAgICByb3dJdGVtcyA9IHJvd0l0ZW1zLmNvbmNhdChcbiAgICAgICAgICBuZXcgQXJyYXkoQ0VMTFNfUEVSX1JPVyAtIHJvd0l0ZW1zLmxlbmd0aClcbiAgICAgICAgICAgIC5maWxsKG51bGwpXG4gICAgICAgICAgICAubWFwKChfLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlTGlicmFyeUl0ZW1Db21wbyh7XG4gICAgICAgICAgICAgICAga2V5OiBgZW1wdHlfJHtpbmRleH1gLFxuICAgICAgICAgICAgICAgIGl0ZW06IG51bGwsXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8U3RhY2suUm93IGFsaWduPVwiY2VudGVyXCIgZ2FwPXsxfSBrZXk9e2luZGV4fT5cbiAgICAgICAgICB7cm93SXRlbXN9XG4gICAgICAgIDwvU3RhY2suUm93PlxuICAgICAgKTtcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBwdWJsaXNoZWRJdGVtcyA9IGxpYnJhcnlJdGVtcy5maWx0ZXIoXG4gICAgKGl0ZW0pID0+IGl0ZW0uc3RhdHVzID09PSBcInB1Ymxpc2hlZFwiLFxuICApO1xuICBjb25zdCB1bnB1Ymxpc2hlZEl0ZW1zID0gW1xuICAgIC8vIGFwcGVuZCBwZW5kaW5nIGxpYnJhcnkgaXRlbVxuICAgIC4uLihwZW5kaW5nRWxlbWVudHMubGVuZ3RoXG4gICAgICA/IFt7IGlkOiBudWxsLCBlbGVtZW50czogcGVuZGluZ0VsZW1lbnRzIH1dXG4gICAgICA6IFtdKSxcbiAgICAuLi5saWJyYXJ5SXRlbXMuZmlsdGVyKChpdGVtKSA9PiBpdGVtLnN0YXR1cyAhPT0gXCJwdWJsaXNoZWRcIiksXG4gIF07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImxpYnJhcnktbWVudS1pdGVtcy1jb250YWluZXJcIj5cbiAgICAgIHtzaG93UmVtb3ZlTGliQWxlcnQgJiYgcmVuZGVyUmVtb3ZlTGliQWxlcnQoKX1cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGF5ZXItdWlfX2xpYnJhcnktaGVhZGVyXCIga2V5PVwibGlicmFyeS1oZWFkZXJcIj5cbiAgICAgICAge3JlbmRlckxpYnJhcnlBY3Rpb25zKCl9XG4gICAgICAgIDxhXG4gICAgICAgICAgaHJlZj17YGh0dHBzOi8vbGlicmFyaWVzLmV4Y2FsaWRyYXcuY29tP3RhcmdldD0ke1xuICAgICAgICAgICAgd2luZG93Lm5hbWUgfHwgXCJfYmxhbmtcIlxuICAgICAgICAgIH0mcmVmZXJyZXI9JHtyZWZlcnJlcn0mdXNlSGFzaD10cnVlJnRva2VuPSR7aWR9JnRoZW1lPSR7dGhlbWV9YH1cbiAgICAgICAgICB0YXJnZXQ9XCJfZXhjYWxpZHJhd19saWJyYXJpZXNcIlxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJsYWJlbHMubGlicmFyaWVzXCIpfVxuICAgICAgICA8L2E+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxTdGFjay5Db2xcbiAgICAgICAgY2xhc3NOYW1lPVwibGlicmFyeS1tZW51LWl0ZW1zLWNvbnRhaW5lcl9faXRlbXNcIlxuICAgICAgICBhbGlnbj1cInN0YXJ0XCJcbiAgICAgICAgZ2FwPXsxfVxuICAgICAgPlxuICAgICAgICA8PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic2VwYXJhdG9yXCI+e3QoXCJsYWJlbHMucGVyc29uYWxMaWJcIil9PC9kaXY+XG4gICAgICAgICAge3JlbmRlckxpYnJhcnlTZWN0aW9uKHVucHVibGlzaGVkSXRlbXMpfVxuICAgICAgICA8Lz5cblxuICAgICAgICA8PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic2VwYXJhdG9yXCI+e3QoXCJsYWJlbHMuZXhjYWxpZHJhd0xpYlwiKX0gPC9kaXY+XG5cbiAgICAgICAgICB7cmVuZGVyTGlicmFyeVNlY3Rpb24ocHVibGlzaGVkSXRlbXMpfVxuICAgICAgICA8Lz5cbiAgICAgIDwvU3RhY2suQ29sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgTGlicmFyeU1lbnVJdGVtcztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/LibraryMenuItems.tsx\n");
1850
1850
 
1851
1851
  /***/ }),
1852
1852
 
@@ -1945,7 +1945,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
1945
1945
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1946
1946
 
1947
1947
  "use strict";
1948
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ \"../../../node_modules/react/jsx-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var open_color__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! open-color */ \"../../../node_modules/open-color/open-color.json\");\n/* harmony import */ var _Dialog__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Dialog */ \"../../components/Dialog.tsx\");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../i18n */ \"../../i18n.ts\");\n/* harmony import */ var _ToolButton__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./ToolButton */ \"../../components/ToolButton.tsx\");\n/* harmony import */ var _packages_utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../packages/utils */ \"../utils.ts\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../constants */ \"../../constants.ts\");\n/* harmony import */ var _PublishLibrary_scss__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./PublishLibrary.scss */ \"../../components/PublishLibrary.scss\");\n/* harmony import */ var _PublishLibrary_scss__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_PublishLibrary_scss__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../element */ \"../../element/index.ts\");\n/* harmony import */ var _element_mutateElement__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../element/mutateElement */ \"../../element/mutateElement.ts\");\n/* harmony import */ var _element_bounds__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../element/bounds */ \"../../element/bounds.ts\");\n/* harmony import */ var _SingleLibraryItem__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./SingleLibraryItem */ \"../../components/SingleLibraryItem.tsx\");\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nconst LOCAL_STORAGE_KEY_PUBLISH_LIBRARY = \"publish-library-data\";\r\nconst savePublishLibDataToStorage = (data) => {\r\n try {\r\n localStorage.setItem(LOCAL_STORAGE_KEY_PUBLISH_LIBRARY, JSON.stringify(data));\r\n }\r\n catch (error) {\r\n // Unable to access window.localStorage\r\n console.error(error);\r\n }\r\n};\r\nconst importPublishLibDataFromStorage = () => {\r\n try {\r\n const data = localStorage.getItem(LOCAL_STORAGE_KEY_PUBLISH_LIBRARY);\r\n if (data) {\r\n return JSON.parse(data);\r\n }\r\n }\r\n catch (error) {\r\n // Unable to access localStorage\r\n console.error(error);\r\n }\r\n return null;\r\n};\r\nconst PublishLibrary = ({ onClose, libraryItems, appState, onSuccess, onError, updateItemsInStorage, onRemove, }) => {\r\n const [libraryData, setLibraryData] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({\r\n authorName: \"\",\r\n githubHandle: \"\",\r\n name: \"\",\r\n description: \"\",\r\n twitterHandle: \"\",\r\n website: \"\",\r\n });\r\n const [isSubmitting, setIsSubmitting] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\r\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {\r\n const data = importPublishLibDataFromStorage();\r\n if (data) {\r\n setLibraryData(data);\r\n }\r\n }, []);\r\n const [clonedLibItems, setClonedLibItems] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(libraryItems.slice());\r\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {\r\n setClonedLibItems(libraryItems.slice());\r\n }, [libraryItems]);\r\n const onInputChange = (event) => {\r\n setLibraryData(Object.assign(Object.assign({}, libraryData), { [event.target.name]: event.target.value }));\r\n };\r\n const onSubmit = (event) => __awaiter(void 0, void 0, void 0, function* () {\r\n event.preventDefault();\r\n setIsSubmitting(true);\r\n const erroredLibItems = [];\r\n let isError = false;\r\n clonedLibItems.forEach((libItem) => {\r\n let error = \"\";\r\n if (!libItem.name) {\r\n error = (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"publishDialog.errors.required\");\r\n isError = true;\r\n }\r\n erroredLibItems.push(Object.assign(Object.assign({}, libItem), { error }));\r\n });\r\n if (isError) {\r\n setClonedLibItems(erroredLibItems);\r\n setIsSubmitting(false);\r\n return;\r\n }\r\n const elements = [];\r\n const prevBoundingBox = { minX: 0, minY: 0, maxX: 0, maxY: 0 };\r\n clonedLibItems.forEach((libItem) => {\r\n const boundingBox = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_11__.getCommonBoundingBox)(libItem.elements);\r\n const width = boundingBox.maxX - boundingBox.minX + 30;\r\n const height = boundingBox.maxY - boundingBox.minY + 30;\r\n const offset = {\r\n x: prevBoundingBox.maxX - boundingBox.minX,\r\n y: prevBoundingBox.maxY - boundingBox.minY,\r\n };\r\n const itemsWithUpdatedCoords = libItem.elements.map((element) => {\r\n element = (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_10__.mutateElement)(element, {\r\n x: element.x + offset.x + 15,\r\n y: element.y + offset.y + 15,\r\n });\r\n return element;\r\n });\r\n const items = [\r\n ...itemsWithUpdatedCoords,\r\n (0,_element__WEBPACK_IMPORTED_MODULE_9__.newElement)({\r\n type: \"rectangle\",\r\n width,\r\n height,\r\n x: prevBoundingBox.maxX,\r\n y: prevBoundingBox.maxY,\r\n strokeColor: \"#ced4da\",\r\n backgroundColor: \"transparent\",\r\n strokeStyle: \"solid\",\r\n opacity: 100,\r\n roughness: 0,\r\n strokeSharpness: \"sharp\",\r\n fillStyle: \"solid\",\r\n strokeWidth: 1,\r\n }),\r\n ];\r\n elements.push(...items);\r\n prevBoundingBox.maxX = prevBoundingBox.maxX + width + 30;\r\n });\r\n const png = yield (0,_packages_utils__WEBPACK_IMPORTED_MODULE_6__.exportToBlob)({\r\n elements,\r\n mimeType: \"image/png\",\r\n appState: Object.assign(Object.assign({}, appState), { viewBackgroundColor: open_color__WEBPACK_IMPORTED_MODULE_2__.white, exportBackground: true }),\r\n files: null,\r\n });\r\n const libContent = {\r\n type: _constants__WEBPACK_IMPORTED_MODULE_7__.EXPORT_DATA_TYPES.excalidrawLibrary,\r\n version: 2,\r\n source: _constants__WEBPACK_IMPORTED_MODULE_7__.EXPORT_SOURCE,\r\n libraryItems: clonedLibItems,\r\n };\r\n const content = JSON.stringify(libContent, null, 2);\r\n const lib = new Blob([content], { type: \"application/json\" });\r\n const formData = new FormData();\r\n formData.append(\"excalidrawLib\", lib);\r\n formData.append(\"excalidrawPng\", png);\r\n formData.append(\"title\", libraryData.name);\r\n formData.append(\"authorName\", libraryData.authorName);\r\n formData.append(\"githubHandle\", libraryData.githubHandle);\r\n formData.append(\"name\", libraryData.name);\r\n formData.append(\"description\", libraryData.description);\r\n formData.append(\"twitterHandle\", libraryData.twitterHandle);\r\n formData.append(\"website\", libraryData.website);\r\n fetch(`${process.env.REACT_APP_LIBRARY_BACKEND}/submit`, {\r\n method: \"post\",\r\n body: formData,\r\n })\r\n .then((response) => {\r\n if (response.ok) {\r\n return response.json().then(({ url }) => {\r\n // flush data from local storage\r\n localStorage.removeItem(LOCAL_STORAGE_KEY_PUBLISH_LIBRARY);\r\n onSuccess({\r\n url,\r\n authorName: libraryData.authorName,\r\n items: clonedLibItems,\r\n });\r\n });\r\n }\r\n return response\r\n .json()\r\n .catch(() => {\r\n throw new Error(response.statusText || \"something went wrong\");\r\n })\r\n .then((error) => {\r\n throw new Error(error.message || response.statusText || \"something went wrong\");\r\n });\r\n }, (err) => {\r\n console.error(err);\r\n onError(err);\r\n setIsSubmitting(false);\r\n })\r\n .catch((err) => {\r\n console.error(err);\r\n onError(err);\r\n setIsSubmitting(false);\r\n });\r\n });\r\n const renderLibraryItems = () => {\r\n const items = [];\r\n clonedLibItems.forEach((libItem, index) => {\r\n items.push((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: \"single-library-item-wrapper\" }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_SingleLibraryItem__WEBPACK_IMPORTED_MODULE_12__[\"default\"], { libItem: libItem, appState: appState, index: index, onChange: (val, index) => {\r\n const items = clonedLibItems.slice();\r\n items[index].name = val;\r\n setClonedLibItems(items);\r\n }, onRemove: onRemove }, void 0) }), index));\r\n });\r\n return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: \"selected-library-items\" }, { children: items }), void 0);\r\n };\r\n const onDialogClose = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(() => {\r\n updateItemsInStorage(clonedLibItems);\r\n savePublishLibDataToStorage(libraryData);\r\n onClose();\r\n }, [clonedLibItems, onClose, updateItemsInStorage, libraryData]);\r\n const shouldRenderForm = !!libraryItems.length;\r\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Dialog__WEBPACK_IMPORTED_MODULE_3__.Dialog, Object.assign({ onCloseRequest: onDialogClose, title: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"publishDialog.title\"), className: \"publish-library\" }, { children: shouldRenderForm ? ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"form\", Object.assign({ onSubmit: onSubmit }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: \"publish-library-note\" }, { children: [(0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"publishDialog.noteDescription.pre\"), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"a\", Object.assign({ href: \"https://libraries.excalidraw.com\", target: \"_blank\", rel: \"noopener noreferrer\" }, { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"publishDialog.noteDescription.link\") }), void 0), \" \", (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"publishDialog.noteDescription.post\")] }), void 0), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"span\", Object.assign({ className: \"publish-library-note\" }, { children: [(0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"publishDialog.noteGuidelines.pre\"), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"a\", Object.assign({ href: \"https://github.com/excalidraw/excalidraw-libraries#guidelines\", target: \"_blank\", rel: \"noopener noreferrer\" }, { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"publishDialog.noteGuidelines.link\") }), void 0), (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"publishDialog.noteGuidelines.post\")] }), void 0), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: \"publish-library-note\" }, { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"publishDialog.noteItems\") }), void 0), renderLibraryItems(), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: \"publish-library__fields\" }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"label\", { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"span\", { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"publishDialog.libraryName\") }, void 0), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"span\", Object.assign({ \"aria-hidden\": \"true\", className: \"required\" }, { children: \"*\" }), void 0)] }, void 0), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"input\", { type: \"text\", name: \"name\", required: true, value: libraryData.name, onChange: onInputChange, placeholder: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"publishDialog.placeholder.libraryName\") }, void 0)] }, void 0), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"label\", Object.assign({ style: { alignItems: \"flex-start\" } }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"span\", { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"publishDialog.libraryDesc\") }, void 0), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"span\", Object.assign({ \"aria-hidden\": \"true\", className: \"required\" }, { children: \"*\" }), void 0)] }, void 0), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"textarea\", { name: \"description\", rows: 4, required: true, value: libraryData.description, onChange: onInputChange, placeholder: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"publishDialog.placeholder.libraryDesc\") }, void 0)] }), void 0), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"label\", { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"span\", { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"publishDialog.authorName\") }, void 0), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"span\", Object.assign({ \"aria-hidden\": \"true\", className: \"required\" }, { children: \"*\" }), void 0)] }, void 0), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"input\", { type: \"text\", name: \"authorName\", required: true, value: libraryData.authorName, onChange: onInputChange, placeholder: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"publishDialog.placeholder.authorName\") }, void 0)] }, void 0), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"label\", { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"span\", { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"publishDialog.githubUsername\") }, void 0), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"input\", { type: \"text\", name: \"githubHandle\", value: libraryData.githubHandle, onChange: onInputChange, placeholder: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"publishDialog.placeholder.githubHandle\") }, void 0)] }, void 0), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"label\", { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"span\", { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"publishDialog.twitterUsername\") }, void 0), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"input\", { type: \"text\", name: \"twitterHandle\", value: libraryData.twitterHandle, onChange: onInputChange, placeholder: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"publishDialog.placeholder.twitterHandle\") }, void 0)] }, void 0), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"label\", { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"span\", { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"publishDialog.website\") }, void 0), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"input\", { type: \"text\", name: \"website\", pattern: \"https?://.+\", title: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"publishDialog.errors.website\"), value: libraryData.website, onChange: onInputChange, placeholder: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"publishDialog.placeholder.website\") }, void 0)] }, void 0), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"span\", Object.assign({ className: \"publish-library-note\" }, { children: [(0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"publishDialog.noteLicense.pre\"), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"a\", Object.assign({ href: \"https://github.com/excalidraw/excalidraw-libraries/blob/main/LICENSE\", target: \"_blank\", rel: \"noopener noreferrer\" }, { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"publishDialog.noteLicense.link\") }), void 0), (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"publishDialog.noteLicense.post\")] }), void 0)] }), void 0), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: \"publish-library__buttons\" }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ToolButton__WEBPACK_IMPORTED_MODULE_5__.ToolButton, { type: \"button\", title: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"buttons.cancel\"), \"aria-label\": (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"buttons.cancel\"), label: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"buttons.cancel\"), onClick: onDialogClose, \"data-testid\": \"cancel-clear-canvas-button\", className: \"publish-library__buttons--cancel\" }, void 0), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ToolButton__WEBPACK_IMPORTED_MODULE_5__.ToolButton, { type: \"submit\", title: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"buttons.submit\"), \"aria-label\": (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"buttons.submit\"), label: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"buttons.submit\"), className: \"publish-library__buttons--confirm\", isLoading: isSubmitting }, void 0)] }), void 0)] }), void 0)) : ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"p\", Object.assign({ style: { padding: \"1em\", textAlign: \"center\", fontWeight: 500 } }, { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"publishDialog.atleastOneLibItem\") }), void 0)) }), void 0));\r\n};\r\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (PublishLibrary);\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Z0IsQ0FBQyxnQkFDZCx3Q0FBQyxDQUFDLGdCQUFnQixDQUFDLEVBQy9CLEtBQUssRUFBRSx3Q0FBQyxDQUFDLGdCQUFnQixDQUFDLEVBQzFCLFNBQVMsRUFBQyxtQ0FBbUMsRUFDN0MsU0FBUyxFQUFFLFlBQVksV0FDdkIsYUFDRSxhQUNELENBQ1IsQ0FBQyxDQUFDLENBQUMsQ0FDRiw0RUFBRyxLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxnQkFDL0Qsd0NBQUMsQ0FBQyxpQ0FBaUMsQ0FBQyxZQUNuQyxDQUNMLFlBQ00sQ0FDVixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsaUVBQWUsY0FBYyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvUHVibGlzaExpYnJhcnkudHN4P2I0MWEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVhY3ROb2RlLCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IG9jIGZyb20gXCJvcGVuLWNvbG9yXCI7XG5cbmltcG9ydCB7IERpYWxvZyB9IGZyb20gXCIuL0RpYWxvZ1wiO1xuaW1wb3J0IHsgdCB9IGZyb20gXCIuLi9pMThuXCI7XG5cbmltcG9ydCB7IFRvb2xCdXR0b24gfSBmcm9tIFwiLi9Ub29sQnV0dG9uXCI7XG5cbmltcG9ydCB7IEFwcFN0YXRlLCBMaWJyYXJ5SXRlbXMsIExpYnJhcnlJdGVtIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgeyBleHBvcnRUb0Jsb2IgfSBmcm9tIFwiLi4vcGFja2FnZXMvdXRpbHNcIjtcbmltcG9ydCB7IEVYUE9SVF9EQVRBX1RZUEVTLCBFWFBPUlRfU09VUkNFIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgRXhwb3J0ZWRMaWJyYXJ5RGF0YSB9IGZyb20gXCIuLi9kYXRhL3R5cGVzXCI7XG5cbmltcG9ydCBcIi4vUHVibGlzaExpYnJhcnkuc2Nzc1wiO1xuaW1wb3J0IHsgRXhjYWxpZHJhd0VsZW1lbnQgfSBmcm9tIFwiLi4vZWxlbWVudC90eXBlc1wiO1xuaW1wb3J0IHsgbmV3RWxlbWVudCB9IGZyb20gXCIuLi9lbGVtZW50XCI7XG5pbXBvcnQgeyBtdXRhdGVFbGVtZW50IH0gZnJvbSBcIi4uL2VsZW1lbnQvbXV0YXRlRWxlbWVudFwiO1xuaW1wb3J0IHsgZ2V0Q29tbW9uQm91bmRpbmdCb3ggfSBmcm9tIFwiLi4vZWxlbWVudC9ib3VuZHNcIjtcbmltcG9ydCBTaW5nbGVMaWJyYXJ5SXRlbSBmcm9tIFwiLi9TaW5nbGVMaWJyYXJ5SXRlbVwiO1xuXG5pbnRlcmZhY2UgUHVibGlzaExpYnJhcnlEYXRhUGFyYW1zIHtcbiAgYXV0aG9yTmFtZTogc3RyaW5nO1xuICBnaXRodWJIYW5kbGU6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICB0d2l0dGVySGFuZGxlOiBzdHJpbmc7XG4gIHdlYnNpdGU6IHN0cmluZztcbn1cblxuY29uc3QgTE9DQUxfU1RPUkFHRV9LRVlfUFVCTElTSF9MSUJSQVJZID0gXCJwdWJsaXNoLWxpYnJhcnktZGF0YVwiO1xuXG5jb25zdCBzYXZlUHVibGlzaExpYkRhdGFUb1N0b3JhZ2UgPSAoZGF0YTogUHVibGlzaExpYnJhcnlEYXRhUGFyYW1zKSA9PiB7XG4gIHRyeSB7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXG4gICAgICBMT0NBTF9TVE9SQUdFX0tFWV9QVUJMSVNIX0xJQlJBUlksXG4gICAgICBKU09OLnN0cmluZ2lmeShkYXRhKSxcbiAgICApO1xuICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgLy8gVW5hYmxlIHRvIGFjY2VzcyB3aW5kb3cubG9jYWxTdG9yYWdlXG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gIH1cbn07XG5cbmNvbnN0IGltcG9ydFB1Ymxpc2hMaWJEYXRhRnJvbVN0b3JhZ2UgPSAoKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKExPQ0FMX1NUT1JBR0VfS0VZX1BVQkxJU0hfTElCUkFSWSk7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgIC8vIFVuYWJsZSB0byBhY2Nlc3MgbG9jYWxTdG9yYWdlXG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn07XG5cbmNvbnN0IFB1Ymxpc2hMaWJyYXJ5ID0gKHtcbiAgb25DbG9zZSxcbiAgbGlicmFyeUl0ZW1zLFxuICBhcHBTdGF0ZSxcbiAgb25TdWNjZXNzLFxuICBvbkVycm9yLFxuICB1cGRhdGVJdGVtc0luU3RvcmFnZSxcbiAgb25SZW1vdmUsXG59OiB7XG4gIG9uQ2xvc2U6ICgpID0+IHZvaWQ7XG4gIGxpYnJhcnlJdGVtczogTGlicmFyeUl0ZW1zO1xuICBhcHBTdGF0ZTogQXBwU3RhdGU7XG4gIG9uU3VjY2VzczogKGRhdGE6IHtcbiAgICB1cmw6IHN0cmluZztcbiAgICBhdXRob3JOYW1lOiBzdHJpbmc7XG4gICAgaXRlbXM6IExpYnJhcnlJdGVtcztcbiAgfSkgPT4gdm9pZDtcblxuICBvbkVycm9yOiAoZXJyb3I6IEVycm9yKSA9PiB2b2lkO1xuICB1cGRhdGVJdGVtc0luU3RvcmFnZTogKGl0ZW1zOiBMaWJyYXJ5SXRlbXMpID0+IHZvaWQ7XG4gIG9uUmVtb3ZlOiAoaWQ6IHN0cmluZykgPT4gdm9pZDtcbn0pID0+IHtcbiAgY29uc3QgW2xpYnJhcnlEYXRhLCBzZXRMaWJyYXJ5RGF0YV0gPSB1c2VTdGF0ZTxQdWJsaXNoTGlicmFyeURhdGFQYXJhbXM+KHtcbiAgICBhdXRob3JOYW1lOiBcIlwiLFxuICAgIGdpdGh1YkhhbmRsZTogXCJcIixcbiAgICBuYW1lOiBcIlwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIlwiLFxuICAgIHR3aXR0ZXJIYW5kbGU6IFwiXCIsXG4gICAgd2Vic2l0ZTogXCJcIixcbiAgfSk7XG5cbiAgY29uc3QgW2lzU3VibWl0dGluZywgc2V0SXNTdWJtaXR0aW5nXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGRhdGEgPSBpbXBvcnRQdWJsaXNoTGliRGF0YUZyb21TdG9yYWdlKCk7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIHNldExpYnJhcnlEYXRhKGRhdGEpO1xuICAgIH1cbiAgfSwgW10pO1xuXG4gIGNvbnN0IFtjbG9uZWRMaWJJdGVtcywgc2V0Q2xvbmVkTGliSXRlbXNdID0gdXNlU3RhdGU8TGlicmFyeUl0ZW1zPihcbiAgICBsaWJyYXJ5SXRlbXMuc2xpY2UoKSxcbiAgKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldENsb25lZExpYkl0ZW1zKGxpYnJhcnlJdGVtcy5zbGljZSgpKTtcbiAgfSwgW2xpYnJhcnlJdGVtc10pO1xuXG4gIGNvbnN0IG9uSW5wdXRDaGFuZ2UgPSAoZXZlbnQ6IGFueSkgPT4ge1xuICAgIHNldExpYnJhcnlEYXRhKHtcbiAgICAgIC4uLmxpYnJhcnlEYXRhLFxuICAgICAgW2V2ZW50LnRhcmdldC5uYW1lXTogZXZlbnQudGFyZ2V0LnZhbHVlLFxuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IG9uU3VibWl0ID0gYXN5bmMgKGV2ZW50OiBSZWFjdC5Gb3JtRXZlbnQ8SFRNTEZvcm1FbGVtZW50PikgPT4ge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgc2V0SXNTdWJtaXR0aW5nKHRydWUpO1xuICAgIGNvbnN0IGVycm9yZWRMaWJJdGVtczogTGlicmFyeUl0ZW1bXSA9IFtdO1xuICAgIGxldCBpc0Vycm9yID0gZmFsc2U7XG4gICAgY2xvbmVkTGliSXRlbXMuZm9yRWFjaCgobGliSXRlbSkgPT4ge1xuICAgICAgbGV0IGVycm9yID0gXCJcIjtcbiAgICAgIGlmICghbGliSXRlbS5uYW1lKSB7XG4gICAgICAgIGVycm9yID0gdChcInB1Ymxpc2hEaWFsb2cuZXJyb3JzLnJlcXVpcmVkXCIpO1xuICAgICAgICBpc0Vycm9yID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGVycm9yZWRMaWJJdGVtcy5wdXNoKHsgLi4ubGliSXRlbSwgZXJyb3IgfSk7XG4gICAgfSk7XG5cbiAgICBpZiAoaXNFcnJvcikge1xuICAgICAgc2V0Q2xvbmVkTGliSXRlbXMoZXJyb3JlZExpYkl0ZW1zKTtcbiAgICAgIHNldElzU3VibWl0dGluZyhmYWxzZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGVsZW1lbnRzOiBFeGNhbGlkcmF3RWxlbWVudFtdID0gW107XG4gICAgY29uc3QgcHJldkJvdW5kaW5nQm94ID0geyBtaW5YOiAwLCBtaW5ZOiAwLCBtYXhYOiAwLCBtYXhZOiAwIH07XG4gICAgY2xvbmVkTGliSXRlbXMuZm9yRWFjaCgobGliSXRlbSkgPT4ge1xuICAgICAgY29uc3QgYm91bmRpbmdCb3ggPSBnZXRDb21tb25Cb3VuZGluZ0JveChsaWJJdGVtLmVsZW1lbnRzKTtcbiAgICAgIGNvbnN0IHdpZHRoID0gYm91bmRpbmdCb3gubWF4WCAtIGJvdW5kaW5nQm94Lm1pblggKyAzMDtcbiAgICAgIGNvbnN0IGhlaWdodCA9IGJvdW5kaW5nQm94Lm1heFkgLSBib3VuZGluZ0JveC5taW5ZICsgMzA7XG4gICAgICBjb25zdCBvZmZzZXQgPSB7XG4gICAgICAgIHg6IHByZXZCb3VuZGluZ0JveC5tYXhYIC0gYm91bmRpbmdCb3gubWluWCxcbiAgICAgICAgeTogcHJldkJvdW5kaW5nQm94Lm1heFkgLSBib3VuZGluZ0JveC5taW5ZLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgaXRlbXNXaXRoVXBkYXRlZENvb3JkcyA9IGxpYkl0ZW0uZWxlbWVudHMubWFwKChlbGVtZW50KSA9PiB7XG4gICAgICAgIGVsZW1lbnQgPSBtdXRhdGVFbGVtZW50KGVsZW1lbnQsIHtcbiAgICAgICAgICB4OiBlbGVtZW50LnggKyBvZmZzZXQueCArIDE1LFxuICAgICAgICAgIHk6IGVsZW1lbnQueSArIG9mZnNldC55ICsgMTUsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZWxlbWVudDtcbiAgICAgIH0pO1xuICAgICAgY29uc3QgaXRlbXMgPSBbXG4gICAgICAgIC4uLml0ZW1zV2l0aFVwZGF0ZWRDb29yZHMsXG4gICAgICAgIG5ld0VsZW1lbnQoe1xuICAgICAgICAgIHR5cGU6IFwicmVjdGFuZ2xlXCIsXG4gICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgaGVpZ2h0LFxuICAgICAgICAgIHg6IHByZXZCb3VuZGluZ0JveC5tYXhYLFxuICAgICAgICAgIHk6IHByZXZCb3VuZGluZ0JveC5tYXhZLFxuICAgICAgICAgIHN0cm9rZUNvbG9yOiBcIiNjZWQ0ZGFcIixcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwidHJhbnNwYXJlbnRcIixcbiAgICAgICAgICBzdHJva2VTdHlsZTogXCJzb2xpZFwiLFxuICAgICAgICAgIG9wYWNpdHk6IDEwMCxcbiAgICAgICAgICByb3VnaG5lc3M6IDAsXG4gICAgICAgICAgc3Ryb2tlU2hhcnBuZXNzOiBcInNoYXJwXCIsXG4gICAgICAgICAgZmlsbFN0eWxlOiBcInNvbGlkXCIsXG4gICAgICAgICAgc3Ryb2tlV2lkdGg6IDEsXG4gICAgICAgIH0pLFxuICAgICAgXTtcbiAgICAgIGVsZW1lbnRzLnB1c2goLi4uaXRlbXMpO1xuICAgICAgcHJldkJvdW5kaW5nQm94Lm1heFggPSBwcmV2Qm91bmRpbmdCb3gubWF4WCArIHdpZHRoICsgMzA7XG4gICAgfSk7XG4gICAgY29uc3QgcG5nID0gYXdhaXQgZXhwb3J0VG9CbG9iKHtcbiAgICAgIGVsZW1lbnRzLFxuICAgICAgbWltZVR5cGU6IFwiaW1hZ2UvcG5nXCIsXG4gICAgICBhcHBTdGF0ZToge1xuICAgICAgICAuLi5hcHBTdGF0ZSxcbiAgICAgICAgdmlld0JhY2tncm91bmRDb2xvcjogb2Mud2hpdGUsXG4gICAgICAgIGV4cG9ydEJhY2tncm91bmQ6IHRydWUsXG4gICAgICB9LFxuICAgICAgZmlsZXM6IG51bGwsXG4gICAgfSk7XG5cbiAgICBjb25zdCBsaWJDb250ZW50OiBFeHBvcnRlZExpYnJhcnlEYXRhID0ge1xuICAgICAgdHlwZTogRVhQT1JUX0RBVEFfVFlQRVMuZXhjYWxpZHJhd0xpYnJhcnksXG4gICAgICB2ZXJzaW9uOiAyLFxuICAgICAgc291cmNlOiBFWFBPUlRfU09VUkNFLFxuICAgICAgbGlicmFyeUl0ZW1zOiBjbG9uZWRMaWJJdGVtcyxcbiAgICB9O1xuICAgIGNvbnN0IGNvbnRlbnQgPSBKU09OLnN0cmluZ2lmeShsaWJDb250ZW50LCBudWxsLCAyKTtcbiAgICBjb25zdCBsaWIgPSBuZXcgQmxvYihbY29udGVudF0sIHsgdHlwZTogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSk7XG5cbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgIGZvcm1EYXRhLmFwcGVuZChcImV4Y2FsaWRyYXdMaWJcIiwgbGliKTtcbiAgICBmb3JtRGF0YS5hcHBlbmQoXCJleGNhbGlkcmF3UG5nXCIsIHBuZyEpO1xuICAgIGZvcm1EYXRhLmFwcGVuZChcInRpdGxlXCIsIGxpYnJhcnlEYXRhLm5hbWUpO1xuICAgIGZvcm1EYXRhLmFwcGVuZChcImF1dGhvck5hbWVcIiwgbGlicmFyeURhdGEuYXV0aG9yTmFtZSk7XG4gICAgZm9ybURhdGEuYXBwZW5kKFwiZ2l0aHViSGFuZGxlXCIsIGxpYnJhcnlEYXRhLmdpdGh1YkhhbmRsZSk7XG4gICAgZm9ybURhdGEuYXBwZW5kKFwibmFtZVwiLCBsaWJyYXJ5RGF0YS5uYW1lKTtcbiAgICBmb3JtRGF0YS5hcHBlbmQoXCJkZXNjcmlwdGlvblwiLCBsaWJyYXJ5RGF0YS5kZXNjcmlwdGlvbik7XG4gICAgZm9ybURhdGEuYXBwZW5kKFwidHdpdHRlckhhbmRsZVwiLCBsaWJyYXJ5RGF0YS50d2l0dGVySGFuZGxlKTtcbiAgICBmb3JtRGF0YS5hcHBlbmQoXCJ3ZWJzaXRlXCIsIGxpYnJhcnlEYXRhLndlYnNpdGUpO1xuXG4gICAgZmV0Y2goYCR7cHJvY2Vzcy5lbnYuUkVBQ1RfQVBQX0xJQlJBUllfQkFDS0VORH0vc3VibWl0YCwge1xuICAgICAgbWV0aG9kOiBcInBvc3RcIixcbiAgICAgIGJvZHk6IGZvcm1EYXRhLFxuICAgIH0pXG4gICAgICAudGhlbihcbiAgICAgICAgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgaWYgKHJlc3BvbnNlLm9rKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuanNvbigpLnRoZW4oKHsgdXJsIH0pID0+IHtcbiAgICAgICAgICAgICAgLy8gZmx1c2ggZGF0YSBmcm9tIGxvY2FsIHN0b3JhZ2VcbiAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oTE9DQUxfU1RPUkFHRV9LRVlfUFVCTElTSF9MSUJSQVJZKTtcbiAgICAgICAgICAgICAgb25TdWNjZXNzKHtcbiAgICAgICAgICAgICAgICB1cmwsXG4gICAgICAgICAgICAgICAgYXV0aG9yTmFtZTogbGlicmFyeURhdGEuYXV0aG9yTmFtZSxcbiAgICAgICAgICAgICAgICBpdGVtczogY2xvbmVkTGliSXRlbXMsXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiByZXNwb25zZVxuICAgICAgICAgICAgLmpzb24oKVxuICAgICAgICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHJlc3BvbnNlLnN0YXR1c1RleHQgfHwgXCJzb21ldGhpbmcgd2VudCB3cm9uZ1wiKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAudGhlbigoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgIGVycm9yLm1lc3NhZ2UgfHwgcmVzcG9uc2Uuc3RhdHVzVGV4dCB8fCBcInNvbWV0aGluZyB3ZW50IHdyb25nXCIsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgKGVycikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgICBvbkVycm9yKGVycik7XG4gICAgICAgICAgc2V0SXNTdWJtaXR0aW5nKGZhbHNlKTtcbiAgICAgICAgfSxcbiAgICAgIClcbiAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgb25FcnJvcihlcnIpO1xuICAgICAgICBzZXRJc1N1Ym1pdHRpbmcoZmFsc2UpO1xuICAgICAgfSk7XG4gIH07XG5cbiAgY29uc3QgcmVuZGVyTGlicmFyeUl0ZW1zID0gKCkgPT4ge1xuICAgIGNvbnN0IGl0ZW1zOiBSZWFjdE5vZGVbXSA9IFtdO1xuICAgIGNsb25lZExpYkl0ZW1zLmZvckVhY2goKGxpYkl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICBpdGVtcy5wdXNoKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNpbmdsZS1saWJyYXJ5LWl0ZW0td3JhcHBlclwiIGtleT17aW5kZXh9PlxuICAgICAgICAgIDxTaW5nbGVMaWJyYXJ5SXRlbVxuICAgICAgICAgICAgbGliSXRlbT17bGliSXRlbX1cbiAgICAgICAgICAgIGFwcFN0YXRlPXthcHBTdGF0ZX1cbiAgICAgICAgICAgIGluZGV4PXtpbmRleH1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXsodmFsLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBpdGVtcyA9IGNsb25lZExpYkl0ZW1zLnNsaWNlKCk7XG4gICAgICAgICAgICAgIGl0ZW1zW2luZGV4XS5uYW1lID0gdmFsO1xuICAgICAgICAgICAgICBzZXRDbG9uZWRMaWJJdGVtcyhpdGVtcyk7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgb25SZW1vdmU9e29uUmVtb3ZlfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PixcbiAgICAgICk7XG4gICAgfSk7XG4gICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPVwic2VsZWN0ZWQtbGlicmFyeS1pdGVtc1wiPntpdGVtc308L2Rpdj47XG4gIH07XG5cbiAgY29uc3Qgb25EaWFsb2dDbG9zZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICB1cGRhdGVJdGVtc0luU3RvcmFnZShjbG9uZWRMaWJJdGVtcyk7XG4gICAgc2F2ZVB1Ymxpc2hMaWJEYXRhVG9TdG9yYWdlKGxpYnJhcnlEYXRhKTtcbiAgICBvbkNsb3NlKCk7XG4gIH0sIFtjbG9uZWRMaWJJdGVtcywgb25DbG9zZSwgdXBkYXRlSXRlbXNJblN0b3JhZ2UsIGxpYnJhcnlEYXRhXSk7XG5cbiAgY29uc3Qgc2hvdWxkUmVuZGVyRm9ybSA9ICEhbGlicmFyeUl0ZW1zLmxlbmd0aDtcbiAgcmV0dXJuIChcbiAgICA8RGlhbG9nXG4gICAgICBvbkNsb3NlUmVxdWVzdD17b25EaWFsb2dDbG9zZX1cbiAgICAgIHRpdGxlPXt0KFwicHVibGlzaERpYWxvZy50aXRsZVwiKX1cbiAgICAgIGNsYXNzTmFtZT1cInB1Ymxpc2gtbGlicmFyeVwiXG4gICAgPlxuICAgICAge3Nob3VsZFJlbmRlckZvcm0gPyAoXG4gICAgICAgIDxmb3JtIG9uU3VibWl0PXtvblN1Ym1pdH0+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwdWJsaXNoLWxpYnJhcnktbm90ZVwiPlxuICAgICAgICAgICAge3QoXCJwdWJsaXNoRGlhbG9nLm5vdGVEZXNjcmlwdGlvbi5wcmVcIil9XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICBocmVmPVwiaHR0cHM6Ly9saWJyYXJpZXMuZXhjYWxpZHJhdy5jb21cIlxuICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJwdWJsaXNoRGlhbG9nLm5vdGVEZXNjcmlwdGlvbi5saW5rXCIpfVxuICAgICAgICAgICAgPC9hPntcIiBcIn1cbiAgICAgICAgICAgIHt0KFwicHVibGlzaERpYWxvZy5ub3RlRGVzY3JpcHRpb24ucG9zdFwiKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwdWJsaXNoLWxpYnJhcnktbm90ZVwiPlxuICAgICAgICAgICAge3QoXCJwdWJsaXNoRGlhbG9nLm5vdGVHdWlkZWxpbmVzLnByZVwiKX1cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgIGhyZWY9XCJodHRwczovL2dpdGh1Yi5jb20vZXhjYWxpZHJhdy9leGNhbGlkcmF3LWxpYnJhcmllcyNndWlkZWxpbmVzXCJcbiAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwicHVibGlzaERpYWxvZy5ub3RlR3VpZGVsaW5lcy5saW5rXCIpfVxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAge3QoXCJwdWJsaXNoRGlhbG9nLm5vdGVHdWlkZWxpbmVzLnBvc3RcIil9XG4gICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwdWJsaXNoLWxpYnJhcnktbm90ZVwiPlxuICAgICAgICAgICAge3QoXCJwdWJsaXNoRGlhbG9nLm5vdGVJdGVtc1wiKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB7cmVuZGVyTGlicmFyeUl0ZW1zKCl9XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwdWJsaXNoLWxpYnJhcnlfX2ZpZWxkc1wiPlxuICAgICAgICAgICAgPGxhYmVsPlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxzcGFuPnt0KFwicHVibGlzaERpYWxvZy5saWJyYXJ5TmFtZVwiKX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCIgY2xhc3NOYW1lPVwicmVxdWlyZWRcIj5cbiAgICAgICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgbmFtZT1cIm5hbWVcIlxuICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgdmFsdWU9e2xpYnJhcnlEYXRhLm5hbWV9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uSW5wdXRDaGFuZ2V9XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3QoXCJwdWJsaXNoRGlhbG9nLnBsYWNlaG9sZGVyLmxpYnJhcnlOYW1lXCIpfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDxsYWJlbCBzdHlsZT17eyBhbGlnbkl0ZW1zOiBcImZsZXgtc3RhcnRcIiB9fT5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57dChcInB1Ymxpc2hEaWFsb2cubGlicmFyeURlc2NcIil9PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzTmFtZT1cInJlcXVpcmVkXCI+XG4gICAgICAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgICAgICAgbmFtZT1cImRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICByb3dzPXs0fVxuICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgdmFsdWU9e2xpYnJhcnlEYXRhLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtvbklucHV0Q2hhbmdlfVxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXt0KFwicHVibGlzaERpYWxvZy5wbGFjZWhvbGRlci5saWJyYXJ5RGVzY1wiKX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8bGFiZWw+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3QoXCJwdWJsaXNoRGlhbG9nLmF1dGhvck5hbWVcIil9PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzTmFtZT1cInJlcXVpcmVkXCI+XG4gICAgICAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIG5hbWU9XCJhdXRob3JOYW1lXCJcbiAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgIHZhbHVlPXtsaWJyYXJ5RGF0YS5hdXRob3JOYW1lfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtvbklucHV0Q2hhbmdlfVxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXt0KFwicHVibGlzaERpYWxvZy5wbGFjZWhvbGRlci5hdXRob3JOYW1lXCIpfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDxsYWJlbD5cbiAgICAgICAgICAgICAgPHNwYW4+e3QoXCJwdWJsaXNoRGlhbG9nLmdpdGh1YlVzZXJuYW1lXCIpfTwvc3Bhbj5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIG5hbWU9XCJnaXRodWJIYW5kbGVcIlxuICAgICAgICAgICAgICAgIHZhbHVlPXtsaWJyYXJ5RGF0YS5naXRodWJIYW5kbGV9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uSW5wdXRDaGFuZ2V9XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3QoXCJwdWJsaXNoRGlhbG9nLnBsYWNlaG9sZGVyLmdpdGh1YkhhbmRsZVwiKX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8bGFiZWw+XG4gICAgICAgICAgICAgIDxzcGFuPnt0KFwicHVibGlzaERpYWxvZy50d2l0dGVyVXNlcm5hbWVcIil9PC9zcGFuPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgbmFtZT1cInR3aXR0ZXJIYW5kbGVcIlxuICAgICAgICAgICAgICAgIHZhbHVlPXtsaWJyYXJ5RGF0YS50d2l0dGVySGFuZGxlfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtvbklucHV0Q2hhbmdlfVxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXt0KFwicHVibGlzaERpYWxvZy5wbGFjZWhvbGRlci50d2l0dGVySGFuZGxlXCIpfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDxsYWJlbD5cbiAgICAgICAgICAgICAgPHNwYW4+e3QoXCJwdWJsaXNoRGlhbG9nLndlYnNpdGVcIil9PC9zcGFuPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgbmFtZT1cIndlYnNpdGVcIlxuICAgICAgICAgICAgICAgIHBhdHRlcm49XCJodHRwcz86Ly8uK1wiXG4gICAgICAgICAgICAgICAgdGl0bGU9e3QoXCJwdWJsaXNoRGlhbG9nLmVycm9ycy53ZWJzaXRlXCIpfVxuICAgICAgICAgICAgICAgIHZhbHVlPXtsaWJyYXJ5RGF0YS53ZWJzaXRlfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtvbklucHV0Q2hhbmdlfVxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXt0KFwicHVibGlzaERpYWxvZy5wbGFjZWhvbGRlci53ZWJzaXRlXCIpfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInB1Ymxpc2gtbGlicmFyeS1ub3RlXCI+XG4gICAgICAgICAgICAgIHt0KFwicHVibGlzaERpYWxvZy5ub3RlTGljZW5zZS5wcmVcIil9XG4gICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgaHJlZj1cImh0dHBzOi8vZ2l0aHViLmNvbS9leGNhbGlkcmF3L2V4Y2FsaWRyYXctbGlicmFyaWVzL2Jsb2IvbWFpbi9MSUNFTlNFXCJcbiAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3QoXCJwdWJsaXNoRGlhbG9nLm5vdGVMaWNlbnNlLmxpbmtcIil9XG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAge3QoXCJwdWJsaXNoRGlhbG9nLm5vdGVMaWNlbnNlLnBvc3RcIil9XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwdWJsaXNoLWxpYnJhcnlfX2J1dHRvbnNcIj5cbiAgICAgICAgICAgIDxUb29sQnV0dG9uXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICB0aXRsZT17dChcImJ1dHRvbnMuY2FuY2VsXCIpfVxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPXt0KFwiYnV0dG9ucy5jYW5jZWxcIil9XG4gICAgICAgICAgICAgIGxhYmVsPXt0KFwiYnV0dG9ucy5jYW5jZWxcIil9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9e29uRGlhbG9nQ2xvc2V9XG4gICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwiY2FuY2VsLWNsZWFyLWNhbnZhcy1idXR0b25cIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwdWJsaXNoLWxpYnJhcnlfX2J1dHRvbnMtLWNhbmNlbFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPFRvb2xCdXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgIHRpdGxlPXt0KFwiYnV0dG9ucy5zdWJtaXRcIil9XG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9e3QoXCJidXR0b25zLnN1Ym1pdFwiKX1cbiAgICAgICAgICAgICAgbGFiZWw9e3QoXCJidXR0b25zLnN1Ym1pdFwiKX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicHVibGlzaC1saWJyYXJ5X19idXR0b25zLS1jb25maXJtXCJcbiAgICAgICAgICAgICAgaXNMb2FkaW5nPXtpc1N1Ym1pdHRpbmd9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Zvcm0+XG4gICAgICApIDogKFxuICAgICAgICA8cCBzdHlsZT17eyBwYWRkaW5nOiBcIjFlbVwiLCB0ZXh0QWxpZ246IFwiY2VudGVyXCIsIGZvbnRXZWlnaHQ6IDUwMCB9fT5cbiAgICAgICAgICB7dChcInB1Ymxpc2hEaWFsb2cuYXRsZWFzdE9uZUxpYkl0ZW1cIil9XG4gICAgICAgIDwvcD5cbiAgICAgICl9XG4gICAgPC9EaWFsb2c+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBQdWJsaXNoTGlicmFyeTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/PublishLibrary.tsx\n");
1948
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ \"../../../node_modules/react/jsx-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var open_color__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! open-color */ \"../../../node_modules/open-color/open-color.json\");\n/* harmony import */ var _Dialog__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Dialog */ \"../../components/Dialog.tsx\");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../i18n */ \"../../i18n.ts\");\n/* harmony import */ var _ToolButton__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./ToolButton */ \"../../components/ToolButton.tsx\");\n/* harmony import */ var _packages_utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../packages/utils */ \"../utils.ts\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../constants */ \"../../constants.ts\");\n/* harmony import */ var _PublishLibrary_scss__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./PublishLibrary.scss */ \"../../components/PublishLibrary.scss\");\n/* harmony import */ var _PublishLibrary_scss__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_PublishLibrary_scss__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../element */ \"../../element/index.ts\");\n/* harmony import */ var _element_mutateElement__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../element/mutateElement */ \"../../element/mutateElement.ts\");\n/* harmony import */ var _element_bounds__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../element/bounds */ \"../../element/bounds.ts\");\n/* harmony import */ var _SingleLibraryItem__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./SingleLibraryItem */ \"../../components/SingleLibraryItem.tsx\");\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nconst LOCAL_STORAGE_KEY_PUBLISH_LIBRARY = \"publish-library-data\";\r\nconst savePublishLibDataToStorage = (data) => {\r\n try {\r\n localStorage.setItem(LOCAL_STORAGE_KEY_PUBLISH_LIBRARY, JSON.stringify(data));\r\n }\r\n catch (error) {\r\n // Unable to access window.localStorage\r\n console.error(error);\r\n }\r\n};\r\nconst importPublishLibDataFromStorage = () => {\r\n try {\r\n const data = localStorage.getItem(LOCAL_STORAGE_KEY_PUBLISH_LIBRARY);\r\n if (data) {\r\n return JSON.parse(data);\r\n }\r\n }\r\n catch (error) {\r\n // Unable to access localStorage\r\n console.error(error);\r\n }\r\n return null;\r\n};\r\nconst PublishLibrary = ({ onClose, libraryItems, appState, onSuccess, onError, updateItemsInStorage, onRemove, }) => {\r\n const [libraryData, setLibraryData] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({\r\n authorName: \"\",\r\n githubHandle: \"\",\r\n name: \"\",\r\n description: \"\",\r\n twitterHandle: \"\",\r\n website: \"\",\r\n });\r\n const [isSubmitting, setIsSubmitting] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\r\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {\r\n const data = importPublishLibDataFromStorage();\r\n if (data) {\r\n setLibraryData(data);\r\n }\r\n }, []);\r\n const [clonedLibItems, setClonedLibItems] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(libraryItems.slice());\r\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {\r\n setClonedLibItems(libraryItems.slice());\r\n }, [libraryItems]);\r\n const onInputChange = (event) => {\r\n setLibraryData(Object.assign(Object.assign({}, libraryData), { [event.target.name]: event.target.value }));\r\n };\r\n const onSubmit = (event) => __awaiter(void 0, void 0, void 0, function* () {\r\n event.preventDefault();\r\n setIsSubmitting(true);\r\n const erroredLibItems = [];\r\n let isError = false;\r\n clonedLibItems.forEach((libItem) => {\r\n let error = \"\";\r\n if (!libItem.name) {\r\n error = (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"publishDialog.errors.required\");\r\n isError = true;\r\n }\r\n erroredLibItems.push(Object.assign(Object.assign({}, libItem), { error }));\r\n });\r\n if (isError) {\r\n setClonedLibItems(erroredLibItems);\r\n setIsSubmitting(false);\r\n return;\r\n }\r\n const elements = [];\r\n const prevBoundingBox = { minX: 0, minY: 0, maxX: 0, maxY: 0 };\r\n clonedLibItems.forEach((libItem) => {\r\n const boundingBox = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_11__.getCommonBoundingBox)(libItem.elements);\r\n const width = boundingBox.maxX - boundingBox.minX + 30;\r\n const height = boundingBox.maxY - boundingBox.minY + 30;\r\n const offset = {\r\n x: prevBoundingBox.maxX - boundingBox.minX,\r\n y: prevBoundingBox.maxY - boundingBox.minY,\r\n };\r\n const itemsWithUpdatedCoords = libItem.elements.map((element) => {\r\n element = (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_10__.mutateElement)(element, {\r\n x: element.x + offset.x + 15,\r\n y: element.y + offset.y + 15,\r\n });\r\n return element;\r\n });\r\n const items = [\r\n ...itemsWithUpdatedCoords,\r\n (0,_element__WEBPACK_IMPORTED_MODULE_9__.newElement)({\r\n type: \"rectangle\",\r\n width,\r\n height,\r\n x: prevBoundingBox.maxX,\r\n y: prevBoundingBox.maxY,\r\n strokeColor: \"#ced4da\",\r\n backgroundColor: \"transparent\",\r\n strokeStyle: \"solid\",\r\n opacity: 100,\r\n roughness: 0,\r\n strokeSharpness: \"sharp\",\r\n fillStyle: \"solid\",\r\n strokeWidth: 1,\r\n }),\r\n ];\r\n elements.push(...items);\r\n prevBoundingBox.maxX = prevBoundingBox.maxX + width + 30;\r\n });\r\n const png = yield (0,_packages_utils__WEBPACK_IMPORTED_MODULE_6__.exportToBlob)({\r\n elements,\r\n mimeType: \"image/png\",\r\n appState: Object.assign(Object.assign({}, appState), { viewBackgroundColor: open_color__WEBPACK_IMPORTED_MODULE_2__.white, exportBackground: true }),\r\n files: null,\r\n });\r\n const libContent = {\r\n type: _constants__WEBPACK_IMPORTED_MODULE_7__.EXPORT_DATA_TYPES.excalidrawLibrary,\r\n version: 2,\r\n source: _constants__WEBPACK_IMPORTED_MODULE_7__.EXPORT_SOURCE,\r\n libraryItems: clonedLibItems,\r\n };\r\n const content = JSON.stringify(libContent, null, 2);\r\n const lib = new Blob([content], { type: \"application/json\" });\r\n const formData = new FormData();\r\n formData.append(\"excalidrawLib\", lib);\r\n formData.append(\"excalidrawPng\", png);\r\n formData.append(\"title\", libraryData.name);\r\n formData.append(\"authorName\", libraryData.authorName);\r\n formData.append(\"githubHandle\", libraryData.githubHandle);\r\n formData.append(\"name\", libraryData.name);\r\n formData.append(\"description\", libraryData.description);\r\n formData.append(\"twitterHandle\", libraryData.twitterHandle);\r\n formData.append(\"website\", libraryData.website);\r\n fetch(`https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries/submit`, {\r\n method: \"post\",\r\n body: formData,\r\n })\r\n .then((response) => {\r\n if (response.ok) {\r\n return response.json().then(({ url }) => {\r\n // flush data from local storage\r\n localStorage.removeItem(LOCAL_STORAGE_KEY_PUBLISH_LIBRARY);\r\n onSuccess({\r\n url,\r\n authorName: libraryData.authorName,\r\n items: clonedLibItems,\r\n });\r\n });\r\n }\r\n return response\r\n .json()\r\n .catch(() => {\r\n throw new Error(response.statusText || \"something went wrong\");\r\n })\r\n .then((error) => {\r\n throw new Error(error.message || response.statusText || \"something went wrong\");\r\n });\r\n }, (err) => {\r\n console.error(err);\r\n onError(err);\r\n setIsSubmitting(false);\r\n })\r\n .catch((err) => {\r\n console.error(err);\r\n onError(err);\r\n setIsSubmitting(false);\r\n });\r\n });\r\n const renderLibraryItems = () => {\r\n const items = [];\r\n clonedLibItems.forEach((libItem, index) => {\r\n items.push((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: \"single-library-item-wrapper\" }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_SingleLibraryItem__WEBPACK_IMPORTED_MODULE_12__[\"default\"], { libItem: libItem, appState: appState, index: index, onChange: (val, index) => {\r\n const items = clonedLibItems.slice();\r\n items[index].name = val;\r\n setClonedLibItems(items);\r\n }, onRemove: onRemove }, void 0) }), index));\r\n });\r\n return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: \"selected-library-items\" }, { children: items }), void 0);\r\n };\r\n const onDialogClose = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(() => {\r\n updateItemsInStorage(clonedLibItems);\r\n savePublishLibDataToStorage(libraryData);\r\n onClose();\r\n }, [clonedLibItems, onClose, updateItemsInStorage, libraryData]);\r\n const shouldRenderForm = !!libraryItems.length;\r\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Dialog__WEBPACK_IMPORTED_MODULE_3__.Dialog, Object.assign({ onCloseRequest: onDialogClose, title: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"publishDialog.title\"), className: \"publish-library\" }, { children: shouldRenderForm ? ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"form\", Object.assign({ onSubmit: onSubmit }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: \"publish-library-note\" }, { children: [(0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"publishDialog.noteDescription.pre\"), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"a\", Object.assign({ href: \"https://libraries.excalidraw.com\", target: \"_blank\", rel: \"noopener noreferrer\" }, { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"publishDialog.noteDescription.link\") }), void 0), \" \", (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"publishDialog.noteDescription.post\")] }), void 0), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"span\", Object.assign({ className: \"publish-library-note\" }, { children: [(0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"publishDialog.noteGuidelines.pre\"), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"a\", Object.assign({ href: \"https://github.com/excalidraw/excalidraw-libraries#guidelines\", target: \"_blank\", rel: \"noopener noreferrer\" }, { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"publishDialog.noteGuidelines.link\") }), void 0), (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"publishDialog.noteGuidelines.post\")] }), void 0), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: \"publish-library-note\" }, { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"publishDialog.noteItems\") }), void 0), renderLibraryItems(), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: \"publish-library__fields\" }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"label\", { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"span\", { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"publishDialog.libraryName\") }, void 0), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"span\", Object.assign({ \"aria-hidden\": \"true\", className: \"required\" }, { children: \"*\" }), void 0)] }, void 0), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"input\", { type: \"text\", name: \"name\", required: true, value: libraryData.name, onChange: onInputChange, placeholder: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"publishDialog.placeholder.libraryName\") }, void 0)] }, void 0), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"label\", Object.assign({ style: { alignItems: \"flex-start\" } }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"span\", { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"publishDialog.libraryDesc\") }, void 0), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"span\", Object.assign({ \"aria-hidden\": \"true\", className: \"required\" }, { children: \"*\" }), void 0)] }, void 0), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"textarea\", { name: \"description\", rows: 4, required: true, value: libraryData.description, onChange: onInputChange, placeholder: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"publishDialog.placeholder.libraryDesc\") }, void 0)] }), void 0), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"label\", { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"span\", { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"publishDialog.authorName\") }, void 0), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"span\", Object.assign({ \"aria-hidden\": \"true\", className: \"required\" }, { children: \"*\" }), void 0)] }, void 0), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"input\", { type: \"text\", name: \"authorName\", required: true, value: libraryData.authorName, onChange: onInputChange, placeholder: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"publishDialog.placeholder.authorName\") }, void 0)] }, void 0), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"label\", { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"span\", { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"publishDialog.githubUsername\") }, void 0), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"input\", { type: \"text\", name: \"githubHandle\", value: libraryData.githubHandle, onChange: onInputChange, placeholder: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"publishDialog.placeholder.githubHandle\") }, void 0)] }, void 0), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"label\", { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"span\", { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"publishDialog.twitterUsername\") }, void 0), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"input\", { type: \"text\", name: \"twitterHandle\", value: libraryData.twitterHandle, onChange: onInputChange, placeholder: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"publishDialog.placeholder.twitterHandle\") }, void 0)] }, void 0), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"label\", { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"span\", { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"publishDialog.website\") }, void 0), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"input\", { type: \"text\", name: \"website\", pattern: \"https?://.+\", title: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"publishDialog.errors.website\"), value: libraryData.website, onChange: onInputChange, placeholder: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"publishDialog.placeholder.website\") }, void 0)] }, void 0), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"span\", Object.assign({ className: \"publish-library-note\" }, { children: [(0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"publishDialog.noteLicense.pre\"), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"a\", Object.assign({ href: \"https://github.com/excalidraw/excalidraw-libraries/blob/main/LICENSE\", target: \"_blank\", rel: \"noopener noreferrer\" }, { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"publishDialog.noteLicense.link\") }), void 0), (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"publishDialog.noteLicense.post\")] }), void 0)] }), void 0), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: \"publish-library__buttons\" }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ToolButton__WEBPACK_IMPORTED_MODULE_5__.ToolButton, { type: \"button\", title: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"buttons.cancel\"), \"aria-label\": (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"buttons.cancel\"), label: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"buttons.cancel\"), onClick: onDialogClose, \"data-testid\": \"cancel-clear-canvas-button\", className: \"publish-library__buttons--cancel\" }, void 0), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ToolButton__WEBPACK_IMPORTED_MODULE_5__.ToolButton, { type: \"submit\", title: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"buttons.submit\"), \"aria-label\": (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"buttons.submit\"), label: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"buttons.submit\"), className: \"publish-library__buttons--confirm\", isLoading: isSubmitting }, void 0)] }), void 0)] }), void 0)) : ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"p\", Object.assign({ style: { padding: \"1em\", textAlign: \"center\", fontWeight: 500 } }, { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"publishDialog.atleastOneLibItem\") }), void 0)) }), void 0));\r\n};\r\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (PublishLibrary);\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QixDQUFDLEVBQy9CLEtBQUssRUFBRSx3Q0FBQyxDQUFDLGdCQUFnQixDQUFDLEVBQzFCLFNBQVMsRUFBQyxtQ0FBbUMsRUFDN0MsU0FBUyxFQUFFLFlBQVksV0FDdkIsYUFDRSxhQUNELENBQ1IsQ0FBQyxDQUFDLENBQUMsQ0FDRiw0RUFBRyxLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxnQkFDL0Qsd0NBQUMsQ0FBQyxpQ0FBaUMsQ0FBQyxZQUNuQyxDQUNMLFlBQ00sQ0FDVixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsaUVBQWUsY0FBYyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvUHVibGlzaExpYnJhcnkudHN4P2I0MWEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVhY3ROb2RlLCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IG9jIGZyb20gXCJvcGVuLWNvbG9yXCI7XG5cbmltcG9ydCB7IERpYWxvZyB9IGZyb20gXCIuL0RpYWxvZ1wiO1xuaW1wb3J0IHsgdCB9IGZyb20gXCIuLi9pMThuXCI7XG5cbmltcG9ydCB7IFRvb2xCdXR0b24gfSBmcm9tIFwiLi9Ub29sQnV0dG9uXCI7XG5cbmltcG9ydCB7IEFwcFN0YXRlLCBMaWJyYXJ5SXRlbXMsIExpYnJhcnlJdGVtIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgeyBleHBvcnRUb0Jsb2IgfSBmcm9tIFwiLi4vcGFja2FnZXMvdXRpbHNcIjtcbmltcG9ydCB7IEVYUE9SVF9EQVRBX1RZUEVTLCBFWFBPUlRfU09VUkNFIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgRXhwb3J0ZWRMaWJyYXJ5RGF0YSB9IGZyb20gXCIuLi9kYXRhL3R5cGVzXCI7XG5cbmltcG9ydCBcIi4vUHVibGlzaExpYnJhcnkuc2Nzc1wiO1xuaW1wb3J0IHsgRXhjYWxpZHJhd0VsZW1lbnQgfSBmcm9tIFwiLi4vZWxlbWVudC90eXBlc1wiO1xuaW1wb3J0IHsgbmV3RWxlbWVudCB9IGZyb20gXCIuLi9lbGVtZW50XCI7XG5pbXBvcnQgeyBtdXRhdGVFbGVtZW50IH0gZnJvbSBcIi4uL2VsZW1lbnQvbXV0YXRlRWxlbWVudFwiO1xuaW1wb3J0IHsgZ2V0Q29tbW9uQm91bmRpbmdCb3ggfSBmcm9tIFwiLi4vZWxlbWVudC9ib3VuZHNcIjtcbmltcG9ydCBTaW5nbGVMaWJyYXJ5SXRlbSBmcm9tIFwiLi9TaW5nbGVMaWJyYXJ5SXRlbVwiO1xuXG5pbnRlcmZhY2UgUHVibGlzaExpYnJhcnlEYXRhUGFyYW1zIHtcbiAgYXV0aG9yTmFtZTogc3RyaW5nO1xuICBnaXRodWJIYW5kbGU6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICB0d2l0dGVySGFuZGxlOiBzdHJpbmc7XG4gIHdlYnNpdGU6IHN0cmluZztcbn1cblxuY29uc3QgTE9DQUxfU1RPUkFHRV9LRVlfUFVCTElTSF9MSUJSQVJZID0gXCJwdWJsaXNoLWxpYnJhcnktZGF0YVwiO1xuXG5jb25zdCBzYXZlUHVibGlzaExpYkRhdGFUb1N0b3JhZ2UgPSAoZGF0YTogUHVibGlzaExpYnJhcnlEYXRhUGFyYW1zKSA9PiB7XG4gIHRyeSB7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXG4gICAgICBMT0NBTF9TVE9SQUdFX0tFWV9QVUJMSVNIX0xJQlJBUlksXG4gICAgICBKU09OLnN0cmluZ2lmeShkYXRhKSxcbiAgICApO1xuICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgLy8gVW5hYmxlIHRvIGFjY2VzcyB3aW5kb3cubG9jYWxTdG9yYWdlXG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gIH1cbn07XG5cbmNvbnN0IGltcG9ydFB1Ymxpc2hMaWJEYXRhRnJvbVN0b3JhZ2UgPSAoKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKExPQ0FMX1NUT1JBR0VfS0VZX1BVQkxJU0hfTElCUkFSWSk7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgIC8vIFVuYWJsZSB0byBhY2Nlc3MgbG9jYWxTdG9yYWdlXG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn07XG5cbmNvbnN0IFB1Ymxpc2hMaWJyYXJ5ID0gKHtcbiAgb25DbG9zZSxcbiAgbGlicmFyeUl0ZW1zLFxuICBhcHBTdGF0ZSxcbiAgb25TdWNjZXNzLFxuICBvbkVycm9yLFxuICB1cGRhdGVJdGVtc0luU3RvcmFnZSxcbiAgb25SZW1vdmUsXG59OiB7XG4gIG9uQ2xvc2U6ICgpID0+IHZvaWQ7XG4gIGxpYnJhcnlJdGVtczogTGlicmFyeUl0ZW1zO1xuICBhcHBTdGF0ZTogQXBwU3RhdGU7XG4gIG9uU3VjY2VzczogKGRhdGE6IHtcbiAgICB1cmw6IHN0cmluZztcbiAgICBhdXRob3JOYW1lOiBzdHJpbmc7XG4gICAgaXRlbXM6IExpYnJhcnlJdGVtcztcbiAgfSkgPT4gdm9pZDtcblxuICBvbkVycm9yOiAoZXJyb3I6IEVycm9yKSA9PiB2b2lkO1xuICB1cGRhdGVJdGVtc0luU3RvcmFnZTogKGl0ZW1zOiBMaWJyYXJ5SXRlbXMpID0+IHZvaWQ7XG4gIG9uUmVtb3ZlOiAoaWQ6IHN0cmluZykgPT4gdm9pZDtcbn0pID0+IHtcbiAgY29uc3QgW2xpYnJhcnlEYXRhLCBzZXRMaWJyYXJ5RGF0YV0gPSB1c2VTdGF0ZTxQdWJsaXNoTGlicmFyeURhdGFQYXJhbXM+KHtcbiAgICBhdXRob3JOYW1lOiBcIlwiLFxuICAgIGdpdGh1YkhhbmRsZTogXCJcIixcbiAgICBuYW1lOiBcIlwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIlwiLFxuICAgIHR3aXR0ZXJIYW5kbGU6IFwiXCIsXG4gICAgd2Vic2l0ZTogXCJcIixcbiAgfSk7XG5cbiAgY29uc3QgW2lzU3VibWl0dGluZywgc2V0SXNTdWJtaXR0aW5nXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGRhdGEgPSBpbXBvcnRQdWJsaXNoTGliRGF0YUZyb21TdG9yYWdlKCk7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIHNldExpYnJhcnlEYXRhKGRhdGEpO1xuICAgIH1cbiAgfSwgW10pO1xuXG4gIGNvbnN0IFtjbG9uZWRMaWJJdGVtcywgc2V0Q2xvbmVkTGliSXRlbXNdID0gdXNlU3RhdGU8TGlicmFyeUl0ZW1zPihcbiAgICBsaWJyYXJ5SXRlbXMuc2xpY2UoKSxcbiAgKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldENsb25lZExpYkl0ZW1zKGxpYnJhcnlJdGVtcy5zbGljZSgpKTtcbiAgfSwgW2xpYnJhcnlJdGVtc10pO1xuXG4gIGNvbnN0IG9uSW5wdXRDaGFuZ2UgPSAoZXZlbnQ6IGFueSkgPT4ge1xuICAgIHNldExpYnJhcnlEYXRhKHtcbiAgICAgIC4uLmxpYnJhcnlEYXRhLFxuICAgICAgW2V2ZW50LnRhcmdldC5uYW1lXTogZXZlbnQudGFyZ2V0LnZhbHVlLFxuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IG9uU3VibWl0ID0gYXN5bmMgKGV2ZW50OiBSZWFjdC5Gb3JtRXZlbnQ8SFRNTEZvcm1FbGVtZW50PikgPT4ge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgc2V0SXNTdWJtaXR0aW5nKHRydWUpO1xuICAgIGNvbnN0IGVycm9yZWRMaWJJdGVtczogTGlicmFyeUl0ZW1bXSA9IFtdO1xuICAgIGxldCBpc0Vycm9yID0gZmFsc2U7XG4gICAgY2xvbmVkTGliSXRlbXMuZm9yRWFjaCgobGliSXRlbSkgPT4ge1xuICAgICAgbGV0IGVycm9yID0gXCJcIjtcbiAgICAgIGlmICghbGliSXRlbS5uYW1lKSB7XG4gICAgICAgIGVycm9yID0gdChcInB1Ymxpc2hEaWFsb2cuZXJyb3JzLnJlcXVpcmVkXCIpO1xuICAgICAgICBpc0Vycm9yID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGVycm9yZWRMaWJJdGVtcy5wdXNoKHsgLi4ubGliSXRlbSwgZXJyb3IgfSk7XG4gICAgfSk7XG5cbiAgICBpZiAoaXNFcnJvcikge1xuICAgICAgc2V0Q2xvbmVkTGliSXRlbXMoZXJyb3JlZExpYkl0ZW1zKTtcbiAgICAgIHNldElzU3VibWl0dGluZyhmYWxzZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGVsZW1lbnRzOiBFeGNhbGlkcmF3RWxlbWVudFtdID0gW107XG4gICAgY29uc3QgcHJldkJvdW5kaW5nQm94ID0geyBtaW5YOiAwLCBtaW5ZOiAwLCBtYXhYOiAwLCBtYXhZOiAwIH07XG4gICAgY2xvbmVkTGliSXRlbXMuZm9yRWFjaCgobGliSXRlbSkgPT4ge1xuICAgICAgY29uc3QgYm91bmRpbmdCb3ggPSBnZXRDb21tb25Cb3VuZGluZ0JveChsaWJJdGVtLmVsZW1lbnRzKTtcbiAgICAgIGNvbnN0IHdpZHRoID0gYm91bmRpbmdCb3gubWF4WCAtIGJvdW5kaW5nQm94Lm1pblggKyAzMDtcbiAgICAgIGNvbnN0IGhlaWdodCA9IGJvdW5kaW5nQm94Lm1heFkgLSBib3VuZGluZ0JveC5taW5ZICsgMzA7XG4gICAgICBjb25zdCBvZmZzZXQgPSB7XG4gICAgICAgIHg6IHByZXZCb3VuZGluZ0JveC5tYXhYIC0gYm91bmRpbmdCb3gubWluWCxcbiAgICAgICAgeTogcHJldkJvdW5kaW5nQm94Lm1heFkgLSBib3VuZGluZ0JveC5taW5ZLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgaXRlbXNXaXRoVXBkYXRlZENvb3JkcyA9IGxpYkl0ZW0uZWxlbWVudHMubWFwKChlbGVtZW50KSA9PiB7XG4gICAgICAgIGVsZW1lbnQgPSBtdXRhdGVFbGVtZW50KGVsZW1lbnQsIHtcbiAgICAgICAgICB4OiBlbGVtZW50LnggKyBvZmZzZXQueCArIDE1LFxuICAgICAgICAgIHk6IGVsZW1lbnQueSArIG9mZnNldC55ICsgMTUsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZWxlbWVudDtcbiAgICAgIH0pO1xuICAgICAgY29uc3QgaXRlbXMgPSBbXG4gICAgICAgIC4uLml0ZW1zV2l0aFVwZGF0ZWRDb29yZHMsXG4gICAgICAgIG5ld0VsZW1lbnQoe1xuICAgICAgICAgIHR5cGU6IFwicmVjdGFuZ2xlXCIsXG4gICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgaGVpZ2h0LFxuICAgICAgICAgIHg6IHByZXZCb3VuZGluZ0JveC5tYXhYLFxuICAgICAgICAgIHk6IHByZXZCb3VuZGluZ0JveC5tYXhZLFxuICAgICAgICAgIHN0cm9rZUNvbG9yOiBcIiNjZWQ0ZGFcIixcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwidHJhbnNwYXJlbnRcIixcbiAgICAgICAgICBzdHJva2VTdHlsZTogXCJzb2xpZFwiLFxuICAgICAgICAgIG9wYWNpdHk6IDEwMCxcbiAgICAgICAgICByb3VnaG5lc3M6IDAsXG4gICAgICAgICAgc3Ryb2tlU2hhcnBuZXNzOiBcInNoYXJwXCIsXG4gICAgICAgICAgZmlsbFN0eWxlOiBcInNvbGlkXCIsXG4gICAgICAgICAgc3Ryb2tlV2lkdGg6IDEsXG4gICAgICAgIH0pLFxuICAgICAgXTtcbiAgICAgIGVsZW1lbnRzLnB1c2goLi4uaXRlbXMpO1xuICAgICAgcHJldkJvdW5kaW5nQm94Lm1heFggPSBwcmV2Qm91bmRpbmdCb3gubWF4WCArIHdpZHRoICsgMzA7XG4gICAgfSk7XG4gICAgY29uc3QgcG5nID0gYXdhaXQgZXhwb3J0VG9CbG9iKHtcbiAgICAgIGVsZW1lbnRzLFxuICAgICAgbWltZVR5cGU6IFwiaW1hZ2UvcG5nXCIsXG4gICAgICBhcHBTdGF0ZToge1xuICAgICAgICAuLi5hcHBTdGF0ZSxcbiAgICAgICAgdmlld0JhY2tncm91bmRDb2xvcjogb2Mud2hpdGUsXG4gICAgICAgIGV4cG9ydEJhY2tncm91bmQ6IHRydWUsXG4gICAgICB9LFxuICAgICAgZmlsZXM6IG51bGwsXG4gICAgfSk7XG5cbiAgICBjb25zdCBsaWJDb250ZW50OiBFeHBvcnRlZExpYnJhcnlEYXRhID0ge1xuICAgICAgdHlwZTogRVhQT1JUX0RBVEFfVFlQRVMuZXhjYWxpZHJhd0xpYnJhcnksXG4gICAgICB2ZXJzaW9uOiAyLFxuICAgICAgc291cmNlOiBFWFBPUlRfU09VUkNFLFxuICAgICAgbGlicmFyeUl0ZW1zOiBjbG9uZWRMaWJJdGVtcyxcbiAgICB9O1xuICAgIGNvbnN0IGNvbnRlbnQgPSBKU09OLnN0cmluZ2lmeShsaWJDb250ZW50LCBudWxsLCAyKTtcbiAgICBjb25zdCBsaWIgPSBuZXcgQmxvYihbY29udGVudF0sIHsgdHlwZTogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSk7XG5cbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgIGZvcm1EYXRhLmFwcGVuZChcImV4Y2FsaWRyYXdMaWJcIiwgbGliKTtcbiAgICBmb3JtRGF0YS5hcHBlbmQoXCJleGNhbGlkcmF3UG5nXCIsIHBuZyEpO1xuICAgIGZvcm1EYXRhLmFwcGVuZChcInRpdGxlXCIsIGxpYnJhcnlEYXRhLm5hbWUpO1xuICAgIGZvcm1EYXRhLmFwcGVuZChcImF1dGhvck5hbWVcIiwgbGlicmFyeURhdGEuYXV0aG9yTmFtZSk7XG4gICAgZm9ybURhdGEuYXBwZW5kKFwiZ2l0aHViSGFuZGxlXCIsIGxpYnJhcnlEYXRhLmdpdGh1YkhhbmRsZSk7XG4gICAgZm9ybURhdGEuYXBwZW5kKFwibmFtZVwiLCBsaWJyYXJ5RGF0YS5uYW1lKTtcbiAgICBmb3JtRGF0YS5hcHBlbmQoXCJkZXNjcmlwdGlvblwiLCBsaWJyYXJ5RGF0YS5kZXNjcmlwdGlvbik7XG4gICAgZm9ybURhdGEuYXBwZW5kKFwidHdpdHRlckhhbmRsZVwiLCBsaWJyYXJ5RGF0YS50d2l0dGVySGFuZGxlKTtcbiAgICBmb3JtRGF0YS5hcHBlbmQoXCJ3ZWJzaXRlXCIsIGxpYnJhcnlEYXRhLndlYnNpdGUpO1xuXG4gICAgZmV0Y2goXG4gICAgICBgaHR0cHM6Ly91cy1jZW50cmFsMS1leGNhbGlkcmF3LXJvb20tcGVyc2lzdGVuY2UuY2xvdWRmdW5jdGlvbnMubmV0L2xpYnJhcmllcy9zdWJtaXRgLFxuICAgICAge1xuICAgICAgICBtZXRob2Q6IFwicG9zdFwiLFxuICAgICAgICBib2R5OiBmb3JtRGF0YSxcbiAgICAgIH0sXG4gICAgKVxuICAgICAgLnRoZW4oXG4gICAgICAgIChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgIGlmIChyZXNwb25zZS5vaykge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKS50aGVuKCh7IHVybCB9KSA9PiB7XG4gICAgICAgICAgICAgIC8vIGZsdXNoIGRhdGEgZnJvbSBsb2NhbCBzdG9yYWdlXG4gICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKExPQ0FMX1NUT1JBR0VfS0VZX1BVQkxJU0hfTElCUkFSWSk7XG4gICAgICAgICAgICAgIG9uU3VjY2Vzcyh7XG4gICAgICAgICAgICAgICAgdXJsLFxuICAgICAgICAgICAgICAgIGF1dGhvck5hbWU6IGxpYnJhcnlEYXRhLmF1dGhvck5hbWUsXG4gICAgICAgICAgICAgICAgaXRlbXM6IGNsb25lZExpYkl0ZW1zLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2VcbiAgICAgICAgICAgIC5qc29uKClcbiAgICAgICAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihyZXNwb25zZS5zdGF0dXNUZXh0IHx8IFwic29tZXRoaW5nIHdlbnQgd3JvbmdcIik7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnRoZW4oKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICBlcnJvci5tZXNzYWdlIHx8IHJlc3BvbnNlLnN0YXR1c1RleHQgfHwgXCJzb21ldGhpbmcgd2VudCB3cm9uZ1wiLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgICAgb25FcnJvcihlcnIpO1xuICAgICAgICAgIHNldElzU3VibWl0dGluZyhmYWxzZSk7XG4gICAgICAgIH0sXG4gICAgICApXG4gICAgICAuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgIG9uRXJyb3IoZXJyKTtcbiAgICAgICAgc2V0SXNTdWJtaXR0aW5nKGZhbHNlKTtcbiAgICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IHJlbmRlckxpYnJhcnlJdGVtcyA9ICgpID0+IHtcbiAgICBjb25zdCBpdGVtczogUmVhY3ROb2RlW10gPSBbXTtcbiAgICBjbG9uZWRMaWJJdGVtcy5mb3JFYWNoKChsaWJJdGVtLCBpbmRleCkgPT4ge1xuICAgICAgaXRlbXMucHVzaChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzaW5nbGUtbGlicmFyeS1pdGVtLXdyYXBwZXJcIiBrZXk9e2luZGV4fT5cbiAgICAgICAgICA8U2luZ2xlTGlicmFyeUl0ZW1cbiAgICAgICAgICAgIGxpYkl0ZW09e2xpYkl0ZW19XG4gICAgICAgICAgICBhcHBTdGF0ZT17YXBwU3RhdGV9XG4gICAgICAgICAgICBpbmRleD17aW5kZXh9XG4gICAgICAgICAgICBvbkNoYW5nZT17KHZhbCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgaXRlbXMgPSBjbG9uZWRMaWJJdGVtcy5zbGljZSgpO1xuICAgICAgICAgICAgICBpdGVtc1tpbmRleF0ubmFtZSA9IHZhbDtcbiAgICAgICAgICAgICAgc2V0Q2xvbmVkTGliSXRlbXMoaXRlbXMpO1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIG9uUmVtb3ZlPXtvblJlbW92ZX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj4sXG4gICAgICApO1xuICAgIH0pO1xuICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cInNlbGVjdGVkLWxpYnJhcnktaXRlbXNcIj57aXRlbXN9PC9kaXY+O1xuICB9O1xuXG4gIGNvbnN0IG9uRGlhbG9nQ2xvc2UgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgdXBkYXRlSXRlbXNJblN0b3JhZ2UoY2xvbmVkTGliSXRlbXMpO1xuICAgIHNhdmVQdWJsaXNoTGliRGF0YVRvU3RvcmFnZShsaWJyYXJ5RGF0YSk7XG4gICAgb25DbG9zZSgpO1xuICB9LCBbY2xvbmVkTGliSXRlbXMsIG9uQ2xvc2UsIHVwZGF0ZUl0ZW1zSW5TdG9yYWdlLCBsaWJyYXJ5RGF0YV0pO1xuXG4gIGNvbnN0IHNob3VsZFJlbmRlckZvcm0gPSAhIWxpYnJhcnlJdGVtcy5sZW5ndGg7XG4gIHJldHVybiAoXG4gICAgPERpYWxvZ1xuICAgICAgb25DbG9zZVJlcXVlc3Q9e29uRGlhbG9nQ2xvc2V9XG4gICAgICB0aXRsZT17dChcInB1Ymxpc2hEaWFsb2cudGl0bGVcIil9XG4gICAgICBjbGFzc05hbWU9XCJwdWJsaXNoLWxpYnJhcnlcIlxuICAgID5cbiAgICAgIHtzaG91bGRSZW5kZXJGb3JtID8gKFxuICAgICAgICA8Zm9ybSBvblN1Ym1pdD17b25TdWJtaXR9PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHVibGlzaC1saWJyYXJ5LW5vdGVcIj5cbiAgICAgICAgICAgIHt0KFwicHVibGlzaERpYWxvZy5ub3RlRGVzY3JpcHRpb24ucHJlXCIpfVxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgaHJlZj1cImh0dHBzOi8vbGlicmFyaWVzLmV4Y2FsaWRyYXcuY29tXCJcbiAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwicHVibGlzaERpYWxvZy5ub3RlRGVzY3JpcHRpb24ubGlua1wiKX1cbiAgICAgICAgICAgIDwvYT57XCIgXCJ9XG4gICAgICAgICAgICB7dChcInB1Ymxpc2hEaWFsb2cubm90ZURlc2NyaXB0aW9uLnBvc3RcIil9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHVibGlzaC1saWJyYXJ5LW5vdGVcIj5cbiAgICAgICAgICAgIHt0KFwicHVibGlzaERpYWxvZy5ub3RlR3VpZGVsaW5lcy5wcmVcIil9XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICBocmVmPVwiaHR0cHM6Ly9naXRodWIuY29tL2V4Y2FsaWRyYXcvZXhjYWxpZHJhdy1saWJyYXJpZXMjZ3VpZGVsaW5lc1wiXG4gICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInB1Ymxpc2hEaWFsb2cubm90ZUd1aWRlbGluZXMubGlua1wiKX1cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIHt0KFwicHVibGlzaERpYWxvZy5ub3RlR3VpZGVsaW5lcy5wb3N0XCIpfVxuICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHVibGlzaC1saWJyYXJ5LW5vdGVcIj5cbiAgICAgICAgICAgIHt0KFwicHVibGlzaERpYWxvZy5ub3RlSXRlbXNcIil9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAge3JlbmRlckxpYnJhcnlJdGVtcygpfVxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHVibGlzaC1saWJyYXJ5X19maWVsZHNcIj5cbiAgICAgICAgICAgIDxsYWJlbD5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57dChcInB1Ymxpc2hEaWFsb2cubGlicmFyeU5hbWVcIil9PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzTmFtZT1cInJlcXVpcmVkXCI+XG4gICAgICAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIG5hbWU9XCJuYW1lXCJcbiAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgIHZhbHVlPXtsaWJyYXJ5RGF0YS5uYW1lfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtvbklucHV0Q2hhbmdlfVxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXt0KFwicHVibGlzaERpYWxvZy5wbGFjZWhvbGRlci5saWJyYXJ5TmFtZVwiKX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8bGFiZWwgc3R5bGU9e3sgYWxpZ25JdGVtczogXCJmbGV4LXN0YXJ0XCIgfX0+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3QoXCJwdWJsaXNoRGlhbG9nLmxpYnJhcnlEZXNjXCIpfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIiBjbGFzc05hbWU9XCJyZXF1aXJlZFwiPlxuICAgICAgICAgICAgICAgICAgKlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICAgICAgIG5hbWU9XCJkZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgcm93cz17NH1cbiAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgIHZhbHVlPXtsaWJyYXJ5RGF0YS5kZXNjcmlwdGlvbn1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17b25JbnB1dENoYW5nZX1cbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17dChcInB1Ymxpc2hEaWFsb2cucGxhY2Vob2xkZXIubGlicmFyeURlc2NcIil9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPGxhYmVsPlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxzcGFuPnt0KFwicHVibGlzaERpYWxvZy5hdXRob3JOYW1lXCIpfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIiBjbGFzc05hbWU9XCJyZXF1aXJlZFwiPlxuICAgICAgICAgICAgICAgICAgKlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBuYW1lPVwiYXV0aG9yTmFtZVwiXG4gICAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICB2YWx1ZT17bGlicmFyeURhdGEuYXV0aG9yTmFtZX1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17b25JbnB1dENoYW5nZX1cbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17dChcInB1Ymxpc2hEaWFsb2cucGxhY2Vob2xkZXIuYXV0aG9yTmFtZVwiKX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8bGFiZWw+XG4gICAgICAgICAgICAgIDxzcGFuPnt0KFwicHVibGlzaERpYWxvZy5naXRodWJVc2VybmFtZVwiKX08L3NwYW4+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBuYW1lPVwiZ2l0aHViSGFuZGxlXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17bGlicmFyeURhdGEuZ2l0aHViSGFuZGxlfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtvbklucHV0Q2hhbmdlfVxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXt0KFwicHVibGlzaERpYWxvZy5wbGFjZWhvbGRlci5naXRodWJIYW5kbGVcIil9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPGxhYmVsPlxuICAgICAgICAgICAgICA8c3Bhbj57dChcInB1Ymxpc2hEaWFsb2cudHdpdHRlclVzZXJuYW1lXCIpfTwvc3Bhbj5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIG5hbWU9XCJ0d2l0dGVySGFuZGxlXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17bGlicmFyeURhdGEudHdpdHRlckhhbmRsZX1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17b25JbnB1dENoYW5nZX1cbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17dChcInB1Ymxpc2hEaWFsb2cucGxhY2Vob2xkZXIudHdpdHRlckhhbmRsZVwiKX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8bGFiZWw+XG4gICAgICAgICAgICAgIDxzcGFuPnt0KFwicHVibGlzaERpYWxvZy53ZWJzaXRlXCIpfTwvc3Bhbj5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIG5hbWU9XCJ3ZWJzaXRlXCJcbiAgICAgICAgICAgICAgICBwYXR0ZXJuPVwiaHR0cHM/Oi8vLitcIlxuICAgICAgICAgICAgICAgIHRpdGxlPXt0KFwicHVibGlzaERpYWxvZy5lcnJvcnMud2Vic2l0ZVwiKX1cbiAgICAgICAgICAgICAgICB2YWx1ZT17bGlicmFyeURhdGEud2Vic2l0ZX1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17b25JbnB1dENoYW5nZX1cbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17dChcInB1Ymxpc2hEaWFsb2cucGxhY2Vob2xkZXIud2Vic2l0ZVwiKX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwdWJsaXNoLWxpYnJhcnktbm90ZVwiPlxuICAgICAgICAgICAgICB7dChcInB1Ymxpc2hEaWFsb2cubm90ZUxpY2Vuc2UucHJlXCIpfVxuICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIGhyZWY9XCJodHRwczovL2dpdGh1Yi5jb20vZXhjYWxpZHJhdy9leGNhbGlkcmF3LWxpYnJhcmllcy9ibG9iL21haW4vTElDRU5TRVwiXG4gICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt0KFwicHVibGlzaERpYWxvZy5ub3RlTGljZW5zZS5saW5rXCIpfVxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgIHt0KFwicHVibGlzaERpYWxvZy5ub3RlTGljZW5zZS5wb3N0XCIpfVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHVibGlzaC1saWJyYXJ5X19idXR0b25zXCI+XG4gICAgICAgICAgICA8VG9vbEJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgdGl0bGU9e3QoXCJidXR0b25zLmNhbmNlbFwiKX1cbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD17dChcImJ1dHRvbnMuY2FuY2VsXCIpfVxuICAgICAgICAgICAgICBsYWJlbD17dChcImJ1dHRvbnMuY2FuY2VsXCIpfVxuICAgICAgICAgICAgICBvbkNsaWNrPXtvbkRpYWxvZ0Nsb3NlfVxuICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cImNhbmNlbC1jbGVhci1jYW52YXMtYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicHVibGlzaC1saWJyYXJ5X19idXR0b25zLS1jYW5jZWxcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxUb29sQnV0dG9uXG4gICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICB0aXRsZT17dChcImJ1dHRvbnMuc3VibWl0XCIpfVxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPXt0KFwiYnV0dG9ucy5zdWJtaXRcIil9XG4gICAgICAgICAgICAgIGxhYmVsPXt0KFwiYnV0dG9ucy5zdWJtaXRcIil9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInB1Ymxpc2gtbGlicmFyeV9fYnV0dG9ucy0tY29uZmlybVwiXG4gICAgICAgICAgICAgIGlzTG9hZGluZz17aXNTdWJtaXR0aW5nfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9mb3JtPlxuICAgICAgKSA6IChcbiAgICAgICAgPHAgc3R5bGU9e3sgcGFkZGluZzogXCIxZW1cIiwgdGV4dEFsaWduOiBcImNlbnRlclwiLCBmb250V2VpZ2h0OiA1MDAgfX0+XG4gICAgICAgICAge3QoXCJwdWJsaXNoRGlhbG9nLmF0bGVhc3RPbmVMaWJJdGVtXCIpfVxuICAgICAgICA8L3A+XG4gICAgICApfVxuICAgIDwvRGlhbG9nPlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUHVibGlzaExpYnJhcnk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/PublishLibrary.tsx\n");
1949
1949
 
1950
1950
  /***/ }),
1951
1951
 
@@ -2924,7 +2924,7 @@ module.exports = JSON.parse('{"ar-SA":98,"bg-BG":66,"bn-BD":0,"ca-ES":88,"cs-CZ"
2924
2924
  /***/ ((module) => {
2925
2925
 
2926
2926
  "use strict";
2927
- module.exports = JSON.parse('{"name":"@dwelle/excalidraw","version":"0.3.17","main":"main.js","types":"types/packages/excalidraw/index.d.ts","files":["dist/*","types/*"],"publishConfig":{"access":"public"},"description":"Excalidraw as a React component","license":"MIT","keywords":[],"browserslist":{"production":[">0.2%","not dead","not ie <= 11","not op_mini all","not safari < 12","not kaios <= 2.5","not edge < 79","not chrome < 70","not and_uc < 13","not samsung < 10"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"peerDependencies":{"react":"^17.0.2","react-dom":"^17.0.2"},"devDependencies":{"@babel/core":"7.16.0","@babel/plugin-transform-arrow-functions":"7.16.0","@babel/plugin-transform-async-to-generator":"7.16.0","@babel/plugin-transform-runtime":"7.16.0","@babel/plugin-transform-typescript":"7.16.1","@babel/preset-env":"7.16.0","@babel/preset-react":"7.16.0","@babel/preset-typescript":"7.16.0","autoprefixer":"10.4.0","babel-loader":"8.2.3","babel-plugin-transform-class-properties":"6.24.1","cross-env":"7.0.3","css-loader":"6.5.1","file-loader":"6.2.0","mini-css-extract-plugin":"2.4.4","postcss-loader":"6.2.0","sass-loader":"12.3.0","terser-webpack-plugin":"5.2.5","ts-loader":"9.2.6","typescript":"4.5.2","webpack":"5.64.0","webpack-bundle-analyzer":"4.5.0","webpack-cli":"4.9.1"},"repository":"https://github.com/dwelle/excalidraw","homepage":"https://github.com/excalidraw/excalidraw/tree/master/src/packages/excalidraw","scripts":{"gen:types":"tsc --project ../../../tsconfig-types.json","build:umd":"cross-env NODE_ENV=production webpack --config webpack.prod.config.js && cross-env NODE_ENV=development webpack --config webpack.dev.config.js && yarn gen:types","build:umd:withAnalyzer":"cross-env NODE_ENV=production ANALYZER=true webpack --config webpack.prod.config.js","pack":"yarn build:umd && yarn pack"}}');
2927
+ module.exports = JSON.parse('{"name":"@dwelle/excalidraw","version":"0.3.19","main":"main.js","types":"types/packages/excalidraw/index.d.ts","files":["dist/*","types/*"],"publishConfig":{"access":"public"},"description":"Excalidraw as a React component","license":"MIT","keywords":[],"browserslist":{"production":[">0.2%","not dead","not ie <= 11","not op_mini all","not safari < 12","not kaios <= 2.5","not edge < 79","not chrome < 70","not and_uc < 13","not samsung < 10"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"peerDependencies":{"react":"^17.0.2","react-dom":"^17.0.2"},"devDependencies":{"@babel/core":"7.16.0","@babel/plugin-transform-arrow-functions":"7.16.0","@babel/plugin-transform-async-to-generator":"7.16.0","@babel/plugin-transform-runtime":"7.16.0","@babel/plugin-transform-typescript":"7.16.1","@babel/preset-env":"7.16.0","@babel/preset-react":"7.16.0","@babel/preset-typescript":"7.16.0","autoprefixer":"10.4.0","babel-loader":"8.2.3","babel-plugin-transform-class-properties":"6.24.1","cross-env":"7.0.3","css-loader":"6.5.1","file-loader":"6.2.0","mini-css-extract-plugin":"2.4.4","postcss-loader":"6.2.0","sass-loader":"12.3.0","terser-webpack-plugin":"5.2.5","ts-loader":"9.2.6","typescript":"4.5.2","webpack":"5.64.0","webpack-bundle-analyzer":"4.5.0","webpack-cli":"4.9.1"},"repository":"https://github.com/dwelle/excalidraw","homepage":"https://github.com/excalidraw/excalidraw/tree/master/src/packages/excalidraw","scripts":{"gen:types":"tsc --project ../../../tsconfig-types.json","build:umd":"cross-env NODE_ENV=production webpack --config webpack.prod.config.js && cross-env NODE_ENV=development webpack --config webpack.dev.config.js && yarn gen:types","build:umd:withAnalyzer":"cross-env NODE_ENV=production ANALYZER=true webpack --config webpack.prod.config.js","pack":"yarn build:umd && yarn pack"}}');
2928
2928
 
2929
2929
  /***/ })
2930
2930