d2d.emegrendeles.hu/public/js/module.js
2026-03-25 22:21:48 +01:00

76 lines
340 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* ATTENTION: An "eval-source-map" devtool has been used.
* This devtool is neither made for production nor for readable output files.
* It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
* or disable the default devtool with "devtool: false".
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
*/
/******/ (() => { // webpackBootstrap
/******/ var __webpack_modules__ = ({
/***/ "./resources/js/moduleJs/moduleBase.js"
/*!*********************************************!*\
!*** ./resources/js/moduleJs/moduleBase.js ***!
\*********************************************/
() {
eval("{function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nvar ModuleBase = /*#__PURE__*/function () {\n function ModuleBase(options, data) {\n _classCallCheck(this, ModuleBase);\n _defineProperty(this, \"Opts\", {\n testMode: false,\n CSSSelectorContainer: '',\n CSSSelectorForm: '',\n token: null,\n URL: {\n getDataTableContent: null,\n checkReadyToSend: null,\n index: null,\n show: null,\n edit: null,\n create: null,\n store: null,\n update: null,\n destroy: null\n },\n dataTable: {\n orderDirective: [1, 'asc'],\n CSSSelector: null,\n advanceSearchParameter: {}\n }\n });\n _defineProperty(this, \"data\", null);\n _defineProperty(this, \"root\", this);\n this.Opts.CSSSelectorContainer = '.container' + this.constructor.name;\n this.Opts.CSSSelectorForm = '.' + this.constructor.name + 'Form';\n this.Opts.dataTable.CSSSelector = this.Opts.CSSSelectorContainer + ' .dataTable';\n this.root = this;\n if (data !== \"undefined\" || data != null) {\n this.data = data;\n }\n if (options != null) {\n $.extend(this.Opts, options);\n }\n }\n return _createClass(ModuleBase, [{\n key: \"init\",\n value: function init(options, data) {\n if (data !== \"undefined\" || data != null) {\n this.data = data;\n }\n if (options != null) {\n $.extend(this.Opts, options);\n }\n }\n }, {\n key: \"datatableRowActionButtonClick\",\n value: function datatableRowActionButtonClick(event, rootObj, options) {\n debug('call ModuleBase.datatableRowActionButtonClick');\n debug(rootObj);\n var node = $(event[0].currentTarget);\n var row = $(rootObj.Opts.dataTable.CSSSelector).DataTable().row(node.parents('tr'));\n var rowData = row.data();\n var actionName = 'datatableRowAction' + node.data('buttontype').capitalize();\n if (typeof rootObj[actionName] === \"function\") {\n return rootObj[actionName](rowData, node);\n }\n }\n }, {\n key: \"datatableRowActionAttachment\",\n value: function datatableRowActionAttachment(rowData, node, options) {\n debug('call ModuleBase.datatableRowActionAttachment ');\n var fileName = 'downloadedFile';\n if (typeof options.defaultFileName !== \"undefined\") {\n fileName = options.defaultFileName;\n }\n if (rowData.fileUrl) {\n if (rowData.fileName) {\n fileName = rowData.fileName;\n }\n $.ajax({\n url: rowData.fileUrl,\n method: 'GET',\n xhrFields: {\n responseType: 'blob'\n },\n success: function success(data) {\n var a = document.createElement('a');\n var url = window.URL.createObjectURL(data);\n a.href = url;\n a.download = fileName;\n document.body.append(a);\n a.click();\n a.remove();\n window.URL.revokeObjectURL(url);\n }\n });\n } else {\n Toast.create(\"Hiba!\", 'Nincs csatolt fájl!', TOAST_STATUS.DANGER, 10000);\n }\n }\n }, {\n key: \"datatableRowActionView\",\n value: function datatableRowActionView(rowData, node, rootObj, options) {\n debug('call ModuleBase.datatableRowActionView');\n var ajaxUrl = rootObj.Opts.URL.show.replace('%id%', rowData.id);\n /*\r\n console.log(Opts.URL);\r\n */\n console.log(ajaxUrl);\n APP.loadMainContent(ajaxUrl, rootObj.initViewShow);\n console.log('ModuleBase.datatableRowActionEdit End');\n }\n }]);\n}();\nwindow.ModuleBase = ModuleBase;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNb2R1bGVCYXNlIiwib3B0aW9ucyIsImRhdGEiLCJfY2xhc3NDYWxsQ2hlY2siLCJfZGVmaW5lUHJvcGVydHkiLCJ0ZXN0TW9kZSIsIkNTU1NlbGVjdG9yQ29udGFpbmVyIiwiQ1NTU2VsZWN0b3JGb3JtIiwidG9rZW4iLCJVUkwiLCJnZXREYXRhVGFibGVDb250ZW50IiwiY2hlY2tSZWFkeVRvU2VuZCIsImluZGV4Iiwic2hvdyIsImVkaXQiLCJjcmVhdGUiLCJzdG9yZSIsInVwZGF0ZSIsImRlc3Ryb3kiLCJkYXRhVGFibGUiLCJvcmRlckRpcmVjdGl2ZSIsIkNTU1NlbGVjdG9yIiwiYWR2YW5jZVNlYXJjaFBhcmFtZXRlciIsIk9wdHMiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJyb290IiwiJCIsImV4dGVuZCIsIl9jcmVhdGVDbGFzcyIsImtleSIsInZhbHVlIiwiaW5pdCIsImRhdGF0YWJsZVJvd0FjdGlvbkJ1dHRvbkNsaWNrIiwiZXZlbnQiLCJyb290T2JqIiwiZGVidWciLCJub2RlIiwiY3VycmVudFRhcmdldCIsInJvdyIsIkRhdGFUYWJsZSIsInBhcmVudHMiLCJyb3dEYXRhIiwiYWN0aW9uTmFtZSIsImNhcGl0YWxpemUiLCJkYXRhdGFibGVSb3dBY3Rpb25BdHRhY2htZW50IiwiZmlsZU5hbWUiLCJkZWZhdWx0RmlsZU5hbWUiLCJmaWxlVXJsIiwiYWpheCIsInVybCIsIm1ldGhvZCIsInhockZpZWxkcyIsInJlc3BvbnNlVHlwZSIsInN1Y2Nlc3MiLCJhIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50Iiwid2luZG93IiwiY3JlYXRlT2JqZWN0VVJMIiwiaHJlZiIsImRvd25sb2FkIiwiYm9keSIsImFwcGVuZCIsImNsaWNrIiwicmVtb3ZlIiwicmV2b2tlT2JqZWN0VVJMIiwiVG9hc3QiLCJUT0FTVF9TVEFUVVMiLCJEQU5HRVIiLCJkYXRhdGFibGVSb3dBY3Rpb25WaWV3IiwiYWpheFVybCIsInJlcGxhY2UiLCJpZCIsImNvbnNvbGUiLCJsb2ciLCJBUFAiLCJsb2FkTWFpbkNvbnRlbnQiLCJpbml0Vmlld1Nob3ciXSwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL21vZHVsZUpzL21vZHVsZUJhc2UuanM/YzIwYiJdLCJzb3VyY2VzQ29udGVudCI6WyJjbGFzcyBNb2R1bGVCYXNlIHtcclxuICAgIE9wdHMgPSB7XHJcbiAgICAgICAgdGVzdE1vZGU6IGZhbHNlLFxyXG4gICAgICAgIENTU1NlbGVjdG9yQ29udGFpbmVyOiAnJyxcclxuICAgICAgICBDU1NTZWxlY3RvckZvcm06ICcnLFxyXG4gICAgICAgIHRva2VuOiBudWxsLFxyXG4gICAgICAgIFVSTDoge1xyXG4gICAgICAgICAgICBnZXREYXRhVGFibGVDb250ZW50OiBudWxsLFxyXG4gICAgICAgICAgICBjaGVja1JlYWR5VG9TZW5kOiBudWxsLFxyXG4gICAgICAgICAgICBpbmRleDogbnVsbCxcclxuICAgICAgICAgICAgc2hvdzogbnVsbCxcclxuICAgICAgICAgICAgZWRpdDogbnVsbCxcclxuICAgICAgICAgICAgY3JlYXRlOiBudWxsLFxyXG4gICAgICAgICAgICBzdG9yZTogbnVsbCxcclxuICAgICAgICAgICAgdXBkYXRlOiBudWxsLFxyXG4gICAgICAgICAgICBkZXN0cm95OiBudWxsLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZGF0YVRhYmxlOiB7XHJcbiAgICAgICAgICAgIG9yZGVyRGlyZWN0aXZlOiBbMSwgJ2FzYyddLFxyXG4gICAgICAgICAgICBDU1NTZWxlY3RvcjogbnVsbCxcclxuICAgICAgICAgICAgYWR2YW5jZVNlYXJjaFBhcmFtZXRlcjp7fVxyXG4gICAgICAgIH0sXHJcbiAgICB9O1xyXG4gICAgZGF0YSA9IG51bGw7XHJcbiAgICByb290ID0gdGhpcztcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zLCBkYXRhKSB7XHJcbiAgICAgICAgdGhpcy5PcHRzLkNTU1NlbGVjdG9yQ29udGFpbmVyID0gJy5jb250YWluZXInICsgdGhpcy5jb25zdHJ1Y3Rvci5uYW1lO1xyXG4gICAgICAgIHRoaXMuT3B0cy5DU1NTZWxlY3RvckZvcm0gPSAnLicgKyB0aGlzLmNvbnN0cnVjdG9yLm5hbWUgKyAnRm9ybSc7XHJcbiAgICAgICAgdGhpcy5PcHRzLmRhdGFUYWJsZS5DU1NTZWxlY3RvciA9IHRoaXMuT3B0cy5DU1NTZWxlY3RvckNvbnRhaW5lciArICcgLmRhdGFUYWJsZSc7XHJcbiAgICAgICAgdGhpcy5yb290ID0gdGhpcztcclxuICAgICAgICBpZiAoZGF0YSAhPT0gXCJ1bmRlZmluZWRcIiB8fCBkYXRhICE9IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhID0gZGF0YTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG9wdGlvbnMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAkLmV4dGVuZCh0aGlzLk9wdHMsIG9wdGlvbnMpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpbml0KG9wdGlvbnMsIGRhdGEpIHtcclxuICAgICAgICBpZiAoZGF0YSAhPT0gXCJ1bmRlZmluZWRcIiB8fCBkYXRhICE9IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhID0gZGF0YTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG9wdGlvbnMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAkLmV4dGVuZCh0aGlzLk9wdHMsIG9wdGlvbnMpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBkYXRhdGFibGVSb3dBY3Rpb25CdXR0b25DbGljayhldmVudCxyb290T2JqLG9wdGlvbnMpIHtcclxuICAgICAgICBkZWJ1ZygnY2FsbCBNb2R1bGVCYXNlLmRhdGF0YWJsZVJvd0FjdGlvbkJ1dHRvbkNsaWNrJyk7XHJcbiAgICAgICAgZGVidWcocm9vdE9iaik7XHJcbiAgICAgICAgbGV0IG5vZGUgPSAkKGV2ZW50WzBdLmN1cnJlbnRUYXJnZXQpO1xyXG4gICAgICAgIGxldCByb3cgPSAkKHJvb3RPYmouT3B0cy5kYXRhVGFibGUuQ1NTU2VsZWN0b3IpLkRhdGFUYWJsZSgpLnJvdyhub2RlLnBhcmVudHMoJ3RyJykpO1xyXG4gICAgICAgIGxldCByb3dEYXRhID0gcm93LmRhdGEoKTtcclxuICAgICAgICBsZXQgYWN0aW9uTmFtZSA9ICdkYXRhdGFibGVSb3dBY3Rpb24nICsgbm9kZS5kYXRhKCdidXR0b250eXBlJykuY2FwaXRhbGl6ZSgpO1xyXG4gICAgICAgIGlmICh0eXBlb2Ygcm9vdE9ialthY3Rpb25OYW1lXSA9PT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgICAgIHJldHVybiByb290T2JqW2FjdGlvbk5hbWVdKHJvd0RhdGEsIG5vZGUpXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGRhdGF0YWJsZVJvd0FjdGlvbkF0dGFjaG1lbnQocm93RGF0YSxub2RlLG9wdGlvbnMpIHtcclxuICAgICAgICBkZWJ1ZygnY2FsbCBNb2R1bGVCYXNlLmRhdGF0YWJsZVJvd0FjdGlvbkF0dGFjaG1lbnQgJyk7XHJcbiAgICAgICAgbGV0IGZpbGVOYW1lPSdkb3dubG9hZGVkRmlsZSc7XHJcbiAgICAgICAgaWYodHlwZW9mIG9wdGlvbnMuZGVmYXVsdEZpbGVOYW1lIT09IFwidW5kZWZpbmVkXCIpe1xyXG4gICAgICAgICAgICBmaWxlTmFtZT1vcHRpb25zLmRlZmF1bHRGaWxlTmFtZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYocm93RGF0YS5maWxlVXJsKXtcclxuICAgICAgICAgICAgaWYocm93RGF0YS5maWxlTmFtZSl7XHJcbiAgICAgICAgICAgICAgICBmaWxlTmFtZT1yb3dEYXRhLmZpbGVOYW1lO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICQuYWpheCh7XHJcbiAgICAgICAgICAgICAgICB1cmw6IHJvd0RhdGEuZmlsZVVybCxcclxuICAgICAgICAgICAgICAgIG1ldGhvZDogJ0dFVCcsXHJcbiAgICAgICAgICAgICAgICB4aHJGaWVsZHM6IHtcclxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdibG9iJ1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgIGEuaHJlZiA9IHVybDtcclxuICAgICAgICAgICAgICAgICAgICBhLmRvd25sb2FkID0gZmlsZU5hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmQoYSk7XHJcbiAgICAgICAgICAgICAgICAgICAgYS5jbGljaygpO1xyXG4gICAgICAgICAgICAgICAgICAgIGEucmVtb3ZlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICBUb2FzdC5jcmVhdGUoXCJIaWJhIVwiLCAnTmluY3MgY3NhdG9sdCBmw6FqbCEnLCBUT0FTVF9TVEFUVVMuREFOR0VSLCAxMDAwMCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgICBkYXRhdGFibGVSb3dBY3Rpb25WaWV3KHJvd0RhdGEsbm9kZSxyb290T2JqLG9wdGlvbnMpIHtcclxuICAgICAgICBkZWJ1ZygnY2FsbCBNb2R1bGVCYXNlLmRhdGF0YWJsZVJvd0FjdGlvblZpZXcnKTtcclxuICAgICAgICBsZXQgYWpheFVybCA9IHJvb3RPYmouT3B0cy5VUkwuc2hvdy5yZXBsYWNlKCclaWQlJywgcm93RGF0YS5pZCk7XHJcbiAgICAgICAgLypcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKE9wdHMuVVJMKTtcclxuICAgICAgICAqL1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGFqYXhVcmwpO1xyXG4gICAgICAgIEFQUC5sb2FkTWFpbkNvbnRlbnQoYWpheFVybCwgcm9vdE9iai5pbml0Vmlld1Nob3cpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdNb2R1bGVCYXNlLmRhdGF0YWJsZVJvd0FjdGlvbkVkaXQgRW5kJyk7XHJcbiAgICB9XHJcblxyXG59XHJcbndpbmRvdy5Nb2R1bGVCYXNlPU1vZHVsZUJhc2U7XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztJQUFNQSxVQUFVO0VBMEJaLFNBQUFBLFdBQVlDLE9BQU8sRUFBRUMsSUFBSSxFQUFFO0lBQUFDLGVBQUEsT0FBQUgsVUFBQTtJQUFBSSxlQUFBLGVBekJwQjtNQUNIQyxRQUFRLEVBQUUsS0FBSztNQUNmQyxvQkFBb0IsRUFBRSxFQUFFO01BQ3hCQyxlQUFlLEVBQUUsRUFBRTtNQUNuQkMsS0FBSyxFQUFFLElBQUk7TUFDWEMsR0FBRyxFQUFFO1FBQ0RDLG1CQUFtQixFQUFFLElBQUk7UUFDekJDLGdCQUFnQixFQUFFLElBQUk7UUFDdEJDLEtBQUssRUFBRSxJQUFJO1FBQ1hDLElBQUksRUFBRSxJQUFJO1FBQ1ZDLElBQUksRUFBRSxJQUFJO1FBQ1ZDLE1BQU0sRUFBRSxJQUFJO1FBQ1pDLEtBQUssRUFBRSxJQUFJO1FBQ1hDLE1BQU0sRUFBRSxJQUFJO1FBQ1pDLE9BQU8sRUFBRTtNQUNiLENBQUM7TUFDREMsU0FBUyxFQUFFO1FBQ1BDLGNBQWMsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUM7UUFDMUJDLFdBQVcsRUFBRSxJQUFJO1FBQ2pCQyxzQkFBc0IsRUFBQyxDQUFDO01BQzVCO0lBQ0osQ0FBQztJQUFBbEIsZUFBQSxlQUNNLElBQUk7SUFBQUEsZUFBQSxlQUNKLElBQUk7SUFHUCxJQUFJLENBQUNtQixJQUFJLENBQUNqQixvQkFBb0IsR0FBRyxZQUFZLEdBQUcsSUFBSSxDQUFD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QUU7VUFDbEIsQ0FBQztVQUNEQyxPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBWXBELElBQUksRUFBRTtZQUNyQixJQUFJcUQsQ0FBQyxHQUFHQyxRQUFRLENBQUNDLGFBQWEsQ0FBQyxHQUFHLENBQUM7WUFDbkMsSUFBSVAsR0FBRyxHQUFHUSxNQUFNLENBQUNqRCxHQUFHLENBQUNrRCxlQUFlLENBQUN6RCxJQUFJLENBQUM7WUFDMUNxRCxDQUFDLENBQUNLLElBQUksR0FBR1YsR0FBRztZQUNaSyxDQUFDLENBQUNNLFFBQVEsR0FBR2YsUUFBUTtZQUNyQlUsUUFBUSxDQUFDTSxJQUFJLENBQUNDLE1BQU0sQ0FBQ1IsQ0FBQyxDQUFDO1lBQ3ZCQSxDQUFDLENBQUNTLEtBQUssQ0FBQyxDQUFDO1lBQ1RULENBQUMsQ0FBQ1UsTUFBTSxDQUFDLENBQUM7WUFDVlAsTUFBTSxDQUFDakQsR0FBRyxDQUFDeUQsZUFBZSxDQUFDaEIsR0FBRyxDQUFDO1VBQ25DO1FBQ0osQ0FBQyxDQUFDO01BRU4sQ0FBQyxNQUFJO1FBQ0RpQixLQUFLLENBQUNwRCxNQUFNLENBQUMsT0FBTyxFQUFFLHFCQUFxQixFQUFFcUQsWUFBWSxDQUFDQyxNQUFNLEVBQUUsS0FBSyxDQUFDO01BQzVFO0lBRUo7RUFBQztJQUFBdkMsR0FBQTtJQUFBQyxLQUFBLEVBRUQsU0FBQXVDLHNCQUFzQkEsQ0FBQzVCLE9BQU8sRUFBQ0wsSUFBSSxFQUFDRixPQUFPLEVBQUNsQyxPQUFPLEVBQUU7TUFDakRtQyxLQUFLLENBQUMsd0NBQXdDLENBQUM7TUFDL0MsSUFBSW1DLE9BQU8sR0FBR3BDLE9BQU8sQ0FBQ1osSUFBSSxDQUFDZCxHQUFHLENBQUNJLElBQUksQ0FBQzJELE9BQU8sQ0FBQyxNQUFNLEVBQUU5QixPQUFPLENBQUMrQixFQUFFLENBQUM7TUFDL0Q7QUFDUjtBQUNBO01BQ1FDLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDSixPQUFPLENBQUM7TUFDcEJLLEdBQUcsQ0FBQ0MsZUFBZSxDQUFDTixPQUFPLEVBQUVwQyxPQUFPLENBQUMyQyxZQUFZLENBQUM7TUFDbERKLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDLHVDQUF1QyxDQUFDO0lBQ3hEO0VBQUM7QUFBQTtBQUdMakIsTUFBTSxDQUFDMUQsVUFBVSxHQUFDQSxVQUFVIiwiaWdub3JlTGlzdCI6W10sImZpbGUiOiIuL3Jlc291cmNlcy9qcy9tb2R1bGVKcy9tb2R1bGVCYXNlLmpzIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./resources/js/moduleJs/moduleBase.js\n\n}");
/***/ },
/***/ "./resources/js/moduleJs/order.js"
/*!****************************************!*\
!*** ./resources/js/moduleJs/order.js ***!
\****************************************/
() {
eval("{function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t[\"return\"] || t[\"return\"](); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\nfunction _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\nfunction _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\nfunction _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\nwindow.OrderModulDefault = {\n actionFunction: function actionFunction() {}\n};\nvar DataModelOrder = /*#__PURE__*/function (_DataModel) {\n /*\r\n * Constructor\r\n */\n function DataModelOrder(data, options) {\n var _this;\n _classCallCheck(this, DataModelOrder);\n _this = _callSuper(this, DataModelOrder, [data, options]);\n if (typeof _this.productSelected === \"undefined\") {\n _this.productSelected = {};\n }\n if (typeof _this.productComment === \"undefined\") {\n _this.productComment = {};\n }\n console.log(_this.constructor.name + ' constructor called');\n return _this;\n }\n _inherits(DataModelOrder, _DataModel);\n return _createClass(DataModelOrder);\n}(DataModel);\n;\nwindow.DataModelOrder = DataModelOrder;\nwindow.Stepper = function () {\n /*\r\n * Variables accessible\r\n * in the class\r\n */\n var Opts = {\n complete: ['supplier'],\n available: ['supplier', 'parameter', 'productSelect', 'invoice', 'send'],\n enable: ['supplier', 'invoice'],\n load: [],\n excludeLoaded: ['invoice', 'send'],\n loaded: [],\n active: false,\n URL: {\n create: ''\n },\n UrlData: false,\n onAfterLoad: function onAfterLoad() {},\n onAfterActivate: function onAfterActivate() {},\n autoCallback: {\n 'invoice': {\n onAfterActivate: function onAfterActivate() {}\n },\n 'send': {\n onAfterActivate: function onAfterActivate() {}\n }\n },\n nowLoaded: false\n };\n var root = this;\n /*\r\n * Constructor\r\n */\n this.construct = function (options) {\n $.extend(Opts, options);\n };\n this.getOpts = function () {\n return Opts;\n };\n this.setOpts = function (options) {\n $.extend(Opts, options);\n };\n this.init = function (options) {\n $.extend(Opts, options);\n debug(Opts);\n $('.step').each(function () {\n var stepName = $(this).data('stepname');\n if (Opts.complete.includes(stepName)) {\n root.setCompleted(stepName);\n }\n if (Opts.enable.includes(stepName)) {\n root.setEnabled(stepName);\n }\n if (Opts.load.includes(stepName)) {\n root.loadStepContent(stepName);\n }\n if (Opts.active === stepName) {\n root.setActive(stepName);\n }\n });\n root.bindClickAction();\n };\n this.bindClickAction = function () {\n var stepClickButtons = $('.stepClick');\n stepClickButtons.off('click');\n stepClickButtons.on('click', root.stepClick);\n };\n this.setCompleted = function (stepName) {\n console.log(stepName + ' completed');\n $('.step[data-stepName=\"' + stepName + '\"]').addClass('completed');\n };\n this.unsetCompleted = function (stepName) {\n console.log(stepName + ' Uncompleted');\n $('.step[data-stepName=\"' + stepName + '\"]').removeClass('completed');\n Opts.complete = arrayRemove(Opts.complete, stepName);\n };\n this.unsetEnabled = function (stepName) {\n console.log(stepName + ' Un enabled');\n $('.click' + stepName).contents().unwrap();\n Opts.enable = arrayRemove(Opts.enable, stepName);\n };\n this.setEnabled = function (stepName) {\n console.log(stepName + ' enabled');\n var stepItem = $('.step[data-stepName=\"' + stepName + '\"]');\n stepItem.html('<a class=\"stepClick click' + stepName + '\" data-stepName=\"' + stepName + '\" href=\"#\">' + stepItem.html() + '</a>');\n root.bindClickAction();\n //$('.stepClick').click(root.stepClick);\n };\n this.addEnabled = function (stepName) {\n if (!Opts.enable.includes(stepName)) {\n Opts.enable.push(stepName);\n }\n root.setEnabled(stepName);\n };\n this.addCompleted = function (stepName) {\n if (!Opts.complete.includes(stepName)) {\n Opts.complete.push(stepName);\n }\n root.setCompleted(stepName);\n root.bindClickAction();\n };\n this.loadStepContent = function (stepName) {\n var data = {\n 'type': stepName\n };\n $.extend(data, Opts.UrlData);\n $.ajax({\n async: true,\n type: \"GET\",\n url: Opts.URL.create,\n data: data,\n cache: false,\n success: function success(result) {\n var container = $('.SC' + stepName.capitalize());\n if ($.inArray(stepName, Opts.excludeLoaded) == -1) {\n Opts.loaded.push(stepName);\n } else {\n console.log('excluded View');\n }\n container.html(result);\n if (Opts.nowLoaded) {\n Opts.nowLoaded(stepName);\n }\n Opts.onAfterLoad();\n }\n });\n };\n this.clearLoaded = function () {\n Opts.loaded = ['supplier'];\n $('.stepContainer').each(function () {\n /*\r\n console.log(this.classList);\r\n console.log(this.classList.contains('SCSupplier'));\r\n console.log($(this).attr('class'));\r\n */\n if (!this.classList.contains('SCSupplier')) {\n $(this).html('');\n }\n });\n };\n this.setActiveFinish = function (stepName) {\n var container = $('.SC' + stepName.capitalize());\n if (stepName === 'productSelect') {\n $('.containerStepper').addClass('activeSideBar');\n } else {\n $('.containerStepper').removeClass('activeSideBar');\n }\n debug('setActiveFinish show:' + stepName);\n container.show();\n Opts.nowLoaded = false;\n root.active = stepName;\n Opts.onAfterActivate();\n if (typeof Opts.autoCallback[stepName] !== 'undefined') {\n Opts.autoCallback[stepName].onAfterActivate();\n }\n };\n this.setActive = function (stepName) {\n $('.stepContainer').hide();\n if (!Opts.loaded.includes(stepName)) {\n root.loadStepContent(stepName);\n Opts.nowLoaded = this.setActiveFinish;\n } else {\n this.setActiveFinish(stepName);\n }\n };\n this.stepClick = function (event) {\n event.preventDefault();\n var stepName = $(event.currentTarget).data('stepname');\n console.log('setActive:' + stepName);\n root.setActive(stepName);\n };\n};\nwindow.OrderModule = function () {\n /*\r\n * Variables accessible\r\n * in the class\r\n */\n var Opts = {\n testMode: false,\n needStepper: true,\n CSSSelectorForm: '.orderParameterForm',\n defaultDeliveryDate: '',\n dataSyncPauseTime: 500,\n token: null,\n URL: {\n root: null,\n getDataTableContentProductList: null,\n checkReadyToSend: null,\n index: null,\n show: null,\n edit: null,\n create: null,\n store: null,\n update: null,\n destroy: null,\n toggleFavorites: null\n }\n };\n var PublicVar = {};\n var PublicVar2 = {\n 'asd': '21'\n };\n var ApiToken = null;\n var Order = null;\n var root = this;\n var viewInicialized = [];\n this.setOpts = function (options) {\n $.extend(Opts, options);\n };\n this.getOpts = function () {\n return Opts;\n };\n this.clickOrderEdit = function (data) {\n debug('clickEdit');\n debug(data);\n var ajaxUrl = Opts.URL.edit.replace('%id%', data.id);\n APP.loadMainContent(ajaxUrl);\n /* let ajaxData={};\r\n ajaxData._token=Opts.token;\r\n $.extend(ajaxData,Order);\r\n let ajaxUrl=Opts.URL.edit.replace('%id%',data.id);\r\n $.ajax({\r\n url: ajaxUrl,\r\n method:'GET',\r\n data:ajaxData,\r\n success:function (response) {\r\n if(response.success){\r\n let orderData=response.data;\r\n orderData.supplierId=orderData.supplier_id;\r\n delete(orderData.supplier_id);\r\n root.initOrder(orderData);\r\n root.initStepper();\r\n //root.afterOrderSetSupplierOk(data.data);\r\n }\r\n }\r\n });*/\n };\n this.afterOrderDeleted = function (data) {\n if (data.success == true) {\n debug('Order delete success');\n APP.loadMainContent(Opts.URL.index);\n } else {\n Toast.create(\"Error deleted !\", '', TOAST_STATUS.DANGER, 5000);\n }\n };\n this.clickOrderDeleteConfirmed = function (event) {\n debug('clickOrderDeleteConfirmed');\n debug(event);\n debug(event.data);\n $('#dialogModal').modal('hide');\n var ajaxData = {};\n ajaxData._token = Opts.token;\n var ajaxUrl = Opts.URL.destroy.replace('%id%', event.data.id);\n $.ajax({\n url: ajaxUrl,\n data: ajaxData,\n method: \"DELETE\",\n success: root.afterOrderDeleted\n //error:ajaxErrorHandler\n });\n };\n this.initViewOrderSelect = function () {\n debug('called initViewOrderSelect ');\n $('.ordersSelectTable button').off('click');\n $('.ordersSelectTable button').on('click', function () {\n var action = $(this).data('action');\n var orderId = $($(this).closest('tr')[0]).data('orderid');\n debug(action);\n debug(orderId);\n if (action == 'delete') {\n $('#dialogModal').on('show.bs.modal', function (event) {\n // If necessary, you could initiate an AJAX request here (and then do the updating in a callback).\n // Update the modal's content. We'll use jQuery here, but you could use a data binding library or other methods instead.\n var modal = $(this);\n modal.find('.modal-title').text('Megerősítés ');\n modal.find('.modal-body').text('Biztosan törli a megrendelést?');\n modal.find('.buttonYes').off('click');\n modal.find('.buttonYes').on('click', {\n id: orderId\n }, root.clickOrderDeleteConfirmed);\n });\n $('#dialogModal').modal('show');\n } else {\n root.clickOrderEdit({\n id: orderId\n });\n }\n });\n $('.buttonNew').off('click');\n $('.buttonNew').on('click', function () {\n APP.loadMainContent(Opts.URL.index, 'force=true');\n });\n };\n this.initStepper = function () {\n debug(Order.getData());\n viewInicialized = [];\n $('.statusNamePlace').text('Nincs elküldve');\n $('.statusNamePlace').addClass('statusBlink');\n root.setDeliveryDate('-');\n root.setSupplier('-');\n var unEnabled = ['parameter', 'productSelect', 'invoice', 'send'];\n $.each(unEnabled, function (index, value) {\n root.Stepper.unsetEnabled(value);\n root.Stepper.unsetCompleted(value);\n });\n debug(root.Stepper.getOpts()['available']);\n debug(Order.getData()['orderStatus']);\n var stepActive = 'supplier';\n var stepComplete = ['supplier'];\n var stepEnable = [];\n var stepOnAfterActivate = function stepOnAfterActivate() {};\n var avalaibleSteps = root.Stepper.getOpts()['available'];\n var stepUrlData = false;\n var stepAutoCallback = [];\n var _iterator = _createForOfIteratorHelper(avalaibleSteps),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _stepName = _step.value;\n stepOnAfterActivate = this['initView' + _stepName.capitalize()];\n var item = {};\n item['onAfterActivate'] = stepOnAfterActivate;\n stepAutoCallback[_stepName] = item;\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n debug(stepAutoCallback);\n debug(Order.getData()['id']);\n if (Order.getData()['id'] > 0) {\n debug('hajra');\n debug(Order.getData());\n if (Order.getData()['deliveryDate']) {\n root.setDeliveryDate(Order.getData()['deliveryDate']);\n /*\r\n @todo: weekly-t beallitani\r\n */\n }\n if (Order.getData()['supplierName']) {\n root.setSupplier(Order.getData()['supplierName']);\n }\n stepUrlData = {\n 'supplierId': Order.supplierId,\n id: Order.id\n };\n var _iterator2 = _createForOfIteratorHelper(avalaibleSteps),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var stepName = _step2.value;\n console.log(stepName);\n stepComplete.push(stepName);\n stepEnable.push(stepName);\n if (Order.getData()['orderStatus'] == stepName) {\n stepActive = stepName;\n /*\r\n debug('initView'+stepName.capitalize());\r\n if(stepName!=='invoice' && stepName!=='send'){\r\n stepOnAfterActivate=this['initView'+stepName.capitalize()];\r\n }else{\r\n stepOnAfterActivate=function (){};\r\n }\r\n */\n break;\n }\n }\n\n /*\r\n //refactored for loop\r\n var BreakException = {};\r\n try {\r\n avalaibleSteps.forEach(function(stepName) {\r\n console.log(stepName);\r\n stepComplete.push(stepName);\r\n stepEnable.push(stepName);\r\n if(Order.getData()['orderStatus']==stepName){\r\n stepActive=stepName;\r\n throw BreakException;\r\n }\r\n \r\n });\r\n } catch (e) {\r\n if (e !== BreakException) throw e;\r\n }*/\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n root.Stepper.init({\n complete: stepComplete,\n enable: stepEnable,\n loaded: [],\n active: stepActive,\n URL: {\n create: Opts.URL.create\n },\n UrlData: stepUrlData,\n onAfterActivate: stepOnAfterActivate,\n autoCallback: stepAutoCallback\n /*{\r\n invoice: {\r\n onAfterActivate:root.initViewInvoice\r\n },\r\n send: {\r\n onAfterActivate:root.initViewSend\r\n },\r\n }*/\n });\n };\n this.initOrder = function (data) {\n Order = new DataModelOrder(data);\n };\n this.init = function (options) {\n debug('OrderModul init called');\n $.extend(Opts, window.OrderModulDefault, options);\n Order = new DataModelOrder();\n if (Opts.needStepper) {\n if (typeof this.Stepper == 'undefined') {\n this.Stepper = new Stepper();\n }\n }\n if (Opts.testMode) {\n return root.testMode();\n }\n };\n this.setSupplier = function (supplierName, supplierId) {\n if (supplierName) {\n $('.supplierNamePlace').text(supplierName);\n }\n if (supplierId) {\n Order.setData({\n supplierId: supplierId\n });\n root.Stepper.setOpts({\n 'UrlData': {\n 'supplierId': supplierId\n }\n });\n }\n };\n this.setDeliveryDate = function (dateText, dateTextTo) {\n var dateTextHuman = dateText.replaceAll('-', '.') + '.';\n if (dateTextHuman.length < 5) {\n $('.deliveryDatePlace').text(dateText);\n return;\n }\n if (dateTextTo) {\n dateTextHuman += ' - ' + dateTextTo.replaceAll('-', '.') + '.';\n }\n $(Opts.CSSSelectorForm + ' .selectedDateText').text(dateTextHuman);\n $('.deliveryDatePlace').text(dateTextHuman);\n $(Opts.CSSSelectorForm + ' input[name=\"deliveryDate\"]').val(dateText);\n };\n this.getData = function () {\n return Order;\n };\n this.setSupplierCompleted = function () {\n console.log('bingo');\n root.initViewParameter();\n };\n this.afterOrderSetSupplierOk = function (data) {\n Toast.create(\"Supplier selected !\", data.supplier.name, TOAST_STATUS.INFO, 5000);\n root.setSupplier(data.supplier.name, data.supplier.id);\n Order.setData({\n id: data.id\n });\n root.Stepper.setOpts({\n 'UrlData': {\n 'supplierId': Order.supplierId,\n id: Order.id\n }\n });\n //root.Stepper.setOpts({onAfterLoad:root.setSupplierCompleted})\n root.Stepper.setEnabled('parameter');\n root.Stepper.addCompleted('parameter');\n root.Stepper.setCompleted('parameter');\n root.Stepper.setActive('parameter');\n };\n this.initViewSupplier = function () {\n debug('call initViewSupplier');\n root.Stepper.setOpts({\n onAfterLoad: function onAfterLoad() {}\n });\n $('.supplierItem').off('click');\n $('.supplierItem').on('click', function (event) {\n console.log(Order.getData());\n event.preventDefault();\n var supplierId = $(event.currentTarget).data('id');\n var supplierName = $(event.currentTarget).find('h5.card-title').text();\n if (typeof Order.supplierId == 'undefined') {\n //new order\n\n var ajaxData = {};\n ajaxData._token = Opts.token;\n ajaxData.supplierId = supplierId;\n ajaxData.storeType = 'supplierSelect';\n $.extend(ajaxData, Order);\n $.ajax({\n url: Opts.URL.store,\n method: 'POST',\n data: ajaxData,\n success: function success(data) {\n if (data.success) {\n root.afterOrderSetSupplierOk(data.data);\n }\n }\n });\n //Order.setData({supplierId:supplierId});\n } else {\n //ide kellene egy jo kis kerdes\n if (Order.supplierId != supplierId) {\n Toast.create(\"Supplier change to!\", supplierName, TOAST_STATUS.WARNING, 5000);\n root.Stepper.clearLoaded();\n Order = new DataModelOrder();\n //Order.setData({supplierId:supplierId});\n }\n }\n return;\n // removed by dead control flow\n\n // removed by dead control flow\n\n // removed by dead control flow\n\n\n //$('.supplierNamePlace').text(supplierName);\n // removed by dead control flow\n\n // removed by dead control flow\n\n //@todo:ide kell egy mentes!\n //@todo:mentes eredemenyekeppen lehet valtani\n // removed by dead control flow\n\n // removed by dead control flow\n\n // removed by dead control flow\n\n // removed by dead control flow\n\n // removed by dead control flow\n\n // removed by dead control flow\n\n });\n };\n this.checkContactNameField = function () {\n var CSSSelectorForm = '.orderParameterForm';\n var node = $(CSSSelectorForm + ' input[name=contactName]');\n if (node.val().length < 2) {\n node.removeClass('is-valid');\n node.addClass('is-invalid');\n return false;\n } else {\n node.addClass('is-valid');\n node.removeClass('is-invalid');\n return true;\n }\n };\n this.sendOrderDataToServer = function (updateType, callback, errorCallback) {\n var ajaxData = {};\n var ajaxUrl = Opts.URL.store;\n var ajaxMethod = \"POST\";\n if (Order.id) {\n ajaxUrl = Opts.URL.update.replace('%id%', Order.id);\n //ajaxMethod=\"PUT\";\n //ajaxData=new FormData($(CSSSelectorForm)[0]);\n ajaxData._method = 'PUT';\n }\n ajaxData._token = Opts.token;\n ajaxData.updateType = updateType;\n $.extend(ajaxData, Order);\n debug(Order);\n debug(ajaxData);\n debug('ajaxUrl:' + ajaxUrl);\n ajaxData = jsonToFormData(ajaxData);\n $.ajax({\n url: ajaxUrl,\n data: ajaxData,\n type: ajaxMethod,\n contentType: false,\n processData: false,\n success: function success(data) {\n debug('ajax returned data');\n debug(data);\n if (data.success) {\n //root.afterOrderSetSupplierOk(data.data);\n callback(data);\n }\n },\n error: function error(xhr, ajaxOptions, thrownError) {\n ajaxErrorHandler(xhr, ajaxOptions, thrownError);\n if (typeof errorCallback != 'undefined') {\n errorCallback(xhr.responseJSON);\n }\n }\n });\n };\n this.afterOrderSetParameterOk = function (data) {\n debug('called afterOrderSetParameterOk');\n root.Stepper.setOpts({\n 'UrlData': {\n 'supplierId': Order.supplierId,\n 'id': Order.id\n }\n });\n //root.Stepper.setOpts({onAfterLoad:root.setParameterCompleted})\n root.Stepper.setEnabled('productSelect');\n root.Stepper.addCompleted('productSelect');\n root.Stepper.setCompleted('productSelect');\n root.Stepper.setActive('productSelect');\n };\n this.selectCurrentWeek = function () {\n console.error('selectCurrentWeek');\n console.error($('.ui-datepicker').find('.ui-datepicker-current-day a'));\n $('.ui-datepicker').find('.ui-datepicker-current-selected-weekday a').addClass('ui-state-active');\n };\n this.weekHover = function () {\n console.error('hover Active');\n $('.ui-datepicker-calendar tr').off('mousemove');\n $('.ui-datepicker-calendar tr').off('mouseleave');\n $('.ui-datepicker-calendar tr').on('mousemove', function () {\n $(this).find('td a').addClass('ui-state-hover');\n });\n $('.ui-datepicker-calendar tr').on('mouseleave', function () {\n $(this).find('td a').removeClass('ui-state-hover');\n });\n };\n this.weekHoverSlow = function () {\n console.error('weekHoverSlow');\n if ($('.ui-datepicker-calendar tr').length < 1) {\n setTimeout(root.weekHoverSlow, 1);\n return;\n }\n root.weekHover();\n };\n this.initDatePicker = function (type) {\n console.error('asdasdadad');\n console.log('tipus' + type);\n var CSSSelectorForm = '.orderParameterForm';\n var startDate = new Date('1900-01-01');\n var endDate = new Date('1900-01-02');\n $(CSSSelectorForm + ' .datePicker').datepicker(\"destroy\");\n if (type == 'weekly') {\n $(CSSSelectorForm + ' .datePicker').datepicker({\n showOtherMonths: true,\n selectOtherMonths: true,\n showWeek: true,\n dateFormat: 'yy-mm-dd',\n firstDay: 1,\n minDate: new Date(),\n afterShow: function afterShow(dateText, inst) {\n root.weekHover();\n root.selectCurrentWeek();\n },\n onSelect: function onSelect(dateText, inst) {\n var date = $(this).datepicker('getDate');\n startDate = new getMonday(date);\n endDate = new Date(date.getFullYear(), date.getMonth(), date.getDate() - date.getDay() + 7);\n root.setDeliveryDate($.datepicker.formatDate('yy-mm-dd', startDate), $.datepicker.formatDate('yy-mm-dd', endDate));\n },\n beforeShow: function beforeShow() {\n console.group('beforeShow');\n console.log(startDate);\n console.log(endDate);\n //root.weekHoverSlow();\n console.groupEnd();\n },\n beforeShowDay: function beforeShowDay(date) {\n console.group('beforeShowDay');\n console.log(date.toLocaleDateString('hu-Hu'));\n var cssClass = '';\n if (date >= startDate && date <= endDate) {\n console.error(date.toLocaleDateString('hu-Hu'));\n cssClass = 'ui-datepicker-current-selected-weekday';\n //cssClass = 'ui-state-active';\n }\n console.log(cssClass);\n console.groupEnd();\n return [true, cssClass];\n },\n onChangeMonthYear: function onChangeMonthYear(year, month, inst) {\n //root.selectCurrentWeek();\n }\n });\n } else {\n $(CSSSelectorForm + ' .datePicker').datepicker({\n dateFormat: 'yy-mm-dd',\n minDate: new Date(),\n onSelect: function onSelect(dateText) {\n $(CSSSelectorForm + ' .selectedDateText').text(dateText);\n $('.deliveryDatePlace').text(dateText.replaceAll('-', '.') + '.');\n $(CSSSelectorForm + ' input[name=\"deliveryDate\"]').val(dateText);\n }\n });\n }\n };\n this.callChangeOrderType = function () {\n console.log(this);\n console.log(this.value);\n root.initDatePicker(this.value);\n //enum('daily', 'weekly')\n /*let CSSSelectorForm='.orderParameterForm';\r\n let node=$(CSSSelectorForm+' input[name=contactName]');\r\n if(node.val().length<2){\r\n node.removeClass('is-valid');\r\n node.addClass('is-invalid');\r\n return false;\r\n }else{\r\n node.addClass('is-valid');\r\n node.removeClass('is-invalid');\r\n return true;\r\n }\r\n */\n };\n this.initViewParameter = function () {\n debug('call initViewParameter');\n root.Stepper.setOpts({\n onAfterLoad: function onAfterLoad() {}\n });\n var CSSSelectorForm = '.orderParameterForm';\n $(CSSSelectorForm + ' .datePickerClick').click(function () {\n $(CSSSelectorForm + ' .datePicker').datepicker('show');\n });\n $(CSSSelectorForm + ' .orderParameterDeliveryAddress').select2({}).show();\n $(CSSSelectorForm + ' input[name=contactName]').off('blur');\n $(CSSSelectorForm + ' input[name=contactName]').off('keyup');\n $(CSSSelectorForm + ' input[name=contactName]').on('blur', root.checkContactNameField);\n $(CSSSelectorForm + ' input[name=contactName]').on('keyup', root.checkContactNameField);\n $(CSSSelectorForm + ' input[name=orderType]').off('change');\n $(CSSSelectorForm + ' input[name=orderType]').on('change', root.callChangeOrderType);\n $(CSSSelectorForm + ' .orderParameterNextButton').off('click');\n if (Order.getData()['id'] > 0) {\n if (Order.getData()['orderType'] == 'weekly') {\n root.initDatePicker(Order.getData()['orderType']);\n $(CSSSelectorForm + \" input[name=orderType][value=\" + Order.getData()['orderType'] + \"]\").prop('checked', true);\n var endDate = new Date(Order.getData()['deliveryDate']);\n endDate.setDate(endDate.getDate() + 6);\n root.setDeliveryDate(Order.getData()['deliveryDate'], $.datepicker.formatDate('yy-mm-dd', endDate));\n root.initDatePicker('weekly');\n } else {\n if (Order.getData()['deliveryDate']) {\n root.setDeliveryDate(Order.getData()['deliveryDate']);\n }\n root.initDatePicker('daily');\n }\n if (Order.getData()['contactName']) {\n $(CSSSelectorForm + ' input[name=contactName]').val(Order.getData()['contactName']);\n }\n if (Order.getData()['note']) {\n $(CSSSelectorForm + ' textarea[name=note]').val(Order.getData()['note']);\n }\n if (Order.getData()['deliveryAddressId']) {\n console.log($(CSSSelectorForm + ' select[name=deliveryAddressId]'));\n $(CSSSelectorForm + ' select[name=deliveryAddressId]').val(Order.getData()['deliveryAddressId']);\n }\n if (Order.getData()['customNotificationEmail']) {\n console.log($(CSSSelectorForm + ' select[name=customNotificationEmail]'));\n $(CSSSelectorForm + ' select[name=customNotificationEmail]').val(Order.getData()['customNotificationEmail']);\n }\n } else {\n root.initDatePicker('daily');\n }\n $(CSSSelectorForm + ' .orderParameterDeliveryAddress').select2({}).show();\n $(CSSSelectorForm + ' .orderParameterCustomNotificationEmail').select2({}).show();\n $(CSSSelectorForm).submit(function (event) {\n event.preventDefault();\n if ($(CSSSelectorForm)[0].checkValidity() === false) {\n debug('validaton false');\n event.stopPropagation();\n return;\n } else {\n debug('validaton ok');\n //do your ajax submition here\n }\n $('.deliveryDatePlace').text($(CSSSelectorForm + ' input[name=deliveryDate]').val().replaceAll('-', '.') + '.');\n Order.setData({\n contactName: $(CSSSelectorForm + ' input[name=contactName]').val(),\n note: $(CSSSelectorForm + ' textarea[name=note]').val(),\n orderType: $(CSSSelectorForm + ' input:checked[name=orderType]').val(),\n deliveryDate: $(CSSSelectorForm + ' input[name=deliveryDate]').val(),\n deliveryAddressId: $(CSSSelectorForm + ' select[name=deliveryAddressId]').val(),\n deliveryAddress: $(CSSSelectorForm + ' select[name=deliveryAddress]').val(),\n customNotificationEmail: $(CSSSelectorForm + ' select[name=customNotificationEmail]').val()\n });\n console.group('parameter form submit');\n console.error($(CSSSelectorForm + ' input:checked[name=orderType]').val());\n console.error($(CSSSelectorForm + ' input[name=deliveryDate]').val());\n debug(Order.getData());\n console.groupEnd();\n root.sendOrderDataToServer('parameter', root.afterOrderSetParameterOk);\n });\n };\n this.blank = function () {};\n this.setParameterCompleted = function () {\n console.log('setParameterCompleted called');\n root.Stepper.setOpts({\n onAfterLoad: function onAfterLoad() {}\n });\n //root.initViewProductSelect()\n };\n this.bindRowFavoritesAction = function () {\n $('.buttonItemFavorites').off('click');\n $('.buttonItemFavorites').on('click', function () {\n var productId = $(this).data('id');\n console.log(productId);\n var ajaxUrl = Opts.URL.toggleFavorites.replace('%id%', productId);\n var ajaxData = {};\n ajaxData._token = Opts.token;\n var button = this;\n console.log(ajaxUrl);\n $.ajax({\n url: ajaxUrl,\n method: 'POST',\n data: ajaxData,\n success: function success(response) {\n if (response.success) {\n if (response.status) {\n console.log('true');\n $(button).addClass('btn-warning');\n $(button).removeClass('btn-light');\n } else {\n $(button).removeClass('btn-warning');\n $(button).addClass('btn-light');\n console.log('false');\n }\n }\n }\n });\n /*\r\n $(this).toggleClass('btn-warning');\r\n $(this).toggleClass('btn-light');\r\n */\n });\n };\n this.bindRowDescriptionAction = function () {\n $('textarea.orderItemComment').on('change', function () {\n var comment = $(this).val();\n var productId = $(this).data('id');\n var productComment = Order.getData('productComment');\n if (productComment !== null) {\n if (typeof productComment[productId] == 'undefined' && comment.length === 0) {\n return;\n }\n if (productComment[productId] === comment) {\n return;\n }\n }\n productComment[productId] = comment;\n if (comment.length === 0) {\n delete Order.productComment[productId];\n }\n Order.productComment = productComment;\n queueAjax.push(Date.now());\n root.syncOrderDataToServer();\n });\n };\n this.productSelectDatatablesRowFormatter = function (d) {\n // `d` is the original data object for the row\n /**\r\n @todo: felszedni es updatelni az adott termek memojat az orderban\r\n */\n console.group('productSelectDatatablesRowFormatter');\n console.log(d);\n var templateData = d;\n templateData.comment = '';\n // debug(Order);\n if (Order.productComment && Order.productComment !== null) {\n debug(_typeof(Order.productComment[d.id]));\n if (typeof Order.productComment[d.id] != 'undefined' && Order.productComment[d.id].length > 0) {\n templateData.comment = Order.productComment[d.id];\n }\n }\n /** @typedef {boolean} d.favorites */\n if (d.favorites === true) {\n templateData.btnFavoritesClass = 'btn-warning';\n } else {\n templateData.btnFavoritesClass = 'btn-light';\n }\n var template = $('template[data-name=\"orderProductSelectDetails\"]').html();\n templateData.weekly = false;\n if (Order.getData().orderType === 'weekly') {\n templateData.weekly = true;\n /*\r\n \r\n templateData.weeklyDay=[\r\n {\"index\":1,\"name\":\"Hétfő\"},\r\n {\"index\":2,\"name\":\"Kedd\"},\r\n {\"index\":3,\"name\":\"Szerda\"},\r\n {\"index\":4,\"name\":\"Csütörtök\"},\r\n {\"index\":5,\"name\":\"Péntek\"},\r\n {\"index\":6,\"name\":\"Szombat\"},\r\n {\"index\":7,\"name\":\"Vasárnap\"},\r\n ];\r\n \r\n templateData.weeklyDay=[\r\n {\"index\":2,\"name\":\"Hétfő\" },\r\n {\"name\":\"Kedd\"},\r\n {\"name\":\"Szerda\"},\r\n {\"name\":\"Csütörtök\"},\r\n {\"name\":\"Péntek\"},\r\n {\"name\":\"Szombat\"},\r\n {\"name\":\"Vasárnap\"}\r\n ];\r\n */\n }\n var productSelected = Order.getData('productSelected');\n if (typeof productSelected[d.id] != 'undefined') {\n templateData.itemQuantity = productSelected[d.id];\n }\n console.log(['templateData', templateData]);\n var oldTags = Mustache.tags;\n Mustache.tags = [\"~!\", \"!~\"];\n if (templateData['specification'] == 'false' || templateData['specification'] == false) {\n templateData.specificationClass = 'd-none';\n }\n templateData.pictureImg = '';\n if (templateData['picture'] == 'false' || templateData['picture'] == false) {\n templateData.pictureClass = 'd-none';\n } else {\n templateData.pictureImg = '<img src= \"' + templateData['picture'] + '\" class=\"productPicture\" ></img>';\n }\n console.log('templateData', templateData);\n //templateData['aa_specification']=false;\n var render = Mustache.render(template, templateData);\n Mustache.tags = oldTags;\n console.groupEnd();\n return render;\n /*\r\n solution before template\r\n return '<table cellpadding=\"5\" cellspacing=\"0\" border=\"0\" style=\"padding-left:50px;\">'+\r\n '<tr>'+\r\n '<td>Info:</td>'+\r\n '<td>'+d.note+'</td>'+\r\n '</tr>'+\r\n '<tr>'+\r\n '<td>hooreyca :</td>'+\r\n '<td><span style=\"padding-right: 2em;\">'+d.hooreycaId+'</span>' +\r\n \r\n '<button type=\"button\"\\n' +\r\n ' data-id=\"'+d.id+'\"\\n' +\r\n ' class=\"buttonItemFavorites btn '+btnFavoritesClass+'\">\\n' +\r\n ' <i class=\"bi bi-star-fill pr-2\" aria-hidden=\"true\"></i>\\n' +\r\n ' Kedvenc\\n' +\r\n '</button>' +\r\n '</td>'+\r\n '</tr>'+\r\n /!*\r\n '<tr>'+\r\n '<td>Extension number:</td>'+\r\n '<td>'+d.extn+'</td>'+\r\n '</tr>'+\r\n *!/\r\n '<tr>'+\r\n '<td>Info:</td>'+\r\n '<td>'+d.note+'</td>'+\r\n '</tr>'+\r\n '<tr>'+\r\n '<td>Megjegyzés:</td>'+\r\n '<td><textarea class=\"orderItemComment\" data-id=\"'+d.id+'\">'+comment+'</textarea></td>'+\r\n '</tr>'+\r\n /!*\r\n *!/\r\n '</table>';\r\n */\n };\n this.setDatatableHeaderText = function (text) {\n $('.tableHeaderText').text(text);\n };\n this.getTreePathName = function (node) {\n var res = '';\n var items = $(node).parents('li').toArray();\n items.shift();\n items.reverse();\n for (var item in items) {\n console.log($(items[item]).children('a.categoryItem'));\n if ($(items[item]).children('a.categoryItem').length > 0) {\n res += $(items[item]).children('a.categoryItem').text() + '/';\n }\n }\n res += $(node).text();\n console.log(res);\n return res;\n };\n var selectedProductGroup = null;\n var dataTableSearchStr = null;\n var dataTableSearchKrel = false;\n this.searchProductByString = function (filterStr) {\n root.setDatatableHeaderText('Termékek szűrve:' + filterStr);\n dataTableSearchStr = filterStr;\n $('.dataTableOrderProductSelect').DataTable().ajax.reload();\n };\n this.clickSearchProduct = function () {\n debug(this);\n var filterStr = $('.sidebar-search input[name=searchValue]').val();\n debug(filterStr);\n root.searchProductByString(filterStr);\n };\n this.clickFavoritesProduct = function () {\n debug('clickFavoritesProduct');\n root.setDatatableHeaderText('Termékek szűrve: kedvencek');\n dataTableSearchStr = '**favorites**';\n $('.dataTableOrderProductSelect').DataTable().ajax.reload();\n };\n this.clickOftenProduct = function () {\n debug('clickOftenProduct');\n root.setDatatableHeaderText('Termékek szűrve: gyakran vásárolt');\n dataTableSearchStr = '**often**';\n $('.dataTableOrderProductSelect').DataTable().ajax.reload();\n };\n this.clickSpecialOffer = function () {\n debug('clickSpecialOffer');\n root.setDatatableHeaderText('Termékek szűrve: Akciós termékek');\n dataTableSearchStr = '**specialOffer**';\n $('.dataTableOrderProductSelect').DataTable().ajax.reload();\n };\n this.clickLastProduct = function () {\n debug('clickLastProduct');\n root.setDatatableHeaderText('Termékek szűrve: utoljára vásárolt');\n dataTableSearchStr = '**last**';\n $('.dataTableOrderProductSelect').DataTable().ajax.reload();\n };\n this.clickWeeklyProduct = function () {\n debug('clickWeeklyProduct');\n root.setDatatableHeaderText('Termékek szűrve: Heti termékek');\n dataTableSearchStr = '**weekly**';\n $('.dataTableOrderProductSelect').DataTable().ajax.reload();\n };\n this.clickKrelProduct = function () {\n debug('clickKrelProduct');\n //root.setDatatableHeaderText('Termékek szűrve: Heti termékek');\n //dataTableSearchStr='**weekly**';\n //$('.dataTableOrderProductSelect').DataTable().ajax.reload();\n $(this).parent().toggleClass('krelActive');\n dataTableSearchKrel = !dataTableSearchKrel;\n $('.dataTableOrderProductSelect').DataTable().ajax.reload();\n };\n this.productSelectDataTableColumnDefs = function () {\n return [{\n \"width\": \"10px\",\n \"targets\": 0\n }, {\n \"className\": \"dt-left\",\n \"targets\": 1\n },\n // { \"width\": \"120px\", \"targets\": 1 },\n {\n \"width\": \"28px\",\n \"targets\": 2\n }, {\n \"width\": \"41px\",\n \"targets\": 3\n }, {\n \"width\": \"76px\",\n \"targets\": 4\n }, {\n \"width\": \"55px\",\n \"targets\": 5\n }, {\n \"width\": \"70px\",\n \"targets\": 6\n }, {\n \"width\": \"54px\",\n \"targets\": 7\n }, {\n \"width\": \"57px\",\n \"targets\": 8\n }, {\n \"width\": \"42px\",\n \"targets\": 9\n }, {\n \"width\": \"100px\",\n \"targets\": 10\n }, {\n \"className\": \"dt-center\",\n \"targets\": \"_all\"\n }];\n };\n this.productSelectDataTableColumn = function () {\n var columnData = [{\n \"className\": 'details-control',\n \"orderable\": false,\n \"data\": null,\n \"defaultContent\": ''\n }, {\n \"data\": \"name\"\n }, {\n \"data\": \"krel\"\n }, {\n \"data\": \"packing\"\n }, {\n \"data\": \"unitValue\"\n }, {\n \"data\": \"productUnit\"\n }, {\n \"data\": \"sellerUnit\"\n }, {\n \"data\": \"unitMultiplier\"\n }, {\n \"data\": \"amountUnit\"\n }, {\n \"data\": \"price\"\n }];\n var actionColumn = {\n \"className\": 'details-control2',\n \"orderable\": false,\n \"data\": null,\n \"width\": \"80px\",\n \"defaultContent\": ''\n };\n if (Order.getData('orderType') == 'daily') {\n actionColumn.defaultContent = '<input type=\"number\" value=\"0\" min=\"0\" max=\"9999\" step=\"1\" data-decimals=\"1\" class=\"form-control-sm inputNumberSpinner\" style=\"width: 1em;\" \"/>'\n /*\r\n \"defaultContent\":'<div class=\"input-group input-group-sm \">' +\r\n '<button style=\"min-width: 1.5rem\" class=\"btn-sm btn-decrement btn-outline-secondary btn-minus\" type=\"button\">' +\r\n '<strong></strong></button>' +\r\n '<input type=\"text\" inputmode=\"decimal\" style=\"text-align: center\" class=\"form-control \" placeholder=\"\">' +\r\n '<button style=\"min-width: 1.5rem\" class=\"btn-sm btn-increment btn-outline-secondary btn-plus\" type=\"button\">' +\r\n '<strong>+</strong></button>' +\r\n '</div>'\r\n */;\n }\n columnData.push(actionColumn);\n return columnData;\n };\n this.getDatatables = function (orderType) {\n console.error(orderType);\n var table = $('.dataTableOrderProductSelect').DataTable({\n language: {\n url: '//cdn.datatables.net/plug-ins/1.10.24/i18n/Hungarian.json'\n },\n //\"ajax\": \"{{asset('exapmle2.json')}}\",\n \"ajax\": {\n url: Opts.URL.getDataTableContentProductList,\n data: function data(_data) {\n _data.searchStr = dataTableSearchStr;\n _data.krel = dataTableSearchKrel;\n _data.groupId = selectedProductGroup;\n _data.supplierId = Order.supplierId;\n _data.deliveryDate = Order.deliveryDate;\n }\n },\n buttons: {\n buttons: []\n },\n \"columnDefs\": root.productSelectDataTableColumnDefs(),\n \"columns\": root.productSelectDataTableColumn(),\n \"order\": [[1, 'asc']]\n });\n return table;\n };\n this.productSelectDataTableDrawDT = function (e) {\n //debug( 'Table draw complete: '+new Date().getTime() );\n\n //$('td:contains(\"*\")').html('<i class=\"bi bi-check-circle-fill\"></i>');\n $(\"td\").filter(function () {\n return $(this).text() === '*';\n }).html('<i class=\"bi bi-check-circle-fill\"></i>');\n if (Order.getData().orderType == 'daily') {\n $(\"input[type='number'].inputNumberSpinner\").inputSpinner({\n template: '<div class=\"input-group ${groupClass}\">' + '<button style=\"min-width: ${buttonsWidth}\" class=\"btn btn-sm btn-decrement ${buttonsClass}\" type=\"button\">${decrementButton}</button>' +\n //'<input type=\"text\" inputmode=\"decimal\" style=\"text-align: ${textAlign}\" class=\"productQuantity form-control\"/>' +\n '<input type=\"text\" step=\"0.1\" data-decimals=\"2\" style=\"text-align: ${textAlign}\" class=\"productQuantity form-control\"/>' + '<button style=\"min-width: ${buttonsWidth}\" class=\"btn btn-sm btn-increment ${buttonsClass}\" type=\"button\">${incrementButton}</button>' + '</div>',\n buttonsWidth: \"0.5rem\",\n groupClass: \"\",\n // css class of the resulting input-group\n buttonsClass: \"btn-outline-secondary\"\n });\n }\n root.bindWeakUserHelper();\n /*\r\n ----------------------------------------------------------\r\n change order quantity\r\n */\n $(\".dataTableOrderProductSelect .details-control2 input[type=text]\").off('change');\n $(\".dataTableOrderProductSelect .details-control2 input[type=text]\").on('change', function (e) {\n var quantity = $(this).val();\n quantity = quantity.replace(',', '.');\n quantity = parseFloat(quantity);\n var rowData = $('.dataTableOrderProductSelect').DataTable().row($(this).closest('tr')).data();\n root.orderItemsChange(rowData, quantity);\n });\n $(\".dataTableOrderProductSelect .details-control2 input[type=text]\").each(function () {\n //debug('ez a function2')\n var quantity = $(this).val();\n var rowData = $('.dataTableOrderProductSelect').DataTable().row($(this).closest('tr')).data();\n if (Order.productSelected[rowData.id]) {\n debug(rowData);\n debug($($(this).closest('tr').find('input[type=number]')[0]));\n debug(Order.productSelected[rowData.id]);\n var quantityCurrent = Order.productSelected[rowData.id];\n if (typeof quantityCurrent != 'string') {\n quantityCurrent += '';\n }\n $($(this).closest('tr').find('input[type=number]')[0]).val(quantityCurrent.replace(',', '.'));\n }\n });\n $(\".dataTableOrderProductSelect .details-control2 button\").off('click');\n $(\".dataTableOrderProductSelect .details-control2 button\").on('click', function () {\n // debug('.details-control2 button click ')\n // debug(this);\n $(this).parent().find('input[type=text]').trigger('change');\n });\n };\n this.initViewProductSelect = function () {\n var functionName = 'initViewProductSelect';\n console.log(functionName + ' called');\n if (viewInicialized.includes(functionName)) {\n return;\n }\n //debug(Object.getOwnPropertyNames(root));\n root.setDatatableHeaderText('');\n root.Stepper.setOpts({\n onAfterActivate: function onAfterActivate() {}\n });\n //@note: be kell kapcsolni az elonezetet\n root.Stepper.addCompleted('invoice');\n root.Stepper.addEnabled('invoice');\n var CSSSelectorForm = '.orderParameterForm';\n //console.log(Opts.URL.getDataTableContentProductList);change\n debug(CSSSelectorForm + ' .fa-search');\n $('.sidebar-search .fa-search').off('click');\n $('.sidebar-search .fa-search').on('click', root.clickSearchProduct);\n $('a.sidebar.favorites').off('click');\n $('a.sidebar.favorites').on('click', root.clickFavoritesProduct);\n $('a.sidebar.often').off('click');\n $('a.sidebar.often').on('click', root.clickOftenProduct);\n $('a.sidebar.last').off('click');\n $('a.sidebar.last').on('click', root.clickLastProduct);\n $('a.sidebar.weekly').off('click');\n $('a.sidebar.weekly').on('click', root.clickWeeklyProduct);\n $('a.sidebar.krel').off('click');\n $('a.sidebar.krel').on('click', root.clickKrelProduct);\n $('a.sidebar.specialOffer').off('click');\n $('a.sidebar.specialOffer').on('click', root.clickSpecialOffer);\n $('.sidebar-search input[name=searchValue]').off('keypress');\n $('.sidebar-search input[name=searchValue]').on('keypress', function (event) {\n if (event.which == 13) {\n event.preventDefault();\n }\n if ($(this).val().length >= 2) {\n root.searchProductByString($(this).val() + event.key);\n }\n });\n $('.sidebar-wrapper .sidebar-menu .sidebar-dropdown .sidebar-submenu li a.categoryItem.clickable').off('click');\n $('.sidebar-wrapper .sidebar-menu .sidebar-dropdown .sidebar-submenu li a.categoryItem.clickable').on('click', function () {\n var groupId = $(this).data('id');\n selectedProductGroup = groupId;\n dataTableSearchStr = null;\n console.log(groupId);\n console.log(root.getTreePathName(this));\n root.setDatatableHeaderText(root.getTreePathName(this));\n /*\r\n let ajaxData={\r\n 'groupId':groupId,\r\n 'supplier_id':Order.supplierId,\r\n };\r\n //$('.dataTableOrderProductSelect').DataTable().ajax.data(ajaxData).load();\r\n \r\n */\n /*\r\n let ajaxUrl=Opts.URL.getDataTableContentProductList+'?groupId='+groupId+'&supplier_id='+Order.supplierId;\r\n $('.dataTableOrderProductSelect').DataTable().ajax.url(ajaxUrl).load();\r\n */\n $('.dataTableOrderProductSelect').DataTable().ajax.reload();\n });\n var table = root.getDatatables(Order.getData('orderType'));\n $('.dataTableOrderProductSelect').on('init.dt', function () {\n console.log('Table initialisation complete: ' + new Date().getTime());\n }).dataTable();\n $('.dataTableOrderProductSelect').on('draw.dt', root.productSelectDataTableDrawDT).dataTable();\n\n //$('.dataTableOrderProductSelect').on( 'draw.dt', ).dataTable();\n\n $('.dataTableOrderProductSelect').on('xhr.dt', function () {\n debug('Table xhr complete: ' + new Date().getTime());\n }).dataTable();\n\n //$(\"input[type='number'].inputNumberSpinner\").inputSpinner();\n\n /*\r\n ----------------------------------------------------------\r\n Add event listener for opening and closing details\r\n */\n\n $('.dataTableOrderProductSelect tbody').on('click', 'td.details-control', function () {\n var tr = $(this).closest('tr');\n var row = table.row(tr);\n if (row.child.isShown()) {\n // This row is already open - close it\n row.child.hide();\n tr.removeClass('shown');\n } else {\n // Open this row\n row.child(root.productSelectDatatablesRowFormatter(row.data())).show();\n tr.addClass('shown');\n root.bindProductDetailsAction();\n }\n });\n viewInicialized.push(functionName);\n };\n this.bindProductDetailsAction = function () {\n root.bindRowDescriptionAction();\n root.bindRowFavoritesAction();\n if (Order.getData()['orderType'] == 'weekly') {\n root.bindOrderItemWeekQuantity();\n }\n };\n this.bindWeakUserHelper = function () {\n $(\"input.inputNumberSpinner\").off(\"focus\");\n $(\"input.inputNumberSpinner\").on(\"focus\", function () {\n var quantity = $(this).val();\n quantity = quantity.replace(',', '.');\n quantity = parseFloat(quantity);\n if (quantity === 0) {\n $(this).val('');\n }\n });\n $(\"input[type=text].inputNumberSpinner\").off(\"keypress\");\n $(\"input[type=text].inputNumberSpinner\").on(\"keypress\", function (event) {\n if (event.which == 13) {\n // console.error('enter pressed');\n var actualItem = this;\n var items = $(\"input[type=text].inputNumberSpinner\");\n items.each(function (item) {\n // console.log(this);\n if (this == actualItem) {\n // console.error(item);\n if (item + 1 <= items.length) {\n // console.error(items[item+1]);\n $(items[item + 1]).focus();\n }\n return false;\n }\n });\n }\n });\n };\n this.bindOrderItemWeekQuantity = function () {\n $(\"input.productSelectDayQuantity\").off('change');\n $(\"input.productSelectDayQuantity\").on('change', function () {\n console.log(this.name);\n console.log(this.value);\n console.log($(this).data('dayindex'));\n var rowData = null;\n var rowNode = $($(this).closest('table.orderProductSelectRowDetailsTable').closest('tr')).prev();\n rowData = $('.dataTableOrderProductSelect').DataTable().row(rowNode).data();\n console.log(rowData);\n var quantity = $(this).val();\n quantity = quantity.replace(',', '.');\n quantity = parseFloat(quantity);\n console.log(rowData.id);\n root.orderItemsChange(rowData, quantity, $(this).data('dayindex'));\n // root.orderItemsChange\n //orderItemsChange\n //quantity[1683][1]\n });\n };\n this.afterSyncOrderDataToServer = function (data) {\n //root.toggleEnableSend();\n //console.log('most vegzett. ennyit kiszed'+batchNum);\n for (var i = 0; i < queueAjax.length; i++) {\n console.log('shiftel');\n queueAjax.shift();\n }\n //console.log('remaining left '+queueAjax.length);\n setTimeout(function () {\n syncDoing = false;\n root.syncOrderDataToServer();\n }, Opts.dataSyncPauseTime);\n };\n var queueAjax = [];\n var syncDoing = false;\n this.syncOrderDataToServer = function () {\n //debug(queueAjax);\n if (syncDoing) {\n //debug('sync in progress....');\n return false;\n }\n if (queueAjax.length < 1) {\n return;\n }\n syncDoing = true;\n root.sendOrderDataToServer('productSelect', root.afterSyncOrderDataToServer);\n return;\n };\n this.orderItemsChange = function (ItemData, quantity, dayIndex) {\n /*\r\n debug('-----------------');\r\n debug(ItemData);\r\n debug(quantity);\r\n debug(Order.getData('productSelected'));\r\n debug('-----------------');\r\n \r\n */\n if (isNaN(quantity)) {\n quantity = 0;\n }\n var productSelected = Order.getData('productSelected');\n console.group('orderItemsChange');\n console.log(['productSelected', productSelected]);\n console.log(['ItemData', ItemData]);\n console.log(['ItemData.id', ItemData.id]);\n console.log(['quantity', quantity]);\n console.log(['dayIndex', dayIndex]);\n console.log(productSelected[ItemData.id]);\n var productSelectedItem = productSelected[ItemData.id];\n /*\r\n ha 0 ertek jon es nem is volt akkor hamar kiugratjuk\r\n */\n if (quantity == 0) {\n console.error('quantity==0');\n if (typeof productSelectedItem == 'undefined') {\n console.error('itt lep1');\n console.groupEnd();\n return;\n }\n if (dayIndex) {\n console.log('van dayIndex');\n if (typeof productSelected[ItemData.id][dayIndex] == 'undefined') {\n console.log(['productSelectedItem', productSelectedItem]);\n console.error('itt lep2');\n console.groupEnd();\n return;\n }\n }\n }\n /*\r\n ha azonos az ertek kiugrunk\r\n */\n if (dayIndex) {\n if (typeof productSelected[ItemData.id] != 'undefined' && typeof productSelected[ItemData.id][dayIndex] != 'undefined') {\n if (productSelected[ItemData.id][dayIndex] == quantity) {\n console.error('azonos napi');\n console.groupEnd();\n return;\n }\n }\n } else {\n if (productSelected[ItemData.id] == quantity) {\n console.error('azonos');\n console.groupEnd();\n return;\n }\n }\n if (quantity == 0) {\n if (dayIndex) {\n delete Order.productSelected[ItemData.id][dayIndex];\n delete productSelected[ItemData.id][dayIndex];\n } else {\n delete Order.productSelected[ItemData.id];\n delete productSelected[ItemData.id];\n }\n } else {\n /*\r\n ha van ertek erteket adunk!\r\n */\n if (dayIndex) {\n if (typeof productSelected[ItemData.id] == 'undefined') {\n productSelected[ItemData.id] = [];\n }\n console.log('set quantity productSelected[ItemData.id][dayIndex]', quantity);\n productSelected[ItemData.id][dayIndex] = quantity;\n } else {\n productSelected[ItemData.id] = quantity;\n console.log('set quantity productSelected[ItemData.id]', quantity);\n }\n }\n console.log(['productSelected', productSelected]);\n Order.productSelected = productSelected;\n console.groupEnd();\n queueAjax.push(Date.now());\n root.syncOrderDataToServer();\n return;\n // removed by dead control flow\n\n // removed by dead control flow\n\n // removed by dead control flow\n\n // removed by dead control flow\n\n // removed by dead control flow\n\n // removed by dead control flow\n\n // removed by dead control flow\n\n // removed by dead control flow\n\n\n /*\r\n debug(Order.getData('productSelected'));\r\n debug('*******************');\r\n */\n };\n this.initViewInvoice = function () {\n root.Stepper.setOpts({\n onAfterLoad: function onAfterLoad() {}\n });\n if (Object.keys(Order.productSelected).length > 0) {\n root.Stepper.addCompleted('send');\n root.Stepper.addEnabled('send');\n }\n var styleStr = '<link rel=\"stylesheet\" href=\"' + Opts.URL.root + '/css/invoice.css\">';\n $('table.invoice button.printButton').off('click');\n $('table.invoice button.printButton').on('click', function () {\n window.print();\n return;\n // removed by dead control flow\n var newWin; \n // removed by dead control flow\n\n // removed by dead control flow\n var print; \n // removed by dead control flow\n\n // newWin.document.write($('table.invoice').prop('outerHTML'));\n // removed by dead control flow\n\n // removed by dead control flow\n\n // removed by dead control flow\n\n });\n };\n this.resetOrder = function () {\n root.init();\n root.setDeliveryDate('-');\n root.setSupplier('-');\n };\n this.afterOrderSendOk = function (data) {\n Toast.create(\"Sent!\", 'Order Sent', TOAST_STATUS.INFO, 5000);\n $('.buttonOrderSend').off('click');\n $('.buttonOrderSend').prop('disabled', true);\n $('.statusNamePlace').removeClass('statusBlink');\n $('.statusNamePlace').text('elküldve');\n $('.buttonOrderSending').toggleClass('d-none');\n $('.buttonOrderSendOk').toggleClass('d-none');\n $('div.invoiceContainer').html(data.retHTML);\n //root.resetOrder();\n };\n this.afterOrderSendError = function (data) {\n $('.buttonOrderSend').toggleClass('d-none');\n $('.buttonOrderSending').toggleClass('d-none');\n $.each(APP.OrderModule.Stepper.getOpts().available, function (index, value) {\n APP.OrderModule.Stepper.setEnabled(value);\n APP.OrderModule.Stepper.setCompleted(value);\n });\n };\n this.initViewSend = function () {\n console.log('initViewSend called 2');\n root.Stepper.setOpts({\n onAfterLoad: function onAfterLoad() {}\n });\n $('.buttonOrderSend').off('click');\n $('.buttonOrderSend').on('click', function () {\n console.log('Send buton clicked');\n //@todo: datasynchere and callback\n $('.buttonOrderSend').toggleClass('d-none');\n $('.buttonOrderSending').toggleClass('d-none');\n /**\r\n * PM158\r\n */\n $.each(APP.OrderModule.Stepper.getOpts().available, function (index, value) {\n root.Stepper.unsetEnabled(value);\n root.Stepper.unsetCompleted(value);\n });\n /**\r\n */\n root.sendOrderDataToServer('send', root.afterOrderSendOk, root.afterOrderSendError);\n\n /* let ajaxData={};\r\n ajaxData._token=Opts.token;\r\n ajaxData.send=true;\r\n $.extend(ajaxData,Order);\r\n $.ajax({\r\n url: Opts.URL.store,\r\n method:'POST',\r\n data:ajaxData,\r\n success:function (data) {\r\n if(data.success){\r\n root.afterOrderSendOk(data);\r\n }\r\n }\r\n });*/\n });\n };\n this.testModeSend = function () {};\n this.testMode = function () {\n console.log('testMode called ');\n Order.setData({\n id: 234,\n supplierId: 7,\n productSelected: {\n 116: 3,\n 293: 2\n },\n contactName: 'Contact Name',\n note: 'Note',\n type: 'daily',\n deliveryDate: Opts.defaultDeliveryDate,\n deliveryAddress: 12\n });\n console.log(Order.getData());\n console.log('*******************');\n //root.Stepper.setOpts({'UrlData':{'supplierId':supplierId}});\n root.Stepper.setOpts({\n 'UrlData': {\n 'supplierId': Order.supplierId,\n id: Order.id\n }\n });\n this.Stepper.init({\n URL: {\n create: Opts.URL.create\n },\n /*\r\n csupasz az elejerol\r\n complete:['supplier'],\r\n enable: ['supplier'],\r\n active: 'supplier',\r\n onAfterActivate:this.initViewSupplier,\r\n \r\n product select\r\n complete:['supplier','parameter','productSelect'],\r\n enable: ['supplier','parameter','productSelect'],\r\n active: 'productSelect',\r\n onAfterActivate:this.initViewProductSelect,\r\n \r\n fullos\r\n complete:['supplier','parameter','productSelect','invoice'],\r\n enable: ['supplier','parameter','productSelect','invoice','send'],\r\n active: 'productSelect',\r\n onAfterActivate:this.initViewProductSelect,\r\n \r\n send\r\n complete:['supplier','parameter','productSelect','invoice','send'],\r\n enable: ['supplier','parameter','productSelect','invoice','send'],\r\n active: 'send',\r\n onAfterActivate:this.initViewProductSelect,\r\n \r\n */\n complete: ['supplier', 'parameter', 'productSelect'],\n enable: ['supplier', 'parameter', 'productSelect'],\n active: 'productSelect',\n onAfterActivate: this.initViewProductSelect,\n autoCallback: {\n invoice: {\n onAfterActivate: root.initViewInvoice\n },\n send: {\n onAfterActivate: root.initViewSend\n }\n }\n });\n console.log('*******************');\n };\n this.toggleEnableSend = function () {\n console.log('toggleEnableSend called');\n var ajaxUrl = Opts.URL.checkReadyToSend.replace('%id%', Order.id);\n $.ajax({\n url: ajaxUrl,\n success: function success(data) {\n if (data.success) {\n if (data.readyToSend) {\n root.Stepper.addCompleted('send');\n /*\r\n root.Stepper.addCompleted('invoice');\r\n root.Stepper.addEnabled('invoice');\r\n */\n root.Stepper.addEnabled('send');\n } else {\n root.Stepper.unsetCompleted('send');\n /*\r\n root.Stepper.unsetCompleted('invoice');\r\n root.Stepper.unsetEnabled('invoice');\r\n */\n root.Stepper.unsetEnabled('send');\n }\n }\n console.log(data);\n }\n });\n };\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QyxPQUFPO01BQ1huQyxPQUFPLEVBQUMsU0FBUkEsT0FBT0EsQ0FBV25FLElBQUksRUFBRTtRQUNwQixJQUFHQSxJQUFJLENBQUNtRSxPQUFPLEVBQUM7VUFDWixJQUFHbkUsSUFBSSxDQUFDa1csV0FBVyxFQUFDO1lBQ2hCcFUsSUFBSSxDQUFDaEIsT0FBTyxDQUFDK0MsWUFBWSxDQUFDLE1BQU0sQ0FBQztZQUN6RDtBQUNBO0FBQ0E7QUFDQTtZQUN3Qi9CLElBQUksQ0FBQ2hCLE9BQU8sQ0FBQzZDLFVBQVUsQ0FBQyxNQUFNLENBQUM7VUFDbkMsQ0FBQyxNQUFJO1lBQ0Q3QixJQUFJLENBQUNoQixPQUFPLENBQUNxQyxjQUFjLENBQUMsTUFBTSxDQUFDO1lBQzNEO0FBQ0E7QUFDQTtBQUNBO1lBQ3dCckIsSUFBSSxDQUFDaEIsT0FBTyxDQUFDd0MsWUFBWSxDQUFDLE1BQU0sQ0FBQztVQUNyQztRQUNKO1FBQ0EvQyxPQUFPLENBQUNDLEdBQUcsQ0FBQ1IsSUFBSSxDQUFDO01BQ3JCO0lBQ0osQ0FBQyxDQUFDO0VBQ04sQ0FBQztBQUVMLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvbW9kdWxlSnMvb3JkZXIuanM/NTYxZiJdLCJzb3VyY2VzQ29udGVudCI6WyJ3aW5kb3cuT3JkZXJNb2R1bERlZmF1bHQ9e1xyXG4gICAgYWN0aW9uRnVuY3Rpb246IGZ1bmN0aW9uICgpIHt9LFxyXG59XHJcbmNsYXNzIERhdGFNb2RlbE9yZGVyIGV4dGVuZHMgRGF0YU1vZGVse1xyXG5cclxuICAgIC8qXHJcbiAgICAgKiBDb25zdHJ1Y3RvclxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvciAoZGF0YSxvcHRpb25zKSB7XHJcbiAgICAgICAgc3VwZXIoZGF0YSxvcHRpb25zKVxyXG4gICAgICAgIGlmKHR5cGVvZiB0aGlzLnByb2R1Y3RTZWxlY3RlZCA9PT1cInVuZGVmaW5lZFwiKXtcclxuICAgICAgICAgICAgdGhpcy5wcm9kdWN0U2VsZWN0ZWQ9e307XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKHR5cGVvZiB0aGlzLnByb2R1Y3RDb21tZW50ID09PVwidW5kZWZpbmVkXCIpe1xyXG4gICAgICAgICAgICB0aGlzLnByb2R1Y3RDb21tZW50PXt9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zb2xlLmxvZyh0aGlzLmNvbnN0cnVjdG9yLm5hbWUrJyBjb25zdHJ1Y3RvciBjYWxsZWQnKTtcclxuICAgIH07XHJcbn07XHJcbndpbmRvdy5EYXRhTW9kZWxPcmRlcj1EYXRhTW9kZWxPcmRlcjtcclxuXHJcbndpbmRvdy5TdGVwcGVyPWZ1bmN0aW9uICgpIHtcclxuXHJcbiAgICAvKlxyXG4gICAgICogVmFyaWFibGVzIGFjY2Vzc2libGVcclxuICAgICAqIGluIHRoZSBjbGFzc1xyXG4gICAgICovXHJcbiAgICBsZXQgT3B0cyA9IHtcclxuICAgICAgICBjb21wbGV0ZTogWydzdXBwbGllciddLFxyXG4gICAgICAgIGF2YWlsYWJsZTogWydzdXBwbGllcicsICdwYXJhbWV0ZXInLCAncHJvZHVjdFNlbGVjdCcsICdpbnZvaWNlJywgJ3NlbmQnXSxcclxuICAgICAgICBlbmFibGU6IFsnc3VwcGxpZXInLCAnaW52b2ljZSddLFxyXG4gICAgICAgIGxvYWQ6IFtdLFxyXG4gICAgICAgIGV4Y2x1ZGVMb2FkZWQ6WydpbnZvaWNlJywnc2VuZCddLFxyXG4gICAgICAgIGxvYWRlZDogW10sXHJcbiAgICAgICAgYWN0aXZlOiBmYWxzZSxcclxuICAgICAgICBVUkw6IHtcclxuICAgICAgICAgICAgY3JlYXRlOiAnJyxcclxuICAgICAgICB9LFxyXG4gICAgICAgIFVybERhdGE6ZmFsc2UsXHJcbiAgICAgICAgb25BZnRlckxvYWQ6ZnVuY3Rpb24gKCkge30sXHJcbiAgICAgICAgb25BZnRlckFjdGl2YXRlOmZ1bmN0aW9uICgpIHt9LFxyXG4gICAgICAgIGF1dG9DYWxsYmFjazp7XHJcbiAgICAgICAgICAgICdpbnZvaWNlJzp7XHJcbiAgICAgICAgICAgICAgICBvbkFmdGVyQWN0aXZhdGU6ZnVuY3Rpb24gKCkge30sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICdzZW5kJzp7XHJcbiAgICAgICAgICAgICAgICBvbkFmdGVyQWN0aXZhdGU6ZnVuY3Rpb24gKCkge30sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICBub3dMb2FkZWQ6ZmFsc2UsXHJcblxyXG4gICAgfTtcclxuXHJcbiAgICBsZXQgcm9vdD10aGlzO1xyXG4gICAgLypcclxuICAgICAqIENvbnN0cnVjdG9yXHJcbiAgICAgKi9cclxuICAgIHRoaXMuY29uc3RydWN0ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcclxuICAgICAgICAkLmV4dGVuZChPcHRzLCBvcHRpb25zKTtcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5nZXRPcHRzPWZ1bmN0aW9uKCl7XHJcbiAgICAgICAgcmV0dXJuIE9wdHM7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldE9wdHM9ZnVuY3Rpb24ob3B0aW9ucyl7XHJcbiAgICAgICAgJC5leHRlbmQoT3B0cywgb3B0aW9ucyk7XHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICB0aGlzLmluaXQ9ZnVuY3Rpb24gKG9wdGlvbnMpe1xyXG4gICAgICAgICQuZXh0ZW5kKE9wdHMsIG9wdGlvbnMpO1xyXG5cclxuICAgICAgICBkZWJ1ZyhPcHRzKTtcclxuICAgICAgICAkKCcuc3RlcCcpLmVhY2goZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgbGV0IHN0ZXBOYW1lPSQodGhpcykuZGF0YSgnc3RlcG5hbWUnKTtcclxuICAgICAgICAgICAgaWYoT3B0cy5jb21wbGV0ZS5pbmNsdWRlcyhzdGVwTmFtZSkpe1xyXG4gICAgICAgICAgICAgICAgcm9vdC5zZXRDb21wbGV0ZWQoc3RlcE5hbWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKE9wdHMuZW5hYmxlLmluY2x1ZGVzKHN0ZXBOYW1lKSl7XHJcbiAgICAgICAgICAgICAgICByb290LnNldEVuYWJsZWQoc3RlcE5hbWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKE9wdHMubG9hZC5pbmNsdWRlcyhzdGVwTmFtZSkpe1xyXG4gICAgICAgICAgICAgICAgcm9vdC5sb2FkU3RlcENvbnRlbnQoc3RlcE5hbWUpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZihPcHRzLmFjdGl2ZT09PXN0ZXBOYW1lKXtcclxuICAgICAgICAgICAgICAgIHJvb3Quc2V0QWN0aXZlKHN0ZXBOYW1lKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJvb3QuYmluZENsaWNrQWN0aW9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5iaW5kQ2xpY2tBY3Rpb249ZnVuY3Rpb24gKCl7XHJcbiAgICAgICAgbGV0IHN0ZXBDbGlja0J1dHRvbnM9JCgnLnN0ZXBDbGljaycpO1xyXG4gICAgICAgIHN0ZXBDbGlja0J1dHRvbnMub2ZmKCdjbGljaycpO1xyXG4gICAgICAgIHN0ZXBDbGlja0J1dHRvbnMub24oJ2NsaWNrJyxyb290LnN0ZXBDbGljayk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2V0Q29tcGxldGVkPWZ1bmN0aW9uIChzdGVwTmFtZSl7XHJcbiAgICAgICAgY29uc29sZS5sb2coc3RlcE5hbWUrJyBjb21wbGV0ZWQnKTtcclxuICAgICAgICAkKCcuc3RlcFtkYXRhLXN0ZXBOYW1lPVwiJytzdGVwTmFtZSsnXCJdJykuYWRkQ2xhc3MoJ2NvbXBsZXRlZCcpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudW5zZXRDb21wbGV0ZWQ9ZnVuY3Rpb24gKHN0ZXBOYW1lKXtcclxuICAgICAgICBjb25zb2xlLmxvZyhzdGVwTmFtZSsnIFVuY29tcGxldGVkJyk7XHJcbiAgICAgICAgJCgnLnN0ZXBbZGF0YS1zdGVwTmFtZT1cIicrc3RlcE5hbWUrJ1wiXScpLnJlbW92ZUNsYXNzKCdjb21wbGV0ZWQnKTtcclxuICAgICAgICBPcHRzLmNvbXBsZXRlPWFycmF5UmVtb3ZlKE9wdHMuY29tcGxldGUsc3RlcE5hbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudW5zZXRFbmFibGVkPWZ1bmN0aW9uIChzdGVwTmFtZSl7XHJcbiAgICAgICAgY29uc29sZS5sb2coc3RlcE5hbWUrJyBVbiBlbmFibGVkJyk7XHJcbiAgICAgICAgJCgnLmNsaWNrJytzdGVwTmFtZSkuY29udGVudHMoKS51bndyYXAoKTtcclxuICAgICAgICBPcHRzLmVuYWJsZT1hcnJheVJlbW92ZShPcHRzLmVuYWJsZSxzdGVwTmFtZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldEVuYWJsZWQ9ZnVuY3Rpb24gKHN0ZXBOYW1lKXtcclxuICAgICAgICBjb25zb2xlLmxvZyhzdGVwTmFtZSsnIGVuYWJsZWQnKTtcclxuICAgICAgICBsZXQgc3RlcEl0ZW09JCgnLnN0ZXBbZGF0YS1zdGVwTmFtZT1cIicrc3RlcE5hbWUrJ1wiXScpO1xyXG4gICAgICAgIHN0ZXBJdGVtLmh0bWwoJzxhIGNsYXNzPVwic3RlcENsaWNrIGNsaWNrJytzdGVwTmFtZSsnXCIgZGF0YS1zdGVwTmFtZT1cIicrc3RlcE5hbWUrJ1wiIGhyZWY9XCIjXCI+JytzdGVwSXRlbS5odG1sKCkrJzwvYT4nKTtcclxuICAgICAgICByb290LmJpbmRDbGlja0FjdGlvbigpO1xyXG4gICAgICAgIC8vJCgnLnN0ZXBDbGljaycpLmNsaWNrKHJvb3Quc3RlcENsaWNrKTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hZGRFbmFibGVkPWZ1bmN0aW9uKHN0ZXBOYW1lKXtcclxuICAgICAgICBpZighT3B0cy5lbmFibGUuaW5jbHVkZXMoc3RlcE5hbWUpKXtcclxuICAgICAgICAgICAgT3B0cy5lbmFibGUucHVzaChzdGVwTmFtZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJvb3Quc2V0RW5hYmxlZChzdGVwTmFtZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hZGRDb21wbGV0ZWQ9ZnVuY3Rpb24oc3RlcE5hbWUpe1xyXG4gICAgICAgIGlmKCFPcHRzLmNvbXBsZXRlLmluY2x1ZGVzKHN0ZXBOYW1lKSl7XHJcbiAgICAgICAgICAgIE9wdHMuY29tcGxldGUucHVzaChzdGVwTmFtZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJvb3Quc2V0Q29tcGxldGVkKHN0ZXBOYW1lKTtcclxuICAgICAgICByb290LmJpbmRDbGlja0FjdGlvbigpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICB0aGlzLmxvYWRTdGVwQ29udGVudD1mdW5jdGlvbiAoc3RlcE5hbWUpe1xyXG4gICAgICAgIGxldCBkYXRhPXsndHlwZSc6c3RlcE5hbWV9O1xyXG4gICAgICAgICQuZXh0ZW5kKGRhdGEsIE9wdHMuVXJsRGF0YSk7XHJcblxyXG4gICAgICAgICQuYWpheCh7XHJcbiAgICAgICAgICAgIGFzeW5jOiB0cnVlLFxyXG4gICAgICAgICAgICB0eXBlOiBcIkdFVFwiLFxyXG4gICAgICAgICAgICB1cmw6IE9wdHMuVVJMLmNyZWF0ZSxcclxuICAgICAgICAgICAgZGF0YTogZGF0YSxcclxuICAgICAgICAgICAgY2FjaGU6IGZhbHNlLFxyXG4gICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbihyZXN1bHQpXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGxldCBjb250YWluZXI9JCgnLlNDJytzdGVwTmFtZS5jYXBpdGFsaXplKCkpO1xyXG4gICAgICAgICAgICAgICAgaWYoJC5pbkFycmF5KHN0ZXBOYW1lLE9wdHMuZXhjbHVkZUxvYWRlZCk9PS0xKXtcclxuICAgICAgICAgICAgICAgICAgICBPcHRzLmxvYWRlZC5wdXNoKHN0ZXBOYW1lKTtcclxuICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdleGNsdWRlZCBWaWV3Jyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb250YWluZXIuaHRtbChyZXN1bHQpO1xyXG4gICAgICAgICAgICAgICAgaWYoT3B0cy5ub3dMb2FkZWQpe1xyXG4gICAgICAgICAgICAgICAgICAgIE9wdHMubm93TG9hZGVkKHN0ZXBOYW1lKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIE9wdHMub25BZnRlckxvYWQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2xlYXJMb2FkZWQ9ZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIE9wdHMubG9hZGVkPVsnc3VwcGxpZXInXTtcclxuICAgICAgICAkKCcuc3RlcENvbnRhaW5lcicpLmVhY2goZnVuY3Rpb24oKXtcclxuLypcclxuICAgICAgICAgICAgY29uc29sZS5sb2codGhpcy5jbGFzc0xpc3QpO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLmNsYXNzTGlzdC5jb250YWlucygnU0NTdXBwbGllcicpKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJCh0aGlzKS5hdHRyKCdjbGFzcycpKTtcclxuKi9cclxuICAgICAgICAgICAgaWYoIXRoaXMuY2xhc3NMaXN0LmNvbnRhaW5zKCdTQ1N1cHBsaWVyJykpe1xyXG4gICAgICAgICAgICAgICAgJCh0aGlzKS5odG1sKCcnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2V0QWN0aXZlRmluaXNoPWZ1bmN0aW9uKHN0ZXBOYW1lKXtcclxuICAgICAgICBsZXQgY29udGFpbmVyPSQoJy5TQycrc3RlcE5hbWUuY2FwaXRhbGl6ZSgpKTtcclxuICAgICAgICBpZihzdGVwTmFtZT09PSdwcm9kdWN0U2VsZWN0Jyl7XHJcbiAgICAgICAgICAgICQoJy5jb250YWluZXJTdGVwcGVyJykuYWRkQ2xhc3MoJ2FjdGl2ZVNpZGVCYXInKTtcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgJCgnLmNvbnRhaW5lclN0ZXBwZXInKS5yZW1vdmVDbGFzcygnYWN0aXZlU2lkZUJhcicpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBkZWJ1Zygnc2V0QWN0aXZlRmluaXNoIHNob3c6JytzdGVwTmFtZSk7XHJcbiAgICAgICAgY29udGFpbmVyLnNob3coKTtcclxuICAgICAgICBPcHRzLm5vd0xvYWRlZD1mYWxzZTtcclxuICAgICAgICByb290LmFjdGl2ZT1zdGVwTmFtZTtcclxuICAgICAgICBPcHRzLm9uQWZ0ZXJBY3RpdmF0ZSgpO1xyXG4gICAgICAgIGlmKHR5cGVvZiBPcHRzLmF1dG9DYWxsYmFja1tzdGVwTmFtZV0hPT0ndW5kZWZpbmVkJyApe1xyXG4gICAgICAgICAgICBPcHRzLmF1dG9DYWxsYmFja1tzdGVwTmFtZV0ub25BZnRlckFjdGl2YXRlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRBY3RpdmU9ZnVuY3Rpb24oc3RlcE5hbWUpe1xyXG4gICAgICAgICQoJy5zdGVwQ29udGFpbmVyJykuaGlkZSgpO1xyXG4gICAgICAgIGlmKCFPcHRzLmxvYWRlZC5pbmNsdWRlcyhzdGVwTmFtZSkpe1xyXG4gICAgICAgICAgICByb290LmxvYWRTdGVwQ29udGVudChzdGVwTmFtZSk7XHJcbiAgICAgICAgICAgIE9wdHMubm93TG9hZGVkPXRoaXMuc2V0QWN0aXZlRmluaXNoO1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICB0aGlzLnNldEFjdGl2ZUZpbmlzaChzdGVwTmFtZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc3RlcENsaWNrPWZ1bmN0aW9uKGV2ZW50KXtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGxldCBzdGVwTmFtZT0kKGV2ZW50LmN1cnJlbnRUYXJnZXQpLmRhdGEoJ3N0ZXBuYW1lJyk7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ3NldEFjdGl2ZTonK3N0ZXBOYW1lKTtcclxuICAgICAgICByb290LnNldEFjdGl2ZShzdGVwTmFtZSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbndpbmRvdy5PcmRlck1vZHVsZSA9IGZ1bmN0aW9uICgpIHtcclxuXHJcbiAgICAvKlxyXG4gICAgICogVmFyaWFibGVzIGFjY2Vzc2libGVcclxuICAgICAqIGluIHRoZSBjbGFzc1xyXG4gICAgICovXHJcbiAgICBsZXQgT3B0cyA9IHtcclxuICAgICAgICB0ZXN0TW9kZTogZmFsc2UsXHJcbiAgICAgICAgbmVlZFN0ZXBwZXI6dHJ1ZSxcclxuICAgICAgICBDU1NTZWxlY3RvckZvcm06Jy5vcmRlclBhcmFtZXRlckZvcm0nLFxyXG4gICAgICAgIGRlZmF1bHREZWxpdmVyeURhdGU6JycsXHJcbiAgICAgICAgZGF0YVN5bmNQYXVzZVRpbWU6NTAwLFxyXG4gICAgICAgIHRva2VuOm51bGwsXHJcbiAgICAgICAgVVJMOiB7XHJcbiAgICAgICAgICAgIHJvb3Q6bnVsbCxcclxuICAgICAgICAgICAgZ2V0RGF0YVRhYmxlQ29udGVudFByb2R1Y3RMaXN0Om51bGwsXHJcbiAgICAgICAgICAgIGNoZWNrUmVhZHlUb1NlbmQ6bnVsbCxcclxuICAgICAgICAgICAgaW5kZXg6bnVsbCxcclxuICAgICAgICAgICAgc2hvdzpudWxsLFxyXG4gICAgICAgICAgICBlZGl0Om51bGwsXHJcbiAgICAgICAgICAgIGNyZWF0ZTogbnVsbCxcclxuICAgICAgICAgICAgc3RvcmU6IG51bGwsXHJcbiAgICAgICAgICAgIHVwZGF0ZTpudWxsLFxyXG4gICAgICAgICAgICBkZXN0cm95Om51bGwsXHJcbiAgICAgICAgICAgIHRvZ2dsZUZhdm9yaXRlczpudWxsLFxyXG4gICAgICAgIH0sXHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IFB1YmxpY1ZhciA9IHt9O1xyXG4gICAgbGV0IFB1YmxpY1ZhcjIgPSB7J2FzZCc6ICcyMSd9O1xyXG4gICAgbGV0IEFwaVRva2VuID0gbnVsbDtcclxuICAgIGxldCBPcmRlcj1udWxsO1xyXG4gICAgbGV0IHJvb3QgPSB0aGlzO1xyXG4gICAgbGV0IHZpZXdJbmljaWFsaXplZD1bXTtcclxuXHJcbiAgICB0aGlzLnNldE9wdHMgPSBmdW5jdGlvbiAob3B0aW9ucykge1xyXG4gICAgICAgICQuZXh0ZW5kKE9wdHMsIG9wdGlvbnMpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZ2V0T3B0cyA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gT3B0cztcclxuICAgIH1cclxuICAgIHRoaXMuY2xpY2tPcmRlckVkaXQ9ZnVuY3Rpb24gKGRhdGEpe1xyXG4gICAgICAgIGRlYnVnKCdjbGlja0VkaXQnKTtcclxuICAgICAgICBkZWJ1ZyhkYXRhKTtcclxuICAgICAgICBsZXQgYWpheFVybD1PcHRzLlVSTC5lZGl0LnJlcGxhY2UoJyVpZCUnLGRhdGEuaWQpO1xyXG4gICAgICAgIEFQUC5sb2FkTWFpbkNvbnRlbnQoYWpheFVybCk7XHJcbi8qICAgICAgICBsZXQgYWpheERhdGE9e307XHJcbiAgICAgICAgYWpheERhdGEuX3Rva2VuPU9wdHMudG9rZW47XHJcbiAgICAgICAgJC5leHRlbmQoYWpheERhdGEsT3JkZXIpO1xyXG4gICAgICAgIGxldCBhamF4VXJsPU9wdHMuVVJMLmVkaXQucmVwbGFjZSgnJWlkJScsZGF0YS5pZCk7XHJcbiAgICAgICAgJC5hamF4KHtcclxuICAgICAgICAgICAgdXJsOiBhamF4VXJsLFxyXG4gICAgICAgICAgICBtZXRob2Q6J0dFVCcsXHJcbiAgICAgICAgICAgIGRhdGE6YWpheERhdGEsXHJcbiAgICAgICAgICAgIHN1Y2Nlc3M6ZnVuY3Rpb24gKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5zdWNjZXNzKXtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgb3JkZXJEYXRhPXJlc3BvbnNlLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgb3JkZXJEYXRhLnN1cHBsaWVySWQ9b3JkZXJEYXRhLnN1cHBsaWVyX2lkO1xyXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZShvcmRlckRhdGEuc3VwcGxpZXJfaWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJvb3QuaW5pdE9yZGVyKG9yZGVyRGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcm9vdC5pbml0U3RlcHBlcigpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vcm9vdC5hZnRlck9yZGVyU2V0U3VwcGxpZXJPayhkYXRhLmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7Ki9cclxuXHJcblxyXG4gICAgfVxyXG4gICAgdGhpcy5hZnRlck9yZGVyRGVsZXRlZD1mdW5jdGlvbiAoZGF0YSl7XHJcbiAgICAgICAgaWYoZGF0YS5zdWNjZXNzPT10cnVlKXtcclxuICAgICAgICAgICAgZGVidWcoJ09yZGVyIGRlbGV0ZSBzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgIEFQUC5sb2FkTWFpbkNvbnRlbnQoT3B0cy5VUkwuaW5kZXgpO1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICBUb2FzdC5jcmVhdGUoXCJFcnJvciBkZWxldGVkICFcIiwnJywgVE9BU1RfU1RBVFVTLkRBTkdFUiw1MDAwKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmNsaWNrT3JkZXJEZWxldGVDb25maXJtZWQ9ZnVuY3Rpb24gKGV2ZW50KXtcclxuICAgICAgICBkZWJ1ZygnY2xpY2tPcmRlckRlbGV0ZUNvbmZpcm1lZCcpO1xyXG4gICAgICAgIGRlYnVnKGV2ZW50KTtcclxuICAgICAgICBkZWJ1ZyhldmVudC5kYXRhKTtcclxuICAgICAgICAkKCcjZGlhbG9nTW9kYWwnKS5tb2RhbCgnaGlkZScpO1xyXG4gICAgICAgIGxldCBhamF4RGF0YT17fTtcclxuICAgICAgICBhamF4RGF0YS5fdG9rZW49T3B0cy50b2tlbjtcclxuICAgICAgICBsZXQgYWpheFVybD1PcHRzLlVSTC5kZXN0cm95LnJlcGxhY2UoJyVpZCUnLGV2ZW50LmRhdGEuaWQpO1xyXG4gICAgICAgICQuYWpheCh7XHJcbiAgICAgICAgICAgIHVybDphamF4VXJsLFxyXG4gICAgICAgICAgICBkYXRhOmFqYXhEYXRhLFxyXG4gICAgICAgICAgICBtZXRob2Q6XCJERUxFVEVcIixcclxuICAgICAgICAgICAgc3VjY2Vzczpyb290LmFmdGVyT3JkZXJEZWxldGVkLFxyXG4gICAgICAgICAgICAvL2Vycm9yOmFqYXhFcnJvckhhbmRsZXJcclxuICAgICAgICB9KTtcclxuXHJcbiAgICB9XHJcbiAgICB0aGlzLmluaXRWaWV3T3JkZXJTZWxlY3Q9ZnVuY3Rpb24gKCl7XHJcbiAgICAgICAgZGVidWcoJ2NhbGxlZCBpbml0Vmlld09yZGVyU2VsZWN0ICcpO1xyXG4gICAgICAgICQoJy5vcmRlcnNTZWxlY3RUYWJsZSBidXR0b24nKS5vZmYoJ2NsaWNrJyk7XHJcbiAgICAgICAgJCgnLm9yZGVyc1NlbGVjdFRhYmxlIGJ1dHRvbicpLm9uKCdjbGljaycsZnVuY3Rpb24gKCl7XHJcbiAgICAgICAgICAgIGxldCBhY3Rpb249JCh0aGlzKS5kYXRhKCdhY3Rpb24nKTtcclxuICAgICAgICAgICAgbGV0IG9yZGVySWQ9JCgkKHRoaXMpLmNsb3Nlc3QoJ3RyJylbMF0pLmRhdGEoJ29yZGVyaWQnKTtcclxuICAgICAgICAgICAgZGVidWcoYWN0aW9uKTtcclxuICAgICAgICAgICAgZGVidWcob3JkZXJJZCk7XHJcblxyXG4gICAgICAgICAgICBpZihhY3Rpb249PSdkZWxldGUnKXtcclxuICAgICAgICAgICAgICAgICQoJyNkaWFsb2dNb2RhbCcpLm9uKCdzaG93LmJzLm1vZGFsJywgZnVuY3Rpb24gKGV2ZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgbmVjZXNzYXJ5LCB5b3UgY291bGQgaW5pdGlhdGUgYW4gQUpBWCByZXF1ZXN0IGhlcmUgKGFuZCB0aGVuIGRvIHRoZSB1cGRhdGluZyBpbiBhIGNhbGxiYWNrKS5cclxuICAgICAgICAgICAgICAgICAgICAvLyBVcGRhdGUgdGhlIG1vZGFsJ3MgY29udGVudC4gV2UnbGwgdXNlIGpRdWVyeSBoZXJlLCBidXQgeW91IGNvdWxkIHVzZSBhIGRhdGEgYmluZGluZyBsaWJyYXJ5IG9yIG90aGVyIG1ldGhvZHMgaW5zdGVhZC5cclxuICAgICAgICAgICAgICAgICAgICB2YXIgbW9kYWwgPSAkKHRoaXMpO1xyXG4gICAgICAgICAgICAgICAgICAgIG1vZGFsLmZpbmQoJy5tb2RhbC10aXRsZScpLnRleHQoJ01lZ2VyxZFzw610w6lzICcpO1xyXG4gICAgICAgICAgICAgICAgICAgIG1vZGFsLmZpbmQoJy5tb2RhbC1ib2R5JykudGV4dCgnQml6dG9zYW4gdMO2cmxpIGEgbWVncmVuZGVsw6lzdD8nKTtcclxuICAgICAgICAgICAgICAgICAgICBtb2RhbC5maW5kKCcuYnV0dG9uWWVzJykub2ZmKCdjbGljaycpO1xyXG4gICAgICAgICAgICAgICAgICAgIG1vZGFsLmZpbmQoJy5idXR0b25ZZXMnKS5vbignY2xpY2snLHtpZDpvcmRlcklkfSxyb290LmNsaWNrT3JkZXJEZWxldGVDb25maXJtZWQpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAkKCcjZGlhbG9nTW9kYWwnKS5tb2RhbCgnc2hvdycpO1xyXG4gICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgIHJvb3QuY2xpY2tPcmRlckVkaXQoe2lkOm9yZGVySWR9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgICQoJy5idXR0b25OZXcnKS5vZmYoJ2NsaWNrJyk7XHJcbiAgICAgICAgJCgnLmJ1dHRvbk5ldycpLm9uKCdjbGljaycsZnVuY3Rpb24gKCl7XHJcbiAgICAgICAgICAgIEFQUC5sb2FkTWFpbkNvbnRlbnQoT3B0cy5VUkwuaW5kZXgsJ2ZvcmNlPXRydWUnKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICB9XHJcbiAgICB0aGlzLmluaXRTdGVwcGVyPWZ1bmN0aW9uICgpe1xyXG4gICAgICAgIGRlYnVnKE9yZGVyLmdldERhdGEoKSk7XHJcbiAgICAgICAgdmlld0luaWNpYWxpemVkPVtdO1xyXG4gICAgICAgICQoJy5zdGF0dXNOYW1lUGxhY2UnKS50ZXh0KCdOaW5jcyBlbGvDvGxkdmUnKTtcclxuICAgICAgICAkKCcuc3RhdHVzTmFtZVBsYWNlJykuYWRkQ2xhc3MoJ3N0YXR1c0JsaW5rJyk7XHJcbiAgICAgICAgcm9vdC5zZXREZWxpdmVyeURhdGUoJy0nKTtcclxuICAgICAgICByb290LnNldFN1cHBsaWVyKCctJyk7XHJcblxyXG4gICAgICAgIGxldCB1bkVuYWJsZWQ9WydwYXJhbWV0ZXInLCAncHJvZHVjdFNlbGVjdCcsICdpbnZvaWNlJywgJ3NlbmQnXTtcclxuICAgICAgICAkLmVhY2godW5FbmFibGVkLGZ1bmN0aW9uIChpbmRleCx2YWx1ZSkge1xyXG4gICAgICAgICAgICByb290LlN0ZXBwZXIudW5zZXRFbmFibGVkKHZhbHVlKTtcclxuICAgICAgICAgICAgcm9vdC5TdGVwcGVyLnVuc2V0Q29tcGxldGVkKHZhbHVlKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgZGVidWcocm9vdC5TdGVwcGVyLmdldE9wdHMoKVsnYXZhaWxhYmxlJ10pO1xyXG4gICAgICAgIGRlYnVnKE9yZGVyLmdldERhdGEoKVsnb3JkZXJTdGF0dXMnXSk7XHJcblxyXG4gICAgICAgIGxldCBzdGVwQWN0aXZlPSdzdXBwbGllcic7XHJcbiAgICAgICAgbGV0IHN0ZXBDb21wbGV0ZT1bJ3N1cHBsaWVyJ107XHJcbiAgICAgICAgbGV0IHN0ZXBFbmFibGU9W107XHJcbiAgICAgICAgbGV0IHN0ZXBPbkFmdGVyQWN0aXZhdGU9ZnVuY3Rpb24gKCl7fTtcclxuXHJcbiAgICAgICAgbGV0IGF2YWxhaWJsZVN0ZXBzPXJvb3QuU3RlcHBlci5nZXRPcHRzKClbJ2F2YWlsYWJsZSddO1xyXG4gICAgICAgIGxldCBzdGVwVXJsRGF0YT1mYWxzZTtcclxuICAgICAgICBsZXQgc3RlcEF1dG9DYWxsYmFjaz1bXTtcclxuICAgICAgICBmb3IgKGxldCBzdGVwTmFtZSBvZiBhdmFsYWlibGVTdGVwcykge1xyXG4gICAgICAgICAgICBzdGVwT25BZnRlckFjdGl2YXRlPXRoaXNbJ2luaXRWaWV3JytzdGVwTmFtZS5jYXBpdGFsaXplKCldO1xyXG4gICAgICAgICAgICBsZXQgaXRlbT17fTtcclxuICAgICAgICAgICAgaXRlbVsnb25BZnRlckFjdGl2YXRlJ109c3RlcE9uQWZ0ZXJBY3RpdmF0ZTtcclxuICAgICAgICAgICAgc3RlcEF1dG9DYWxsYmFja1tzdGVwTmFtZV09aXRlbTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZGVidWcoc3RlcEF1dG9DYWxsYmFjayk7XHJcbiAgICAgICAgZGVidWcoT3JkZXIuZ2V0RGF0YSgpWydpZCddKTtcclxuICAgICAgICBpZihPcmRlci5nZXREYXRhKClbJ2lkJ10+MCl7XHJcbiAgICAgICAgICAgIGRlYnVnKCdoYWpyYScpO1xyXG4gICAgICAgICAgICBkZWJ1ZyhPcmRlci5nZXREYXRhKCkpO1xyXG4gICAgICAgICAgICBpZihPcmRlci5nZXREYXRhKClbJ2RlbGl2ZXJ5RGF0ZSddKXtcclxuICAgICAgICAgICAgICAgIHJvb3Quc2V0RGVsaXZlcnlEYXRlKE9yZGVyLmdldERhdGEoKVsnZGVsaXZlcnlEYXRlJ10pO1xyXG4gICAgICAgICAgICAgICAgLypcclxuICAgICAgICAgICAgICAgIEB0b2RvOiB3ZWVrbHktdCBiZWFsbGl0YW5pXHJcbiAgICAgICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZihPcmRlci5nZXREYXRhKClbJ3N1cHBsaWVyTmFtZSddKXtcclxuICAgICAgICAgICAgICAgIHJvb3Quc2V0U3VwcGxpZXIoT3JkZXIuZ2V0RGF0YSgpWydzdXBwbGllck5hbWUnXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgc3RlcFVybERhdGE9eydzdXBwbGllcklkJzpPcmRlci5zdXBwbGllcklkLGlkOk9yZGVyLmlkfTtcclxuICAgICAgICAgICAgZm9yIChsZXQgc3RlcE5hbWUgb2YgYXZhbGFpYmxlU3RlcHMpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHN0ZXBOYW1lKTtcclxuICAgICAgICAgICAgICAgIHN0ZXBDb21wbGV0ZS5wdXNoKHN0ZXBOYW1lKTtcclxuICAgICAgICAgICAgICAgIHN0ZXBFbmFibGUucHVzaChzdGVwTmFtZSk7XHJcbiAgICAgICAgICAgICAgICBpZihPcmRlci5nZXREYXRhKClbJ29yZGVyU3RhdHVzJ109PXN0ZXBOYW1lKXtcclxuICAgICAgICAgICAgICAgICAgICBzdGVwQWN0aXZlPXN0ZXBOYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgIC8qXHJcbiAgICAgICAgICAgICAgICAgICAgZGVidWcoJ2luaXRWaWV3JytzdGVwTmFtZS5jYXBpdGFsaXplKCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHN0ZXBOYW1lIT09J2ludm9pY2UnICYmIHN0ZXBOYW1lIT09J3NlbmQnKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RlcE9uQWZ0ZXJBY3RpdmF0ZT10aGlzWydpbml0Vmlldycrc3RlcE5hbWUuY2FwaXRhbGl6ZSgpXTtcclxuICAgICAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RlcE9uQWZ0ZXJBY3RpdmF0ZT1mdW5jdGlvbiAoKXt9O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4vKlxyXG4gICAgICAgICAgICAvL3JlZmFjdG9yZWQgZm9yIGxvb3BcclxuICAgICAgICAgICAgdmFyIEJyZWFrRXhjZXB0aW9uID0ge307XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBhdmFsYWlibGVTdGVwcy5mb3JFYWNoKGZ1bmN0aW9uKHN0ZXBOYW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coc3RlcE5hbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHN0ZXBDb21wbGV0ZS5wdXNoKHN0ZXBOYW1lKTtcclxuICAgICAgICAgICAgICAgICAgICBzdGVwRW5hYmxlLnB1c2goc3RlcE5hbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKE9yZGVyLmdldERhdGEoKVsnb3JkZXJTdGF0dXMnXT09c3RlcE5hbWUpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGVwQWN0aXZlPXN0ZXBOYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBCcmVha0V4Y2VwdGlvbjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIGlmIChlICE9PSBCcmVha0V4Y2VwdGlvbikgdGhyb3cgZTtcclxuICAgICAgICAgICAgfSovXHJcblxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcm9vdC5TdGVwcGVyLmluaXQoe1xyXG4gICAgICAgICAgICBjb21wbGV0ZTpzdGVwQ29tcGxldGUsXHJcbiAgICAgICAgICAgIGVuYWJsZTpzdGVwRW5hYmxlLFxyXG4gICAgICAgICAgICBsb2FkZWQ6W10sXHJcbiAgICAgICAgICAgIGFjdGl2ZTogc3RlcEFjdGl2ZSxcclxuICAgICAgICAgICAgVVJMOiB7XHJcbiAgICAgICAgICAgICAgICBjcmVhdGU6IE9wdHMuVVJMLmNyZWF0ZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgVXJsRGF0YTpzdGVwVXJsRGF0YSxcclxuICAgICAgICAgICAgb25BZnRlckFjdGl2YXRlOnN0ZXBPbkFmdGVyQWN0aXZhdGUsXHJcbiAgICAgICAgICAgIGF1dG9DYWxsYmFjazogc3RlcEF1dG9DYWxsYmFjayxcclxuICAgICAgICAgICAgLyp7XHJcbiAgICAgICAgICAgICAgICBpbnZvaWNlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgb25BZnRlckFjdGl2YXRlOnJvb3QuaW5pdFZpZXdJbnZvaWNlXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgc2VuZDoge1xyXG4gICAgICAgICAgICAgICAgICAgIG9uQWZ0ZXJBY3RpdmF0ZTpyb290LmluaXRWaWV3U2VuZFxyXG4gICAgICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICAgIH0qL1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaW5pdE9yZGVyPWZ1bmN0aW9uIChkYXRhKXtcclxuICAgICAgICBPcmRlcj1uZXcgRGF0YU1vZGVsT3JkZXIoZGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pbml0ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcclxuICAgICAgICBkZWJ1ZygnT3JkZXJNb2R1bCBpbml0IGNhbGxlZCcpO1xyXG4gICAgICAgICQuZXh0ZW5kKE9wdHMsIHdpbmRvdy5PcmRlck1vZHVsRGVmYXVsdCwgb3B0aW9ucyk7XHJcbiAgICAgICAgT3JkZXI9bmV3IERhdGFNb2RlbE9yZGVyKCk7XHJcbiAgICAgICAgaWYoT3B0cy5uZWVkU3RlcHBlcil7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5TdGVwcGVyID09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLlN0ZXBwZXI9bmV3IFN0ZXBwZXIoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZihPcHRzLnRlc3RNb2RlKXtcclxuICAgICAgICAgICAgcmV0dXJuIHJvb3QudGVzdE1vZGUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZXRTdXBwbGllcj1mdW5jdGlvbiAoc3VwcGxpZXJOYW1lLHN1cHBsaWVySWQpe1xyXG4gICAgICAgaWYoc3VwcGxpZXJOYW1lKXtcclxuICAgICAgICAgICAkKCcuc3VwcGxpZXJOYW1lUGxhY2UnKS50ZXh0KHN1cHBsaWVyTmFtZSk7XHJcbiAgICAgICB9XHJcbiAgICAgICBpZihzdXBwbGllcklkKXtcclxuICAgICAgICAgICBPcmRlci5zZXREYXRhKHtzdXBwbGllcklkOnN1cHBsaWVySWR9KTtcclxuICAgICAgICAgICByb290LlN0ZXBwZXIuc2V0T3B0cyh7J1VybERhdGEnOnsnc3VwcGxpZXJJZCc6c3VwcGxpZXJJZH19KTtcclxuICAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuc2V0RGVsaXZlcnlEYXRlPWZ1bmN0aW9uIChkYXRlVGV4dCxkYXRlVGV4dFRvKXtcclxuICAgICAgICBsZXQgZGF0ZVRleHRIdW1hbj1kYXRlVGV4dC5yZXBsYWNlQWxsKCctJywnLicpKycuJztcclxuICAgICAgICBpZihkYXRlVGV4dEh1bWFuLmxlbmd0aDw1KXtcclxuICAgICAgICAgICAgJCgnLmRlbGl2ZXJ5RGF0ZVBsYWNlJykudGV4dChkYXRlVGV4dCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYoZGF0ZVRleHRUbyl7XHJcbiAgICAgICAgICAgIGRhdGVUZXh0SHVtYW4rPScgLSAnK2RhdGVUZXh0VG8ucmVwbGFjZUFsbCgnLScsJy4nKSsnLic7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAkKE9wdHMuQ1NTU2VsZWN0b3JGb3JtKycgLnNlbGVjdGVkRGF0ZVRleHQnKS50ZXh0KGRhdGVUZXh0SHVtYW4pO1xyXG4gICAgICAgICQoJy5kZWxpdmVyeURhdGVQbGFjZScpLnRleHQoZGF0ZVRleHRIdW1hbik7XHJcbiAgICAgICAgJChPcHRzLkNTU1NlbGVjdG9yRm9ybSsnIGlucHV0W25hbWU9XCJkZWxpdmVyeURhdGVcIl0nKS52YWwoZGF0ZVRleHQpO1xyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgdGhpcy5nZXREYXRhPWZ1bmN0aW9uICgpe1xyXG4gICAgICAgIHJldHVybiBPcmRlcjtcclxuICAgIH1cclxuXHJcblxyXG4gICAgdGhpcy5zZXRTdXBwbGllckNvbXBsZXRlZD1mdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ2JpbmdvJyk7XHJcbiAgICAgICAgcm9vdC5pbml0Vmlld1BhcmFtZXRlcigpXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hZnRlck9yZGVyU2V0U3VwcGxpZXJPaz1mdW5jdGlvbiAoZGF0YSkge1xyXG4gICAgICAgIFRvYXN0LmNyZWF0ZShcIlN1cHBsaWVyIHNlbGVjdGVkICFcIixkYXRhLnN1cHBsaWVyLm5hbWUgLCBUT0FTVF9TVEFUVVMuSU5GTyw1MDAwKTtcclxuICAgICAgICByb290LnNldFN1cHBsaWVyKGRhdGEuc3VwcGxpZXIubmFtZSxkYXRhLnN1cHBsaWVyLmlkKTtcclxuICAgICAgICBPcmRlci5zZXREYXRhKHtpZDpkYXRhLmlkfSk7XHJcbiAgICAgICAgcm9vdC5TdGVwcGVyLnNldE9wdHMoeydVcmxEYXRhJzp7J3N1cHBsaWVySWQnOk9yZGVyLnN1cHBsaWVySWQsaWQ6T3JkZXIuaWR9fSk7XHJcbiAgICAgICAgLy9yb290LlN0ZXBwZXIuc2V0T3B0cyh7b25BZnRlckxvYWQ6cm9vdC5zZXRTdXBwbGllckNvbXBsZXRlZH0pXHJcbiAgICAgICAgcm9vdC5TdGVwcGVyLnNldEVuYWJsZWQoJ3BhcmFtZXRlcicpO1xyXG4gICAgICAgIHJvb3QuU3RlcHBlci5hZGRDb21wbGV0ZWQoJ3BhcmFtZXRlcicpO1xyXG4gICAgICAgIHJvb3QuU3RlcHBlci5zZXRDb21wbGV0ZWQoJ3BhcmFtZXRlcicpO1xyXG4gICAgICAgIHJvb3QuU3RlcHBlci5zZXRBY3RpdmUoJ3BhcmFtZXRlcicpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICB0aGlzLmluaXRWaWV3U3VwcGxpZXI9ZnVuY3Rpb24gKCl7XHJcbiAgICAgICAgZGVidWcoJ2NhbGwgaW5pdFZpZXdTdXBwbGllcicpO1xyXG4gICAgICAgIHJvb3QuU3RlcHBlci5zZXRPcHRzKHtvbkFmdGVyTG9hZDpmdW5jdGlvbiAoKXt9fSk7XHJcbiAgICAgICAgJCgnLnN1cHBsaWVySXRlbScpLm9mZignY2xpY2snKTtcclxuICAgICAgICAkKCcuc3VwcGxpZXJJdGVtJykub24oJ2NsaWNrJyxmdW5jdGlvbihldmVudCl7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKE9yZGVyLmdldERhdGEoKSk7XHJcblxyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBsZXQgc3VwcGxpZXJJZD0kKGV2ZW50LmN1cnJlbnRUYXJnZXQpLmRhdGEoJ2lkJyk7XHJcbiAgICAgICAgICAgIGxldCBzdXBwbGllck5hbWU9JChldmVudC5jdXJyZW50VGFyZ2V0KS5maW5kKCdoNS5jYXJkLXRpdGxlJykudGV4dCgpO1xyXG4gICAgICAgICAgICBpZih0eXBlb2YgT3JkZXIuc3VwcGxpZXJJZD09J3VuZGVmaW5lZCcpe1xyXG4gICAgICAgICAgICAgICAgLy9uZXcgb3JkZXJcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgYWpheERhdGE9e307XHJcbiAgICAgICAgICAgICAgICBhamF4RGF0YS5fdG9rZW49T3B0cy50b2tlbjtcclxuICAgICAgICAgICAgICAgIGFqYXhEYXRhLnN1cHBsaWVySWQ9c3VwcGxpZXJJZDtcclxuICAgICAgICAgICAgICAgIGFqYXhEYXRhLnN0b3JlVHlwZT0nc3VwcGxpZXJTZWxlY3QnO1xyXG4gICAgICAgICAgICAgICAgJC5leHRlbmQoYWpheERhdGEsT3JkZXIpO1xyXG4gICAgICAgICAgICAgICAgJC5hamF4KHtcclxuICAgICAgICAgICAgICAgICAgICB1cmw6IE9wdHMuVVJMLnN0b3JlLFxyXG4gICAgICAgICAgICAgICAgICAgIG1ldGhvZDonUE9TVCcsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YTphamF4RGF0YSxcclxuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOmZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGRhdGEuc3VjY2Vzcyl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb290LmFmdGVyT3JkZXJTZXRTdXBwbGllck9rKGRhdGEuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIC8vT3JkZXIuc2V0RGF0YSh7c3VwcGxpZXJJZDpzdXBwbGllcklkfSk7XHJcbiAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgLy9pZGUga2VsbGVuZSBlZ3kgam8ga2lzIGtlcmRlc1xyXG4gICAgICAgICAgICAgICAgaWYoT3JkZXIuc3VwcGxpZXJJZCE9c3VwcGxpZXJJZCl7XHJcbiAgICAgICAgICAgICAgICAgICAgVG9hc3QuY3JlYXRlKFwiU3VwcGxpZXIgY2hhbmdlIHRvIVwiLCBzdXBwbGllck5hbWUsIFRPQVNUX1NUQVRVUy5XQVJOSU5HLDUwMDApO1xyXG4gICAgICAgICAgICAgICAgICAgIHJvb3QuU3RlcHBlci5jbGVhckxvYWRlZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIE9yZGVyPW5ldyBEYXRhTW9kZWxPcmRlcigpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vT3JkZXIuc2V0RGF0YSh7c3VwcGxpZXJJZDpzdXBwbGllcklkfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJy0tLS0tLS0tLS0tJyk7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKHJvb3QuU3RlcHBlci5nZXRPcHRzKCkpO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnLS0tLS0tLS0tLS0nKTtcclxuXHJcbiAgICAgICAgICAgIC8vJCgnLnN1cHBsaWVyTmFtZVBsYWNlJykudGV4dChzdXBwbGllck5hbWUpO1xyXG4gICAgICAgICAgICByb290LnNldFN1cHBsaWVyKHN1cHBsaWVyTmFtZSxzdXBwbGllcklkKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coc3VwcGxpZXJOYW1lKVxyXG4gICAgICAgICAgICAvL0B0b2RvOmlkZSBrZWxsIGVneSBtZW50ZXMhXHJcbiAgICAgICAgICAgIC8vQHRvZG86bWVudGVzIGVyZWRlbWVueWVrZXBwZW4gbGVoZXQgdmFsdGFuaVxyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICByb290LlN0ZXBwZXIuc2V0T3B0cyh7b25BZnRlckxvYWQ6cm9vdC5zZXRTdXBwbGllckNvbXBsZXRlZH0pXHJcbiAgICAgICAgICAgIHJvb3QuU3RlcHBlci5zZXRFbmFibGVkKCdwYXJhbWV0ZXInKTtcclxuICAgICAgICAgICAgcm9vdC5TdGVwcGVyLmFkZENvbXBsZXRlZCgncGFyYW1ldGVyJyk7XHJcbiAgICAgICAgICAgIHJvb3QuU3RlcHBlci5zZXRDb21wbGV0ZWQoJ3BhcmFtZXRlcicpO1xyXG4gICAgICAgICAgICByb290LlN0ZXBwZXIuc2V0QWN0aXZlKCdwYXJhbWV0ZXInKTtcclxuXHJcblxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2hlY2tDb250YWN0TmFtZUZpZWxkPWZ1bmN0aW9uICgpIHtcclxuICAgICAgICBsZXQgQ1NTU2VsZWN0b3JGb3JtPScub3JkZXJQYXJhbWV0ZXJGb3JtJztcclxuICAgICAgICBsZXQgbm9kZT0kKENTU1NlbGVjdG9yRm9ybSsnIGlucHV0W25hbWU9Y29udGFjdE5hbWVdJyk7XHJcbiAgICAgICAgaWYobm9kZS52YWwoKS5sZW5ndGg8Mil7XHJcbiAgICAgICAgICAgIG5vZGUucmVtb3ZlQ2xhc3MoJ2lzLXZhbGlkJyk7XHJcbiAgICAgICAgICAgIG5vZGUuYWRkQ2xhc3MoJ2lzLWludmFsaWQnKTtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICBub2RlLmFkZENsYXNzKCdpcy12YWxpZCcpO1xyXG4gICAgICAgICAgICBub2RlLnJlbW92ZUNsYXNzKCdpcy1pbnZhbGlkJyk7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIHRoaXMuc2VuZE9yZGVyRGF0YVRvU2VydmVyPWZ1bmN0aW9uICh1cGRhdGVUeXBlLGNhbGxiYWNrLGVycm9yQ2FsbGJhY2spIHtcclxuICAgICAgICBsZXQgYWpheERhdGE9IHt9O1xyXG4gICAgICAgIGxldCBhamF4VXJsPU9wdHMuVVJMLnN0b3JlO1xyXG4gICAgICAgIGxldCBhamF4TWV0aG9kPVwiUE9TVFwiO1xyXG4gICAgICAgIGlmKE9yZGVyLmlkKXtcclxuICAgICAgICAgICAgYWpheFVybD1PcHRzLlVSTC51cGRhdGUucmVwbGFjZSgnJWlkJScsT3JkZXIuaWQpO1xyXG4gICAgICAgICAgICAvL2FqYXhNZXRob2Q9XCJQVVRcIjtcclxuICAgICAgICAgICAgLy9hamF4RGF0YT1uZXcgRm9ybURhdGEoJChDU1NTZWxlY3RvckZvcm0pWzBdKTtcclxuICAgICAgICAgICAgYWpheERhdGEuX21ldGhvZD0nUFVUJztcclxuICAgICAgICB9XHJcbiAgICAgICAgYWpheERhdGEuX3Rva2VuPU9wdHMudG9rZW47XHJcbiAgICAgICAgYWpheERhdGEudXBkYXRlVHlwZT11cGRhdGVUeXBlO1xyXG4gICAgICAgICQuZXh0ZW5kKGFqYXhEYXRhLE9yZGVyKTtcclxuICAgICAgICBkZWJ1ZyhPcmRlcik7XHJcbiAgICAgICAgZGVidWcoYWpheERhdGEpO1xyXG4gICAgICAgIGRlYnVnKCdhamF4VXJsOicrYWpheFVybCk7XHJcbiAgICAgICAgYWpheERhdGE9anNvblRvRm9ybURhdGEoYWpheERhdGEpO1xyXG4gICAgICAgICQuYWpheCh7XHJcbiAgICAgICAgICAgIHVybDphamF4VXJsLFxyXG4gICAgICAgICAgICBkYXRhOmFqYXhEYXRhLFxyXG4gICAgICAgICAgICB0eXBlOmFqYXhNZXRob2QsXHJcbiAgICAgICAgICAgIGNvbnRlbnRUeXBlOmZhbHNlLFxyXG4gICAgICAgICAgICBwcm9jZXNzRGF0YTogZmFsc2UsXHJcbiAgICAgICAgICAgIHN1Y2Nlc3M6ZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgIGRlYnVnKCdhamF4IHJldHVybmVkIGRhdGEnKTtcclxuICAgICAgICAgICAgICAgIGRlYnVnKGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgaWYoZGF0YS5zdWNjZXNzKXtcclxuICAgICAgICAgICAgICAgICAgICAvL3Jvb3QuYWZ0ZXJPcmRlclNldFN1cHBsaWVyT2soZGF0YS5kYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhkYXRhKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uICh4aHIsIGFqYXhPcHRpb25zLCB0aHJvd25FcnJvcikge1xyXG4gICAgICAgICAgICAgICAgYWpheEVycm9ySGFuZGxlcih4aHIsIGFqYXhPcHRpb25zLCB0aHJvd25FcnJvcik7XHJcbiAgICAgICAgICAgICAgICBpZih0eXBlb2YgZXJyb3JDYWxsYmFjayE9J3VuZGVmaW5lZCcpe1xyXG4gICAgICAgICAgICAgICAgICAgIGVycm9yQ2FsbGJhY2soeGhyLnJlc3BvbnNlSlNPTik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgIH1cclxuICAgIHRoaXMuYWZ0ZXJPcmRlclNldFBhcmFtZXRlck9rPWZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgZGVidWcoJ2NhbGxlZCBhZnRlck9yZGVyU2V0UGFyYW1ldGVyT2snKTtcclxuICAgICAgICByb290LlN0ZXBwZXIuc2V0T3B0cyh7J1VybERhdGEnOnsnc3VwcGxpZXJJZCc6T3JkZXIuc3VwcGxpZXJJZCwnaWQnOk9yZGVyLmlkfX0pO1xyXG4gICAgICAgIC8vcm9vdC5TdGVwcGVyLnNldE9wdHMoe29uQWZ0ZXJMb2FkOnJvb3Quc2V0UGFyYW1ldGVyQ29tcGxldGVkfSlcclxuICAgICAgICByb290LlN0ZXBwZXIuc2V0RW5hYmxlZCgncHJvZHVjdFNlbGVjdCcpO1xyXG4gICAgICAgIHJvb3QuU3RlcHBlci5hZGRDb21wbGV0ZWQoJ3Byb2R1Y3RTZWxlY3QnKTtcclxuICAgICAgICByb290LlN0ZXBwZXIuc2V0Q29tcGxldGVkKCdwcm9kdWN0U2VsZWN0Jyk7XHJcbiAgICAgICAgcm9vdC5TdGVwcGVyLnNldEFjdGl2ZSgncHJvZHVjdFNlbGVjdCcpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZWxlY3RDdXJyZW50V2VlayA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ3NlbGVjdEN1cnJlbnRXZWVrJyk7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcigkKCcudWktZGF0ZXBpY2tlcicpLmZpbmQoJy51aS1kYXRlcGlja2VyLWN1cnJlbnQtZGF5IGEnKSk7XHJcbiAgICAgICAgJCgnLnVpLWRhdGVwaWNrZXInKS5maW5kKCcudWktZGF0ZXBpY2tlci1jdXJyZW50LXNlbGVjdGVkLXdlZWtkYXkgYScpLmFkZENsYXNzKCd1aS1zdGF0ZS1hY3RpdmUnKVxyXG4gICAgfVxyXG4gICAgdGhpcy53ZWVrSG92ZXIgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdob3ZlciBBY3RpdmUnKTtcclxuICAgICAgICAkKCcudWktZGF0ZXBpY2tlci1jYWxlbmRhciB0cicpLm9mZignbW91c2Vtb3ZlJyk7XHJcbiAgICAgICAgJCgnLnVpLWRhdGVwaWNrZXItY2FsZW5kYXIgdHInKS5vZmYoJ21vdXNlbGVhdmUnKTtcclxuXHJcbiAgICAgICAgJCgnLnVpLWRhdGVwaWNrZXItY2FsZW5kYXIgdHInKS5vbignbW91c2Vtb3ZlJywgZnVuY3Rpb24oKSB7ICQodGhpcykuZmluZCgndGQgYScpLmFkZENsYXNzKCd1aS1zdGF0ZS1ob3ZlcicpOyB9KTtcclxuICAgICAgICAkKCcudWktZGF0ZXBpY2tlci1jYWxlbmRhciB0cicpLm9uKCdtb3VzZWxlYXZlJywgZnVuY3Rpb24oKSB7ICQodGhpcykuZmluZCgndGQgYScpLnJlbW92ZUNsYXNzKCd1aS1zdGF0ZS1ob3ZlcicpOyB9KTtcclxuXHJcbiAgICB9XHJcbiAgICB0aGlzLndlZWtIb3ZlclNsb3cgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCd3ZWVrSG92ZXJTbG93Jyk7XHJcbiAgICAgICAgaWYoJCgnLnVpLWRhdGVwaWNrZXItY2FsZW5kYXIgdHInKS5sZW5ndGg8MSl7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQocm9vdC53ZWVrSG92ZXJTbG93LCAxKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICByb290LndlZWtIb3ZlcigpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pbml0RGF0ZVBpY2tlcj1mdW5jdGlvbiAodHlwZSkge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ2FzZGFzZGFkYWQnKTtcclxuICAgICAgICBjb25zb2xlLmxvZygndGlwdXMnICsgdHlwZSk7XHJcbiAgICAgICAgbGV0IENTU1NlbGVjdG9yRm9ybSA9ICcub3JkZXJQYXJhbWV0ZXJGb3JtJztcclxuICAgICAgICBsZXQgc3RhcnREYXRlPW5ldyBEYXRlKCcxOTAwLTAxLTAxJyk7XHJcbiAgICAgICAgbGV0IGVuZERhdGU9bmV3IERhdGUoJzE5MDAtMDEtMDInKTtcclxuXHJcbiAgICAgICAgJChDU1NTZWxlY3RvckZvcm0gKyAnIC5kYXRlUGlja2VyJykuZGF0ZXBpY2tlcihcImRlc3Ryb3lcIik7XHJcblxyXG4gICAgICAgIGlmICh0eXBlID09ICd3ZWVrbHknKSB7XHJcbiAgICAgICAgICAgICQoQ1NTU2VsZWN0b3JGb3JtICsgJyAuZGF0ZVBpY2tlcicpLmRhdGVwaWNrZXIoe1xyXG4gICAgICAgICAgICAgICAgc2hvd090aGVyTW9udGhzOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgc2VsZWN0T3RoZXJNb250aHM6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBzaG93V2VlazogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGRhdGVGb3JtYXQ6ICd5eS1tbS1kZCcsXHJcbiAgICAgICAgICAgICAgICBmaXJzdERheTogMSxcclxuICAgICAgICAgICAgICAgIG1pbkRhdGU6IG5ldyBEYXRlKCksXHJcbiAgICAgICAgICAgICAgICBhZnRlclNob3c6IGZ1bmN0aW9uIChkYXRlVGV4dCwgaW5zdCkge1xyXG4gICAgICAgICAgICAgICAgICByb290LndlZWtIb3ZlcigpO1xyXG4gICAgICAgICAgICAgICAgICByb290LnNlbGVjdEN1cnJlbnRXZWVrKCk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgb25TZWxlY3Q6IGZ1bmN0aW9uIChkYXRlVGV4dCwgaW5zdCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBkYXRlID0gJCh0aGlzKS5kYXRlcGlja2VyKCdnZXREYXRlJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RhcnREYXRlID0gbmV3IGdldE1vbmRheShkYXRlKTtcclxuICAgICAgICAgICAgICAgICAgICBlbmREYXRlID0gbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIGRhdGUuZ2V0RGF0ZSgpIC0gZGF0ZS5nZXREYXkoKSArIDcpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJvb3Quc2V0RGVsaXZlcnlEYXRlKCQuZGF0ZXBpY2tlci5mb3JtYXREYXRlKCAneXktbW0tZGQnLHN0YXJ0RGF0ZSksJC5kYXRlcGlja2VyLmZvcm1hdERhdGUoICd5eS1tbS1kZCcsZW5kRGF0ZSkpXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgYmVmb3JlU2hvdzogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZ3JvdXAoJ2JlZm9yZVNob3cnKVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHN0YXJ0RGF0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coZW5kRGF0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy9yb290LndlZWtIb3ZlclNsb3coKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmdyb3VwRW5kKCk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgYmVmb3JlU2hvd0RheTogZnVuY3Rpb24oZGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZ3JvdXAoJ2JlZm9yZVNob3dEYXknKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZygnaHUtSHUnKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNzc0NsYXNzID0gJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoZGF0ZSA+PSBzdGFydERhdGUgJiYgZGF0ZSA8PSBlbmREYXRlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZygnaHUtSHUnKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNzc0NsYXNzID0gJ3VpLWRhdGVwaWNrZXItY3VycmVudC1zZWxlY3RlZC13ZWVrZGF5JztcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy9jc3NDbGFzcyA9ICd1aS1zdGF0ZS1hY3RpdmUnO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhjc3NDbGFzcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5ncm91cEVuZCgpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gW3RydWUsIGNzc0NsYXNzXTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBvbkNoYW5nZU1vbnRoWWVhcjogZnVuY3Rpb24oeWVhciwgbW9udGgsIGluc3QpIHtcclxuICAgICAgICAgICAgICAgICAgICAvL3Jvb3Quc2VsZWN0Q3VycmVudFdlZWsoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICQoQ1NTU2VsZWN0b3JGb3JtICsgJyAuZGF0ZVBpY2tlcicpLmRhdGVwaWNrZXIoe1xyXG4gICAgICAgICAgICAgICAgZGF0ZUZvcm1hdDogJ3l5LW1tLWRkJyxcclxuICAgICAgICAgICAgICAgIG1pbkRhdGU6IG5ldyBEYXRlKCksXHJcbiAgICAgICAgICAgICAgICBvblNlbGVjdDogZnVuY3Rpb24gKGRhdGVUZXh0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgJChDU1NTZWxlY3RvckZvcm0gKyAnIC5zZWxlY3RlZERhdGVUZXh0JykudGV4dChkYXRlVGV4dCk7XHJcbiAgICAgICAgICAgICAgICAgICAgJCgnLmRlbGl2ZXJ5RGF0ZVBsYWNlJykudGV4dChkYXRlVGV4dC5yZXBsYWNlQWxsKCctJywgJy4nKSArICcuJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgJChDU1NTZWxlY3RvckZvcm0gKyAnIGlucHV0W25hbWU9XCJkZWxpdmVyeURhdGVcIl0nKS52YWwoZGF0ZVRleHQpO1xyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmNhbGxDaGFuZ2VPcmRlclR5cGU9ZnVuY3Rpb24oKXtcclxuICAgICAgICBjb25zb2xlLmxvZyh0aGlzKTtcclxuICAgICAgICBjb25zb2xlLmxvZyh0aGlzLnZhbHVlKTtcclxuICAgICAgICByb290LmluaXREYXRlUGlja2VyKHRoaXMudmFsdWUpO1xyXG4gICAgICAgIC8vZW51bSgnZGFpbHknLCAnd2Vla2x5JylcclxuICAgICAgICAvKmxldCBDU1NTZWxlY3RvckZvcm09Jy5vcmRlclBhcmFtZXRlckZvcm0nO1xyXG4gICAgICAgIGxldCBub2RlPSQoQ1NTU2VsZWN0b3JGb3JtKycgaW5wdXRbbmFtZT1jb250YWN0TmFtZV0nKTtcclxuICAgICAgICBpZihub2RlLnZhbCgpLmxlbmd0aDwyKXtcclxuICAgICAgICAgICAgbm9kZS5yZW1vdmVDbGFzcygnaXMtdmFsaWQnKTtcclxuICAgICAgICAgICAgbm9kZS5hZGRDbGFzcygnaXMtaW52YWxpZCcpO1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIG5vZGUuYWRkQ2xhc3MoJ2lzLXZhbGlkJyk7XHJcbiAgICAgICAgICAgIG5vZGUucmVtb3ZlQ2xhc3MoJ2lzLWludmFsaWQnKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgICovXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pbml0Vmlld1BhcmFtZXRlcj1mdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgZGVidWcoJ2NhbGwgaW5pdFZpZXdQYXJhbWV0ZXInKTtcclxuICAgICAgICByb290LlN0ZXBwZXIuc2V0T3B0cyh7b25BZnRlckxvYWQ6ZnVuY3Rpb24gKCl7fX0pO1xyXG4gICAgICAgIGxldCBDU1NTZWxlY3RvckZvcm09Jy5vcmRlclBhcmFtZXRlckZvcm0nO1xyXG4gICAgICAgICQoQ1NTU2VsZWN0b3JGb3JtKycgLmRhdGVQaWNrZXJDbGljaycpLmNsaWNrKGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICQoQ1NTU2VsZWN0b3JGb3JtKycgLmRhdGVQaWNrZXInKS5kYXRlcGlja2VyKCdzaG93Jyk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICQoQ1NTU2VsZWN0b3JGb3JtKycgLm9yZGVyUGFyYW1ldGVyRGVsaXZlcnlBZGRyZXNzJykuc2VsZWN0Mih7fSkuc2hvdygpO1xyXG4gICAgICAgICQoQ1NTU2VsZWN0b3JGb3JtKycgaW5wdXRbbmFtZT1jb250YWN0TmFtZV0nKS5vZmYoJ2JsdXInKTtcclxuICAgICAgICAkKENTU1NlbGVjdG9yRm9ybSsnIGlucHV0W25hbWU9Y29udGFjdE5hbWVdJykub2ZmKCdrZXl1cCcpO1xyXG4gICAgICAgICQoQ1NTU2VsZWN0b3JGb3JtKycgaW5wdXRbbmFtZT1jb250YWN0TmFtZV0nKS5vbignYmx1cicscm9vdC5jaGVja0NvbnRhY3ROYW1lRmllbGQpO1xyXG4gICAgICAgICQoQ1NTU2VsZWN0b3JGb3JtKycgaW5wdXRbbmFtZT1jb250YWN0TmFtZV0nKS5vbigna2V5dXAnLHJvb3QuY2hlY2tDb250YWN0TmFtZUZpZWxkKTtcclxuXHJcbiAgICAgICAgJChDU1NTZWxlY3RvckZvcm0rJyBpbnB1dFtuYW1lPW9yZGVyVHlwZV0nKS5vZmYoJ2NoYW5nZScpO1xyXG4gICAgICAgICQoQ1NTU2VsZWN0b3JGb3JtKycgaW5wdXRbbmFtZT1vcmRlclR5cGVdJykub24oJ2NoYW5nZScscm9vdC5jYWxsQ2hhbmdlT3JkZXJUeXBlKTtcclxuXHJcblxyXG4gICAgICAgICQoQ1NTU2VsZWN0b3JGb3JtKycgLm9yZGVyUGFyYW1ldGVyTmV4dEJ1dHRvbicpLm9mZignY2xpY2snKTtcclxuICAgICAgICBpZihPcmRlci5nZXREYXRhKClbJ2lkJ10+MCl7XHJcbiAgICAgICAgICAgIGlmKE9yZGVyLmdldERhdGEoKVsnb3JkZXJUeXBlJ109PSd3ZWVrbHknKXtcclxuICAgICAgICAgICAgICAgIHJvb3QuaW5pdERhdGVQaWNrZXIoT3JkZXIuZ2V0RGF0YSgpWydvcmRlclR5cGUnXSk7XHJcbiAgICAgICAgICAgICAgICAkKENTU1NlbGVjdG9yRm9ybStcIiBpbnB1dFtuYW1lPW9yZGVyVHlwZV1bdmFsdWU9XCIgKyBPcmRlci5nZXREYXRhKClbJ29yZGVyVHlwZSddICsgXCJdXCIpLnByb3AoJ2NoZWNrZWQnLCB0cnVlKTtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBlbmREYXRlID0gbmV3IERhdGUoT3JkZXIuZ2V0RGF0YSgpWydkZWxpdmVyeURhdGUnXSk7XHJcbiAgICAgICAgICAgICAgICBlbmREYXRlLnNldERhdGUoZW5kRGF0ZS5nZXREYXRlKCkgKyA2KTtcclxuICAgICAgICAgICAgICAgIHJvb3Quc2V0RGVsaXZlcnlEYXRlKE9yZGVyLmdldERhdGEoKVsnZGVsaXZlcnlEYXRlJ10sJC5kYXRlcGlja2VyLmZvcm1hdERhdGUoICd5eS1tbS1kZCcsZW5kRGF0ZSkpO1xyXG4gICAgICAgICAgICAgICAgcm9vdC5pbml0RGF0ZVBpY2tlcignd2Vla2x5Jyk7XHJcbiAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgaWYoT3JkZXIuZ2V0RGF0YSgpWydkZWxpdmVyeURhdGUnXSl7XHJcbiAgICAgICAgICAgICAgICAgICAgcm9vdC5zZXREZWxpdmVyeURhdGUoT3JkZXIuZ2V0RGF0YSgpWydkZWxpdmVyeURhdGUnXSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByb290LmluaXREYXRlUGlja2VyKCdkYWlseScpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG5cclxuXHJcbiAgICAgICAgICAgIGlmKE9yZGVyLmdldERhdGEoKVsnY29udGFjdE5hbWUnXSl7XHJcbiAgICAgICAgICAgICAgICAkKENTU1NlbGVjdG9yRm9ybSsnIGlucHV0W25hbWU9Y29udGFjdE5hbWVdJykudmFsKE9yZGVyLmdldERhdGEoKVsnY29udGFjdE5hbWUnXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYoT3JkZXIuZ2V0RGF0YSgpWydub3RlJ10pe1xyXG4gICAgICAgICAgICAgICAgJChDU1NTZWxlY3RvckZvcm0rJyB0ZXh0YXJlYVtuYW1lPW5vdGVdJykudmFsKE9yZGVyLmdldERhdGEoKVsnbm90ZSddKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZihPcmRlci5nZXREYXRhKClbJ2RlbGl2ZXJ5QWRkcmVzc0lkJ10pe1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJChDU1NTZWxlY3RvckZvcm0rJyBzZWxlY3RbbmFtZT1kZWxpdmVyeUFkZHJlc3NJZF0nKSk7XHJcbiAgICAgICAgICAgICAgICAkKENTU1NlbGVjdG9yRm9ybSsnIHNlbGVjdFtuYW1lPWRlbGl2ZXJ5QWRkcmVzc0lkXScpLnZhbChPcmRlci5nZXREYXRhKClbJ2RlbGl2ZXJ5QWRkcmVzc0lkJ10pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKE9yZGVyLmdldERhdGEoKVsnY3VzdG9tTm90aWZpY2F0aW9uRW1haWwnXSl7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygkKENTU1NlbGVjdG9yRm9ybSsnIHNlbGVjdFtuYW1lPWN1c3RvbU5vdGlmaWNhdGlvbkVtYWlsXScpKTtcclxuICAgICAgICAgICAgICAgICQoQ1NTU2VsZWN0b3JGb3JtKycgc2VsZWN0W25hbWU9Y3VzdG9tTm90aWZpY2F0aW9uRW1haWxdJykudmFsKE9yZGVyLmdldERhdGEoKVsnY3VzdG9tTm90aWZpY2F0aW9uRW1haWwnXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgcm9vdC5pbml0RGF0ZVBpY2tlcignZGFpbHknKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICQoQ1NTU2VsZWN0b3JGb3JtKycgLm9yZGVyUGFyYW1ldGVyRGVsaXZlcnlBZGRyZXNzJykuc2VsZWN0Mih7fSkuc2hvdygpO1xyXG4gICAgICAgICQoQ1NTU2VsZWN0b3JGb3JtKycgLm9yZGVyUGFyYW1ldGVyQ3VzdG9tTm90aWZpY2F0aW9uRW1haWwnKS5zZWxlY3QyKHt9KS5zaG93KCk7XHJcblxyXG4gICAgICAgICQoQ1NTU2VsZWN0b3JGb3JtKS5zdWJtaXQoZnVuY3Rpb24oZXZlbnQpe1xyXG5cclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgaWYgKCQoQ1NTU2VsZWN0b3JGb3JtKVswXS5jaGVja1ZhbGlkaXR5KCkgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICBkZWJ1ZygndmFsaWRhdG9uIGZhbHNlJyk7XHJcbiAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgZGVidWcoJ3ZhbGlkYXRvbiBvaycpO1xyXG4gICAgICAgICAgICAgICAgLy9kbyB5b3VyIGFqYXggc3VibWl0aW9uIGhlcmVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAkKCcuZGVsaXZlcnlEYXRlUGxhY2UnKS50ZXh0KCQoQ1NTU2VsZWN0b3JGb3JtKycgaW5wdXRbbmFtZT1kZWxpdmVyeURhdGVdJykudmFsKCkucmVwbGFjZUFsbCgnLScsJy4nKSsnLicpO1xyXG5cclxuICAgICAgICAgICAgT3JkZXIuc2V0RGF0YSh7XHJcbiAgICAgICAgICAgICAgICBjb250YWN0TmFtZTokKENTU1NlbGVjdG9yRm9ybSsnIGlucHV0W25hbWU9Y29udGFjdE5hbWVdJykudmFsKCksXHJcbiAgICAgICAgICAgICAgICBub3RlOiQoQ1NTU2VsZWN0b3JGb3JtKycgdGV4dGFyZWFbbmFtZT1ub3RlXScpLnZhbCgpLFxyXG4gICAgICAgICAgICAgICAgb3JkZXJUeXBlOiQoQ1NTU2VsZWN0b3JGb3JtKycgaW5wdXQ6Y2hlY2tlZFtuYW1lPW9yZGVyVHlwZV0nKS52YWwoKSxcclxuICAgICAgICAgICAgICAgIGRlbGl2ZXJ5RGF0ZTokKENTU1NlbGVjdG9yRm9ybSsnIGlucHV0W25hbWU9ZGVsaXZlcnlEYXRlXScpLnZhbCgpLFxyXG4gICAgICAgICAgICAgICAgZGVsaXZlcnlBZGRyZXNzSWQ6JChDU1NTZWxlY3RvckZvcm0rJyBzZWxlY3RbbmFtZT1kZWxpdmVyeUFkZHJlc3NJZF0nKS52YWwoKSxcclxuICAgICAgICAgICAgICAgIGRlbGl2ZXJ5QWRkcmVzczokKENTU1NlbGVjdG9yRm9ybSsnIHNlbGVjdFtuYW1lPWRlbGl2ZXJ5QWRkcmVzc10nKS52YWwoKSxcclxuICAgICAgICAgICAgICAgIGN1c3RvbU5vdGlmaWNhdGlvbkVtYWlsOiQoQ1NTU2VsZWN0b3JGb3JtKycgc2VsZWN0W25hbWU9Y3VzdG9tTm90aWZpY2F0aW9uRW1haWxdJykudmFsKCksXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBjb25zb2xlLmdyb3VwKCdwYXJhbWV0ZXIgZm9ybSBzdWJtaXQnKVxyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCQoQ1NTU2VsZWN0b3JGb3JtKycgaW5wdXQ6Y2hlY2tlZFtuYW1lPW9yZGVyVHlwZV0nKS52YWwoKSk7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJChDU1NTZWxlY3RvckZvcm0rJyBpbnB1dFtuYW1lPWRlbGl2ZXJ5RGF0ZV0nKS52YWwoKSk7XHJcbiAgICAgICAgICAgIGRlYnVnKE9yZGVyLmdldERhdGEoKSk7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZ3JvdXBFbmQoKTtcclxuICAgICAgICAgICAgcm9vdC5zZW5kT3JkZXJEYXRhVG9TZXJ2ZXIoJ3BhcmFtZXRlcicscm9vdC5hZnRlck9yZGVyU2V0UGFyYW1ldGVyT2spO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgIH1cclxuICAgIHRoaXMuYmxhbms9ZnVuY3Rpb24gKCl7fTtcclxuICAgIHRoaXMuc2V0UGFyYW1ldGVyQ29tcGxldGVkPWZ1bmN0aW9uICgpIHtcclxuICAgICAgICBjb25zb2xlLmxvZygnc2V0UGFyYW1ldGVyQ29tcGxldGVkIGNhbGxlZCcpO1xyXG4gICAgICAgIHJvb3QuU3RlcHBlci5zZXRPcHRzKHtvbkFmdGVyTG9hZDpmdW5jdGlvbiAoKXt9fSk7XHJcbiAgICAgICAgLy9yb290LmluaXRWaWV3UHJvZHVjdFNlbGVjdCgpXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5iaW5kUm93RmF2b3JpdGVzQWN0aW9uID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICQoJy5idXR0b25JdGVtRmF2b3JpdGVzJykub2ZmKCdjbGljaycpO1xyXG4gICAgICAgICQoJy5idXR0b25JdGVtRmF2b3JpdGVzJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBsZXQgcHJvZHVjdElkID0gJCh0aGlzKS5kYXRhKCdpZCcpO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhwcm9kdWN0SWQpO1xyXG5cclxuICAgICAgICAgICAgbGV0IGFqYXhVcmw9T3B0cy5VUkwudG9nZ2xlRmF2b3JpdGVzLnJlcGxhY2UoJyVpZCUnLHByb2R1Y3RJZCk7XHJcbiAgICAgICAgICAgIGxldCBhamF4RGF0YT17fTtcclxuICAgICAgICAgICAgYWpheERhdGEuX3Rva2VuPU9wdHMudG9rZW47XHJcbiAgICAgICAgICAgIGxldCBidXR0b249dGhpcztcclxuICAgICAgICAgICAgY29uc29sZS5sb2coYWpheFVybCk7XHJcbiAgICAgICAgICAgICQuYWpheCh7XHJcbiAgICAgICAgICAgICAgICB1cmw6IGFqYXhVcmwsXHJcbiAgICAgICAgICAgICAgICBtZXRob2Q6J1BPU1QnLFxyXG4gICAgICAgICAgICAgICAgZGF0YTphamF4RGF0YSxcclxuICAgICAgICAgICAgICAgIHN1Y2Nlc3M6ZnVuY3Rpb24gKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2Uuc3VjY2Vzcyl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlc3BvbnNlLnN0YXR1cyl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygndHJ1ZScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChidXR0b24pLmFkZENsYXNzKCdidG4td2FybmluZycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChidXR0b24pLnJlbW92ZUNsYXNzKCdidG4tbGlnaHQnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGJ1dHRvbikucmVtb3ZlQ2xhc3MoJ2J0bi13YXJuaW5nJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGJ1dHRvbikuYWRkQ2xhc3MoJ2J0bi1saWdodCcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2ZhbHNlJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAvKlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykudG9nZ2xlQ2xhc3MoJ2J0bi13YXJuaW5nJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS50b2dnbGVDbGFzcygnYnRuLWxpZ2h0Jyk7XHJcbiAgICAgICAgICAgICovXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5iaW5kUm93RGVzY3JpcHRpb25BY3Rpb249ZnVuY3Rpb24gKCl7XHJcbiAgICAgICAgJCgndGV4dGFyZWEub3JkZXJJdGVtQ29tbWVudCcpLm9uKCdjaGFuZ2UnLGZ1bmN0aW9uICgpe1xyXG4gICAgICAgICAgICBsZXQgY29tbWVudD0kKHRoaXMpLnZhbCgpO1xyXG4gICAgICAgICAgICBsZXQgcHJvZHVjdElkPSQodGhpcykuZGF0YSgnaWQnKTtcclxuICAgICAgICAgICAgbGV0IHByb2R1Y3RDb21tZW50PU9yZGVyLmdldERhdGEoJ3Byb2R1Y3RDb21tZW50Jyk7XHJcbiAgICAgICAgICAgIGlmKHByb2R1Y3RDb21tZW50IT09bnVsbCl7XHJcbiAgICAgICAgICAgICAgICBpZih0eXBlb2YgcHJvZHVjdENvbW1lbnRbcHJvZHVjdElkXT09J3VuZGVmaW5lZCcgJiYgY29tbWVudC5sZW5ndGg9PT0wKXtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZihwcm9kdWN0Q29tbWVudFtwcm9kdWN0SWRdPT09Y29tbWVudCl7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHByb2R1Y3RDb21tZW50W3Byb2R1Y3RJZF09Y29tbWVudDtcclxuICAgICAgICAgICAgaWYoY29tbWVudC5sZW5ndGg9PT0wKXtcclxuICAgICAgICAgICAgICAgIGRlbGV0ZSBPcmRlci5wcm9kdWN0Q29tbWVudFtwcm9kdWN0SWRdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIE9yZGVyLnByb2R1Y3RDb21tZW50PXByb2R1Y3RDb21tZW50O1xyXG4gICAgICAgICAgICBxdWV1ZUFqYXgucHVzaChEYXRlLm5vdygpKTtcclxuICAgICAgICAgICAgcm9vdC5zeW5jT3JkZXJEYXRhVG9TZXJ2ZXIoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnByb2R1Y3RTZWxlY3REYXRhdGFibGVzUm93Rm9ybWF0dGVyPWZ1bmN0aW9uIChkKSB7XHJcbiAgICAgICAgLy8gYGRgIGlzIHRoZSBvcmlnaW5hbCBkYXRhIG9iamVjdCBmb3IgdGhlIHJvd1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgIEB0b2RvOiBmZWxzemVkbmkgZXMgdXBkYXRlbG5pIGF6IGFkb3R0IHRlcm1layBtZW1vamF0IGF6IG9yZGVyYmFuXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgY29uc29sZS5ncm91cCgncHJvZHVjdFNlbGVjdERhdGF0YWJsZXNSb3dGb3JtYXR0ZXInKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhkKTtcclxuICAgICAgICBsZXQgdGVtcGxhdGVEYXRhPWQ7XHJcbiAgICAgICAgdGVtcGxhdGVEYXRhLmNvbW1lbnQ9Jyc7XHJcbi8vICAgICAgICBkZWJ1ZyhPcmRlcik7XHJcbiAgICAgICAgaWYoT3JkZXIucHJvZHVjdENvbW1lbnQgJiYgT3JkZXIucHJvZHVjdENvbW1lbnQhPT1udWxsKXtcclxuICAgICAgICAgICAgZGVidWcodHlwZW9mIE9yZGVyLnByb2R1Y3RDb21tZW50W2QuaWRdKTtcclxuICAgICAgICAgICAgaWYodHlwZW9mIE9yZGVyLnByb2R1Y3RDb21tZW50W2QuaWRdIT0ndW5kZWZpbmVkJyAmJiBPcmRlci5wcm9kdWN0Q29tbWVudFtkLmlkXS5sZW5ndGg+MCl7XHJcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZURhdGEuY29tbWVudD1PcmRlci5wcm9kdWN0Q29tbWVudFtkLmlkXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvKiogQHR5cGVkZWYge2Jvb2xlYW59IGQuZmF2b3JpdGVzICovXHJcbiAgICAgICAgaWYoZC5mYXZvcml0ZXM9PT10cnVlKXtcclxuICAgICAgICAgICAgdGVtcGxhdGVEYXRhLmJ0bkZhdm9yaXRlc0NsYXNzPSdidG4td2FybmluZyc7XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIHRlbXBsYXRlRGF0YS5idG5GYXZvcml0ZXNDbGFzcz0nYnRuLWxpZ2h0JztcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHRlbXBsYXRlPSQoJ3RlbXBsYXRlW2RhdGEtbmFtZT1cIm9yZGVyUHJvZHVjdFNlbGVjdERldGFpbHNcIl0nKS5odG1sKClcclxuICAgICAgICB0ZW1wbGF0ZURhdGEud2Vla2x5PWZhbHNlO1xyXG4gICAgICAgIGlmKE9yZGVyLmdldERhdGEoKS5vcmRlclR5cGU9PT0nd2Vla2x5Jyl7XHJcbiAgICAgICAgICAgIHRlbXBsYXRlRGF0YS53ZWVrbHk9dHJ1ZTtcclxuLypcclxuXHJcbiAgICAgICAgICAgIHRlbXBsYXRlRGF0YS53ZWVrbHlEYXk9W1xyXG4gICAgICAgICAgICAgICAge1wiaW5kZXhcIjoxLFwibmFtZVwiOlwiSMOpdGbFkVwifSxcclxuICAgICAgICAgICAge1wiaW5kZXhcIjoyLFwibmFtZVwiOlwiS2VkZFwifSxcclxuICAgICAgICAgICAge1wiaW5kZXhcIjozLFwibmFtZVwiOlwiU3plcmRhXCJ9LFxyXG4gICAgICAgICAgICB7XCJpbmRleFwiOjQsXCJuYW1lXCI6XCJDc8O8dMO2cnTDtmtcIn0sXHJcbiAgICAgICAgICAgIHtcImluZGV4XCI6NSxcIm5hbWVcIjpcIlDDqW50ZWtcIn0sXHJcbiAgICAgICAgICAgIHtcImluZGV4XCI6NixcIm5hbWVcIjpcIlN6b21iYXRcIn0sXHJcbiAgICAgICAgICAgIHtcImluZGV4XCI6NyxcIm5hbWVcIjpcIlZhc8Ohcm5hcFwifSxcclxuICAgICAgICAgICAgXTtcclxuXHJcbiAgICAgICAgICAgIHRlbXBsYXRlRGF0YS53ZWVrbHlEYXk9W1xyXG4gICAgICAgICAgICAgICAge1wiaW5kZXhcIjoyLFwibmFtZVwiOlwiSMOpdGbFkVwiIH0sXHJcbiAgICAgICAgICAgICAgICB7XCJuYW1lXCI6XCJLZWRkXCJ9LFxyXG4gICAgICAgICAgICAgICAge1wibmFtZVwiOlwiU3plcmRhXCJ9LFxyXG4gICAgICAgICAgICAgICAge1wibmFtZVwiOlwiQ3PDvHTDtnJ0w7ZrXCJ9LFxyXG4gICAgICAgICAgICAgICAge1wibmFtZVwiOlwiUMOpbnRla1wifSxcclxuICAgICAgICAgICAgICAgIHtcIm5hbWVcIjpcIlN6b21iYXRcIn0sXHJcbiAgICAgICAgICAgICAgICB7XCJuYW1lXCI6XCJWYXPDoXJuYXBcIn1cclxuICAgICAgICAgICAgXTtcclxuKi9cclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHByb2R1Y3RTZWxlY3RlZD1PcmRlci5nZXREYXRhKCdwcm9kdWN0U2VsZWN0ZWQnKTtcclxuICAgICAgICBpZih0eXBlb2YgcHJvZHVjdFNlbGVjdGVkW2QuaWRdIT0ndW5kZWZpbmVkJyl7XHJcbiAgICAgICAgICAgIHRlbXBsYXRlRGF0YS5pdGVtUXVhbnRpdHk9cHJvZHVjdFNlbGVjdGVkW2QuaWRdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zb2xlLmxvZyhbJ3RlbXBsYXRlRGF0YScsdGVtcGxhdGVEYXRhXSk7XHJcbiAgICAgICAgbGV0IG9sZFRhZ3M9TXVzdGFjaGUudGFncztcclxuICAgICAgICBNdXN0YWNoZS50YWdzID0gW1wifiFcIiwgXCIhflwiXTtcclxuICAgICAgICBpZih0ZW1wbGF0ZURhdGFbJ3NwZWNpZmljYXRpb24nXT09J2ZhbHNlJyB8fCB0ZW1wbGF0ZURhdGFbJ3NwZWNpZmljYXRpb24nXT09ZmFsc2Upe1xyXG4gICAgICAgICAgICB0ZW1wbGF0ZURhdGEuc3BlY2lmaWNhdGlvbkNsYXNzPSdkLW5vbmUnO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0ZW1wbGF0ZURhdGEucGljdHVyZUltZz0nJztcclxuICAgICAgICBpZih0ZW1wbGF0ZURhdGFbJ3BpY3R1cmUnXT09J2ZhbHNlJyB8fCB0ZW1wbGF0ZURhdGFbJ3BpY3R1cmUnXT09ZmFsc2Upe1xyXG4gICAgICAgICAgICB0ZW1wbGF0ZURhdGEucGljdHVyZUNsYXNzPSdkLW5vbmUnO1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICB0ZW1wbGF0ZURhdGEucGljdHVyZUltZz0nPGltZyBzcmM9IFwiJyt0ZW1wbGF0ZURhdGFbJ3BpY3R1cmUnXSsnXCIgY2xhc3M9XCJwcm9kdWN0UGljdHVyZVwiID48L2ltZz4nO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zb2xlLmxvZygndGVtcGxhdGVEYXRhJyx0ZW1wbGF0ZURhdGEpO1xyXG4gICAgICAgIC8vdGVtcGxhdGVEYXRhWydhYV9zcGVjaWZpY2F0aW9uJ109ZmFsc2U7XHJcbiAgICAgICAgbGV0IHJlbmRlcj1NdXN0YWNoZS5yZW5kZXIodGVtcGxhdGUsdGVtcGxhdGVEYXRhKTtcclxuICAgICAgICBNdXN0YWNoZS50YWdzID1vbGRUYWdzO1xyXG4gICAgICAgIGNvbnNvbGUuZ3JvdXBFbmQoKTtcclxuICAgICAgICByZXR1cm4gcmVuZGVyO1xyXG4vKlxyXG5zb2x1dGlvbiBiZWZvcmUgdGVtcGxhdGVcclxuICAgICAgICByZXR1cm4gJzx0YWJsZSBjZWxscGFkZGluZz1cIjVcIiBjZWxsc3BhY2luZz1cIjBcIiBib3JkZXI9XCIwXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6NTBweDtcIj4nK1xyXG4gICAgICAgICAgICAnPHRyPicrXHJcbiAgICAgICAgICAgICc8dGQ+SW5mbzo8L3RkPicrXHJcbiAgICAgICAgICAgICc8dGQ+JytkLm5vdGUrJzwvdGQ+JytcclxuICAgICAgICAgICAgJzwvdHI+JytcclxuICAgICAgICAgICAgJzx0cj4nK1xyXG4gICAgICAgICAgICAnPHRkPmhvb3JleWNhIDo8L3RkPicrXHJcbiAgICAgICAgICAgICc8dGQ+PHNwYW4gc3R5bGU9XCJwYWRkaW5nLXJpZ2h0OiAyZW07XCI+JytkLmhvb3JleWNhSWQrJzwvc3Bhbj4nICtcclxuXHJcbiAgICAgICAgICAgICc8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxcbicgK1xyXG4gICAgICAgICAgICAnICAgICAgICBkYXRhLWlkPVwiJytkLmlkKydcIlxcbicgK1xyXG4gICAgICAgICAgICAnICAgICAgICBjbGFzcz1cImJ1dHRvbkl0ZW1GYXZvcml0ZXMgYnRuICcrYnRuRmF2b3JpdGVzQ2xhc3MrJ1wiPlxcbicgK1xyXG4gICAgICAgICAgICAnICAgIDxpIGNsYXNzPVwiYmkgYmktc3Rhci1maWxsIHByLTJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XFxuJyArXHJcbiAgICAgICAgICAgICcgICAgS2VkdmVuY1xcbicgK1xyXG4gICAgICAgICAgICAnPC9idXR0b24+JyArXHJcbiAgICAgICAgICAgICc8L3RkPicrXHJcbiAgICAgICAgICAgICc8L3RyPicrXHJcbiAgICAgICAgICAgIC8hKlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAnPHRyPicrXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICc8dGQ+RXh0ZW5zaW9uIG51bWJlcjo8L3RkPicrXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICc8dGQ+JytkLmV4dG4rJzwvdGQ+JytcclxuICAgICAgICAgICAgICAgICAgICAgICAgJzwvdHI+JytcclxuICAgICAgICAgICAgKiEvXHJcbiAgICAgICAgICAgICc8dHI+JytcclxuICAgICAgICAgICAgJzx0ZD5JbmZvOjwvdGQ+JytcclxuICAgICAgICAgICAgJzx0ZD4nK2Qubm90ZSsnPC90ZD4nK1xyXG4gICAgICAgICAgICAnPC90cj4nK1xyXG4gICAgICAgICAgICAnPHRyPicrXHJcbiAgICAgICAgICAgICc8dGQ+TWVnamVneXrDqXM6PC90ZD4nK1xyXG4gICAgICAgICAgICAnPHRkPjx0ZXh0YXJlYSBjbGFzcz1cIm9yZGVySXRlbUNvbW1lbnRcIiBkYXRhLWlkPVwiJytkLmlkKydcIj4nK2NvbW1lbnQrJzwvdGV4dGFyZWE+PC90ZD4nK1xyXG4gICAgICAgICAgICAnPC90cj4nK1xyXG4gICAgICAgICAgICAvISpcclxuICAgICAgICAgICAgKiEvXHJcbiAgICAgICAgICAgICc8L3RhYmxlPic7XHJcbiovXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZXREYXRhdGFibGVIZWFkZXJUZXh0PWZ1bmN0aW9uKHRleHQpe1xyXG4gICAgICAgICQoJy50YWJsZUhlYWRlclRleHQnKS50ZXh0KHRleHQpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZ2V0VHJlZVBhdGhOYW1lPWZ1bmN0aW9uIChub2RlKXtcclxuICAgICAgICBsZXQgcmVzPScnO1xyXG4gICAgICAgIGxldCBpdGVtcz0kKG5vZGUpLnBhcmVudHMoJ2xpJykudG9BcnJheSgpO1xyXG4gICAgICAgIGl0ZW1zLnNoaWZ0KCk7XHJcbiAgICAgICAgaXRlbXMucmV2ZXJzZSgpO1xyXG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBpbiBpdGVtcykge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygkKGl0ZW1zW2l0ZW1dKS5jaGlsZHJlbignYS5jYXRlZ29yeUl0ZW0nKSk7XHJcbiAgICAgICAgICAgIGlmKCQoaXRlbXNbaXRlbV0pLmNoaWxkcmVuKCdhLmNhdGVnb3J5SXRlbScpLmxlbmd0aD4wKXtcclxuICAgICAgICAgICAgICAgIHJlcys9JChpdGVtc1tpdGVtXSkuY2hpbGRyZW4oJ2EuY2F0ZWdvcnlJdGVtJykudGV4dCgpKycvJ1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJlcys9JChub2RlKS50ZXh0KCk7XHJcbiAgICAgICAgY29uc29sZS5sb2cocmVzKTtcclxuICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBzZWxlY3RlZFByb2R1Y3RHcm91cD1udWxsO1xyXG4gICAgbGV0IGRhdGFUYWJsZVNlYXJjaFN0cj1udWxsO1xyXG4gICAgbGV0IGRhdGFUYWJsZVNlYXJjaEtyZWw9ZmFsc2U7XHJcblxyXG4gICAgdGhpcy5zZWFyY2hQcm9kdWN0QnlTdHJpbmc9ZnVuY3Rpb24gKGZpbHRlclN0cil7XHJcbiAgICAgICAgcm9vdC5zZXREYXRhdGFibGVIZWFkZXJUZXh0KCdUZXJtw6lrZWsgc3rFsXJ2ZTonK2ZpbHRlclN0cik7XHJcbiAgICAgICAgZGF0YVRhYmxlU2VhcmNoU3RyPWZpbHRlclN0cjtcclxuICAgICAgICAkKCcuZGF0YVRhYmxlT3JkZXJQcm9kdWN0U2VsZWN0JykuRGF0YVRhYmxlKCkuYWpheC5yZWxvYWQoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNsaWNrU2VhcmNoUHJvZHVjdD1mdW5jdGlvbiAoKXtcclxuICAgICAgICBkZWJ1Zyh0aGlzKTtcclxuICAgICAgICBsZXQgZmlsdGVyU3RyPSQoJy5zaWRlYmFyLXNlYXJjaCBpbnB1dFtuYW1lPXNlYXJjaFZhbHVlXScpLnZhbCgpXHJcbiAgICAgICAgZGVidWcoZmlsdGVyU3RyKTtcclxuICAgICAgICByb290LnNlYXJjaFByb2R1Y3RCeVN0cmluZyhmaWx0ZXJTdHIpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2xpY2tGYXZvcml0ZXNQcm9kdWN0ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGRlYnVnKCdjbGlja0Zhdm9yaXRlc1Byb2R1Y3QnKTtcclxuICAgICAgICByb290LnNldERhdGF0YWJsZUhlYWRlclRleHQoJ1Rlcm3DqWtlayBzesWxcnZlOiBrZWR2ZW5jZWsnKTtcclxuICAgICAgICBkYXRhVGFibGVTZWFyY2hTdHI9JyoqZmF2b3JpdGVzKionO1xyXG4gICAgICAgICQoJy5kYXRhVGFibGVPcmRlclByb2R1Y3RTZWxlY3QnKS5EYXRhVGFibGUoKS5hamF4LnJlbG9hZCgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jbGlja09mdGVuUHJvZHVjdCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBkZWJ1ZygnY2xpY2tPZnRlblByb2R1Y3QnKTtcclxuICAgICAgICByb290LnNldERhdGF0YWJsZUhlYWRlclRleHQoJ1Rlcm3DqWtlayBzesWxcnZlOiBneWFrcmFuIHbDoXPDoXJvbHQnKTtcclxuICAgICAgICBkYXRhVGFibGVTZWFyY2hTdHI9Jyoqb2Z0ZW4qKic7XHJcbiAgICAgICAgJCgnLmRhdGFUYWJsZU9yZGVyUHJvZHVjdFNlbGVjdCcpLkRhdGFUYWJsZSgpLmFqYXgucmVsb2FkKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jbGlja1NwZWNpYWxPZmZlciA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBkZWJ1ZygnY2xpY2tTcGVjaWFsT2ZmZXInKTtcclxuICAgICAgICByb290LnNldERhdGF0YWJsZUhlYWRlclRleHQoJ1Rlcm3DqWtlayBzesWxcnZlOiBBa2Npw7NzIHRlcm3DqWtlaycpO1xyXG4gICAgICAgIGRhdGFUYWJsZVNlYXJjaFN0cj0nKipzcGVjaWFsT2ZmZXIqKic7XHJcbiAgICAgICAgJCgnLmRhdGFUYWJsZU9yZGVyUHJvZHVjdFNlbGVjdCcpLkRhdGFUYWJsZSgpLmFqYXgucmVsb2FkKCk7XHJcbiAgICB9XHJcblxyXG5cclxuXHJcblxyXG4gICAgdGhpcy5jbGlja0xhc3RQcm9kdWN0ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGRlYnVnKCdjbGlja0xhc3RQcm9kdWN0Jyk7XHJcbiAgICAgICAgcm9vdC5zZXREYXRhdGFibGVIZWFkZXJUZXh0KCdUZXJtw6lrZWsgc3rFsXJ2ZTogdXRvbGrDoXJhIHbDoXPDoXJvbHQnKTtcclxuICAgICAgICBkYXRhVGFibGVTZWFyY2hTdHI9JyoqbGFzdCoqJztcclxuICAgICAgICAkKCcuZGF0YVRhYmxlT3JkZXJQcm9kdWN0U2VsZWN0JykuRGF0YVRhYmxlKCkuYWpheC5yZWxvYWQoKTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jbGlja1dlZWtseVByb2R1Y3QgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgZGVidWcoJ2NsaWNrV2Vla2x5UHJvZHVjdCcpO1xyXG4gICAgICAgIHJvb3Quc2V0RGF0YXRhYmxlSGVhZGVyVGV4dCgnVGVybcOpa2VrIHN6xbFydmU6IEhldGkgdGVybcOpa2VrJyk7XHJcbiAgICAgICAgZGF0YVRhYmxlU2VhcmNoU3RyPScqKndlZWtseSoqJztcclxuICAgICAgICAkKCcuZGF0YVRhYmxlT3JkZXJQcm9kdWN0U2VsZWN0JykuRGF0YVRhYmxlKCkuYWpheC5yZWxvYWQoKTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jbGlja0tyZWxQcm9kdWN0ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGRlYnVnKCdjbGlja0tyZWxQcm9kdWN0Jyk7XHJcbiAgICAgICAgLy9yb290LnNldERhdGF0YWJsZUhlYWRlclRleHQoJ1Rlcm3DqWtlayBzesWxcnZlOiBIZXRpIHRlcm3DqWtlaycpO1xyXG4gICAgICAgIC8vZGF0YVRhYmxlU2VhcmNoU3RyPScqKndlZWtseSoqJztcclxuICAgICAgICAvLyQoJy5kYXRhVGFibGVPcmRlclByb2R1Y3RTZWxlY3QnKS5EYXRhVGFibGUoKS5hamF4LnJlbG9hZCgpO1xyXG4gICAgICAgICQodGhpcykucGFyZW50KCkudG9nZ2xlQ2xhc3MoJ2tyZWxBY3RpdmUnKTtcclxuICAgICAgICBkYXRhVGFibGVTZWFyY2hLcmVsPSFkYXRhVGFibGVTZWFyY2hLcmVsO1xyXG4gICAgICAgICQoJy5kYXRhVGFibGVPcmRlclByb2R1Y3RTZWxlY3QnKS5EYXRhVGFibGUoKS5hamF4LnJlbG9hZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucHJvZHVjdFNlbGVjdERhdGFUYWJsZUNvbHVtbkRlZnM9ZnVuY3Rpb24gKCl7XHJcbiAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAge1wid2lkdGhcIjogXCIxMHB4XCIsIFwidGFyZ2V0c1wiOiAwIH0sXHJcbiAgICAgICAgICAgIHsgXCJjbGFzc05hbWVcIjogXCJkdC1sZWZ0XCIsIFwidGFyZ2V0c1wiOiAxIH0sXHJcbi8vICAgICAgICAgICAgICAgIHsgXCJ3aWR0aFwiOiBcIjEyMHB4XCIsIFwidGFyZ2V0c1wiOiAxIH0sXHJcbiAgICAgICAgICAgIHsgXCJ3aWR0aFwiOiBcIjI4cHhcIiwgXCJ0YXJnZXRzXCI6IDIgfSxcclxuICAgICAgICAgICAgeyBcIndpZHRoXCI6IFwiNDFweFwiLCBcInRhcmdldHNcIjogMyB9LFxyXG4gICAgICAgICAgICB7IFwid2lkdGhcIjogXCI3NnB4XCIsIFwidGFyZ2V0c1wiOiA0IH0sXHJcbiAgICAgICAgICAgIHsgXCJ3aWR0aFwiOiBcIjU1cHhcIiwgXCJ0YXJnZXRzXCI6IDUgfSxcclxuICAgICAgICAgICAgeyBcIndpZHRoXCI6IFwiNzBweFwiLCBcInRhcmdldHNcIjogNiB9LFxyXG4gICAgICAgICAgICB7IFwid2lkdGhcIjogXCI1NHB4XCIsIFwidGFyZ2V0c1wiOiA3IH0sXHJcbiAgICAgICAgICAgIHsgXCJ3aWR0aFwiOiBcIjU3cHhcIiwgXCJ0YXJnZXRzXCI6IDggfSxcclxuICAgICAgICAgICAgeyBcIndpZHRoXCI6IFwiNDJweFwiLCBcInRhcmdldHNcIjogOSB9LFxyXG4gICAgICAgICAgICB7IFwid2lkdGhcIjogXCIxMDBweFwiLCBcInRhcmdldHNcIjogMTB9LFxyXG4gICAgICAgICAgICB7XCJjbGFzc05hbWVcIjogXCJkdC1jZW50ZXJcIiwgXCJ0YXJnZXRzXCI6IFwiX2FsbFwifSxcclxuICAgICAgICBdO1xyXG4gICAgfVxyXG4gICAgdGhpcy5wcm9kdWN0U2VsZWN0RGF0YVRhYmxlQ29sdW1uPWZ1bmN0aW9uICgpe1xyXG4gICAgICAgIGxldCBjb2x1bW5EYXRhPVtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgXCJjbGFzc05hbWVcIjogICAgICAnZGV0YWlscy1jb250cm9sJyxcclxuICAgICAgICAgICAgICAgIFwib3JkZXJhYmxlXCI6ICAgICAgZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBcImRhdGFcIjogICAgICAgICAgIG51bGwsXHJcbiAgICAgICAgICAgICAgICBcImRlZmF1bHRDb250ZW50XCI6ICcnXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgXCJkYXRhXCI6IFwibmFtZVwiIH0sXHJcbiAgICAgICAgICAgIHsgXCJkYXRhXCI6IFwia3JlbFwiIH0sXHJcbiAgICAgICAgICAgIHsgXCJkYXRhXCI6IFwicGFja2luZ1wifSxcclxuICAgICAgICAgICAgeyBcImRhdGFcIjogXCJ1bml0VmFsdWVcIiB9LFxyXG4gICAgICAgICAgICB7IFwiZGF0YVwiOiBcInByb2R1Y3RVbml0XCJ9LFxyXG4gICAgICAgICAgICB7IFwiZGF0YVwiOiBcInNlbGxlclVuaXRcIiB9LFxyXG4gICAgICAgICAgICB7IFwiZGF0YVwiOiBcInVuaXRNdWx0aXBsaWVyXCJ9LFxyXG4gICAgICAgICAgICB7IFwiZGF0YVwiOiBcImFtb3VudFVuaXRcIiB9LFxyXG4gICAgICAgICAgICB7IFwiZGF0YVwiOiBcInByaWNlXCIgfSxcclxuXHJcbiAgICAgICAgXTtcclxuXHJcbiAgICAgICAgbGV0IGFjdGlvbkNvbHVtbj17ICAgICAgICAgICAgICAgIFwiY2xhc3NOYW1lXCI6ICAgICAgJ2RldGFpbHMtY29udHJvbDInLFxyXG4gICAgICAgICAgICBcIm9yZGVyYWJsZVwiOiAgICAgIGZhbHNlLFxyXG4gICAgICAgICAgICBcImRhdGFcIjogICAgICAgICAgIG51bGwsXHJcbiAgICAgICAgICAgIFwid2lkdGhcIjogXCI4MHB4XCIsXHJcbiAgICAgICAgICAgIFwiZGVmYXVsdENvbnRlbnRcIjonJ1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgaWYoT3JkZXIuZ2V0RGF0YSgnb3JkZXJUeXBlJyk9PSdkYWlseScpe1xyXG4gICAgICAgICAgICBhY3Rpb25Db2x1bW4uZGVmYXVsdENvbnRlbnQ9JzxpbnB1dCB0eXBlPVwibnVtYmVyXCIgdmFsdWU9XCIwXCIgbWluPVwiMFwiIG1heD1cIjk5OTlcIiBzdGVwPVwiMVwiIGRhdGEtZGVjaW1hbHM9XCIxXCIgIGNsYXNzPVwiZm9ybS1jb250cm9sLXNtIGlucHV0TnVtYmVyU3Bpbm5lclwiIHN0eWxlPVwid2lkdGg6IDFlbTtcIiBcIi8+J1xyXG4gICAgICAgICAgICAgICAgLypcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkZWZhdWx0Q29udGVudFwiOic8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgaW5wdXQtZ3JvdXAtc20gXCI+JyArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPGJ1dHRvbiBzdHlsZT1cIm1pbi13aWR0aDogMS41cmVtXCIgY2xhc3M9XCJidG4tc20gYnRuLWRlY3JlbWVudCBidG4tb3V0bGluZS1zZWNvbmRhcnkgYnRuLW1pbnVzXCIgdHlwZT1cImJ1dHRvblwiPicgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxzdHJvbmc+4oiSPC9zdHJvbmc+PC9idXR0b24+JyArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPGlucHV0IHR5cGU9XCJ0ZXh0XCIgaW5wdXRtb2RlPVwiZGVjaW1hbFwiIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgXCIgcGxhY2Vob2xkZXI9XCJcIj4nICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8YnV0dG9uIHN0eWxlPVwibWluLXdpZHRoOiAxLjVyZW1cIiBjbGFzcz1cImJ0bi1zbSBidG4taW5jcmVtZW50IGJ0bi1vdXRsaW5lLXNlY29uZGFyeSBidG4tcGx1c1wiIHR5cGU9XCJidXR0b25cIj4nICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8c3Ryb25nPis8L3N0cm9uZz48L2J1dHRvbj4nICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8L2Rpdj4nXHJcbiAgICAgICAgICAgICAgICAqL1xyXG5cclxuICAgICAgICAgICAgO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb2x1bW5EYXRhLnB1c2goYWN0aW9uQ29sdW1uKTtcclxuICAgICAgICByZXR1cm4gY29sdW1uRGF0YTtcclxuICAgIH1cclxuICAgIHRoaXMuZ2V0RGF0YXRhYmxlcz1mdW5jdGlvbiAob3JkZXJUeXBlKXtcclxuICAgICAgICBjb25zb2xlLmVycm9yKG9yZGVyVHlwZSk7XHJcbiAgICAgICAgdmFyIHRhYmxlID0gJCgnLmRhdGFUYWJsZU9yZGVyUHJvZHVjdFNlbGVjdCcpLkRhdGFUYWJsZSgge1xyXG4gICAgICAgICAgICBsYW5ndWFnZToge1xyXG4gICAgICAgICAgICAgICAgdXJsOiAnLy9jZG4uZGF0YXRhYmxlcy5uZXQvcGx1Zy1pbnMvMS4xMC4yNC9pMThuL0h1bmdhcmlhbi5qc29uJ1xyXG4gICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgLy9cImFqYXhcIjogXCJ7e2Fzc2V0KCdleGFwbWxlMi5qc29uJyl9fVwiLFxyXG4gICAgICAgICAgICBcImFqYXhcIjoge1xyXG4gICAgICAgICAgICAgICAgdXJsOk9wdHMuVVJMLmdldERhdGFUYWJsZUNvbnRlbnRQcm9kdWN0TGlzdCxcclxuICAgICAgICAgICAgICAgIGRhdGE6ZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLnNlYXJjaFN0cj1kYXRhVGFibGVTZWFyY2hTdHI7XHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5rcmVsPWRhdGFUYWJsZVNlYXJjaEtyZWw7XHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5ncm91cElkPXNlbGVjdGVkUHJvZHVjdEdyb3VwO1xyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEuc3VwcGxpZXJJZD1PcmRlci5zdXBwbGllcklkO1xyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEuZGVsaXZlcnlEYXRlPU9yZGVyLmRlbGl2ZXJ5RGF0ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYnV0dG9uczoge1xyXG4gICAgICAgICAgICAgICAgYnV0dG9uczogW11cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgXCJjb2x1bW5EZWZzXCI6IHJvb3QucHJvZHVjdFNlbGVjdERhdGFUYWJsZUNvbHVtbkRlZnMoKSxcclxuICAgICAgICAgICAgXCJjb2x1bW5zXCI6IHJvb3QucHJvZHVjdFNlbGVjdERhdGFUYWJsZUNvbHVtbigpLFxyXG4gICAgICAgICAgICBcIm9yZGVyXCI6IFtbMSwgJ2FzYyddXSxcclxuICAgICAgICB9ICk7XHJcbiAgICAgICAgcmV0dXJuIHRhYmxlO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucHJvZHVjdFNlbGVjdERhdGFUYWJsZURyYXdEVD1mdW5jdGlvbiAoZSkge1xyXG4gICAgICAgIC8vZGVidWcoICdUYWJsZSBkcmF3IGNvbXBsZXRlOiAnK25ldyBEYXRlKCkuZ2V0VGltZSgpICk7XHJcblxyXG4gICAgICAgIC8vJCgndGQ6Y29udGFpbnMoXCIqXCIpJykuaHRtbCgnPGkgY2xhc3M9XCJiaSBiaS1jaGVjay1jaXJjbGUtZmlsbFwiPjwvaT4nKTtcclxuICAgICAgICAkKFwidGRcIikuZmlsdGVyKGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgIHJldHVybiAkKHRoaXMpLnRleHQoKSA9PT0gJyonO1xyXG4gICAgICAgIH0pLmh0bWwoJzxpIGNsYXNzPVwiYmkgYmktY2hlY2stY2lyY2xlLWZpbGxcIj48L2k+Jyk7XHJcbiAgICAgICAgaWYoT3JkZXIuZ2V0RGF0YSgpLm9yZGVyVHlwZT09J2RhaWx5Jyl7XHJcbiAgICAgICAgICAgICQoXCJpbnB1dFt0eXBlPSdudW1iZXInXS5pbnB1dE51bWJlclNwaW5uZXJcIikuaW5wdXRTcGlubmVyKHtcclxuICAgICAgICAgICAgICAgIHRlbXBsYXRlOlxyXG4gICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgJHtncm91cENsYXNzfVwiPicgK1xyXG4gICAgICAgICAgICAgICAgICAgICc8YnV0dG9uIHN0eWxlPVwibWluLXdpZHRoOiAke2J1dHRvbnNXaWR0aH1cIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWRlY3JlbWVudCAke2J1dHRvbnNDbGFzc31cIiB0eXBlPVwiYnV0dG9uXCI+JHtkZWNyZW1lbnRCdXR0b259PC9idXR0b24+JyArXHJcbiAgICAgICAgICAgICAgICAgICAgLy8nPGlucHV0IHR5cGU9XCJ0ZXh0XCIgaW5wdXRtb2RlPVwiZGVjaW1hbFwiIHN0eWxlPVwidGV4dC1hbGlnbjogJHt0ZXh0QWxpZ259XCIgY2xhc3M9XCJwcm9kdWN0UXVhbnRpdHkgZm9ybS1jb250cm9sXCIvPicgK1xyXG4gICAgICAgICAgICAgICAgICAgICc8aW5wdXQgdHlwZT1cInRleHRcIiBzdGVwPVwiMC4xXCIgZGF0YS1kZWNpbWFscz1cIjJcIiBzdHlsZT1cInRleHQtYWxpZ246ICR7dGV4dEFsaWdufVwiIGNsYXNzPVwicHJvZHVjdFF1YW50aXR5IGZvcm0tY29udHJvbFwiLz4nICtcclxuICAgICAgICAgICAgICAgICAgICAnPGJ1dHRvbiBzdHlsZT1cIm1pbi13aWR0aDogJHtidXR0b25zV2lkdGh9XCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pbmNyZW1lbnQgJHtidXR0b25zQ2xhc3N9XCIgdHlwZT1cImJ1dHRvblwiPiR7aW5jcmVtZW50QnV0dG9ufTwvYnV0dG9uPicgK1xyXG4gICAgICAgICAgICAgICAgICAgICc8L2Rpdj4nLFxyXG4gICAgICAgICAgICAgICAgYnV0dG9uc1dpZHRoOiBcIjAuNXJlbVwiLFxyXG4gICAgICAgICAgICAgICAgZ3JvdXBDbGFzczogXCJcIiwgLy8gY3NzIGNsYXNzIG9mIHRoZSByZXN1bHRpbmcgaW5wdXQtZ3JvdXBcclxuICAgICAgICAgICAgICAgIGJ1dHRvbnNDbGFzczogXCJidG4tb3V0bGluZS1zZWNvbmRhcnlcIixcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJvb3QuYmluZFdlYWtVc2VySGVscGVyKCk7XHJcbiAgICAgICAgLypcclxuICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgICAgICAgY2hhbmdlIG9yZGVyIHF1YW50aXR5XHJcbiAgICAgICAgICovXHJcbiAgICAgICAgJChcIi5kYXRhVGFibGVPcmRlclByb2R1Y3RTZWxlY3QgLmRldGFpbHMtY29udHJvbDIgaW5wdXRbdHlwZT10ZXh0XVwiKS5vZmYoJ2NoYW5nZScpO1xyXG4gICAgICAgICQoXCIuZGF0YVRhYmxlT3JkZXJQcm9kdWN0U2VsZWN0IC5kZXRhaWxzLWNvbnRyb2wyIGlucHV0W3R5cGU9dGV4dF1cIikub24oJ2NoYW5nZScsZnVuY3Rpb24gKGUpe1xyXG4gICAgICAgICAgICBsZXQgcXVhbnRpdHk9JCh0aGlzKS52YWwoKTtcclxuICAgICAgICAgICAgcXVhbnRpdHk9cXVhbnRpdHkucmVwbGFjZSgnLCcsJy4nKTtcclxuICAgICAgICAgICAgcXVhbnRpdHk9cGFyc2VGbG9hdChxdWFudGl0eSk7XHJcbiAgICAgICAgICAgIGxldCByb3dEYXRhPSQoJy5kYXRhVGFibGVPcmRlclByb2R1Y3RTZWxlY3QnKS5EYXRhVGFibGUoKS5yb3coJCh0aGlzKS5jbG9zZXN0KCd0cicpKS5kYXRhKCk7XHJcbiAgICAgICAgICAgIHJvb3Qub3JkZXJJdGVtc0NoYW5nZShyb3dEYXRhLHF1YW50aXR5KVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAkKFwiLmRhdGFUYWJsZU9yZGVyUHJvZHVjdFNlbGVjdCAuZGV0YWlscy1jb250cm9sMiBpbnB1dFt0eXBlPXRleHRdXCIpLmVhY2goZnVuY3Rpb24gKCl7XHJcbiAgICAgICAgICAgIC8vZGVidWcoJ2V6IGEgZnVuY3Rpb24yJylcclxuICAgICAgICAgICAgbGV0IHF1YW50aXR5PSQodGhpcykudmFsKCk7XHJcbiAgICAgICAgICAgIGxldCByb3dEYXRhPSQoJy5kYXRhVGFibGVPcmRlclByb2R1Y3RTZWxlY3QnKS5EYXRhVGFibGUoKS5yb3coJCh0aGlzKS5jbG9zZXN0KCd0cicpKS5kYXRhKCk7XHJcblxyXG4gICAgICAgICAgICBpZihPcmRlci5wcm9kdWN0U2VsZWN0ZWRbcm93RGF0YS5pZF0pe1xyXG4gICAgICAgICAgICAgICAgZGVidWcocm93RGF0YSk7XHJcbiAgICAgICAgICAgICAgICBkZWJ1ZygkKCQodGhpcykuY2xvc2VzdCgndHInKS5maW5kKCdpbnB1dFt0eXBlPW51bWJlcl0nKVswXSkpO1xyXG4gICAgICAgICAgICAgICAgZGVidWcoT3JkZXIucHJvZHVjdFNlbGVjdGVkW3Jvd0RhdGEuaWRdKTtcclxuICAgICAgICAgICAgICAgIGxldCBxdWFudGl0eUN1cnJlbnQ9T3JkZXIucHJvZHVjdFNlbGVjdGVkW3Jvd0RhdGEuaWRdO1xyXG4gICAgICAgICAgICAgICAgaWYodHlwZW9mIHF1YW50aXR5Q3VycmVudCE9J3N0cmluZycpe1xyXG4gICAgICAgICAgICAgICAgICAgIHF1YW50aXR5Q3VycmVudCs9Jyc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAkKCQodGhpcykuY2xvc2VzdCgndHInKS5maW5kKCdpbnB1dFt0eXBlPW51bWJlcl0nKVswXSkudmFsKHF1YW50aXR5Q3VycmVudC5yZXBsYWNlKCcsJywnLicpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuXHJcbiAgICAgICAgJChcIi5kYXRhVGFibGVPcmRlclByb2R1Y3RTZWxlY3QgLmRldGFpbHMtY29udHJvbDIgYnV0dG9uXCIpLm9mZignY2xpY2snKTtcclxuICAgICAgICAkKFwiLmRhdGFUYWJsZU9yZGVyUHJvZHVjdFNlbGVjdCAuZGV0YWlscy1jb250cm9sMiBidXR0b25cIikub24oJ2NsaWNrJyxmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIC8vIGRlYnVnKCcuZGV0YWlscy1jb250cm9sMiBidXR0b24gY2xpY2sgJylcclxuICAgICAgICAgICAgLy8gZGVidWcodGhpcyk7XHJcbiAgICAgICAgICAgICQodGhpcykucGFyZW50KCkuZmluZCgnaW5wdXRbdHlwZT10ZXh0XScpLnRyaWdnZXIoJ2NoYW5nZScpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmluaXRWaWV3UHJvZHVjdFNlbGVjdD1mdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgbGV0IGZ1bmN0aW9uTmFtZT0naW5pdFZpZXdQcm9kdWN0U2VsZWN0JztcclxuICAgICAgICBjb25zb2xlLmxvZyhmdW5jdGlvbk5hbWUrJyBjYWxsZWQnKTtcclxuICAgICAgICBpZih2aWV3SW5pY2lhbGl6ZWQuaW5jbHVkZXMoZnVuY3Rpb25OYW1lKSl7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy9kZWJ1ZyhPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhyb290KSk7XHJcbiAgICAgICAgcm9vdC5zZXREYXRhdGFibGVIZWFkZXJUZXh0KCcnKTtcclxuICAgICAgICByb290LlN0ZXBwZXIuc2V0T3B0cyh7b25BZnRlckFjdGl2YXRlOmZ1bmN0aW9uICgpe319KTtcclxuICAgICAgICAvL0Bub3RlOiBiZSBrZWxsIGthcGNzb2xuaSBheiBlbG9uZXpldGV0XHJcbiAgICAgICAgcm9vdC5TdGVwcGVyLmFkZENvbXBsZXRlZCgnaW52b2ljZScpO1xyXG4gICAgICAgIHJvb3QuU3RlcHBlci5hZGRFbmFibGVkKCdpbnZvaWNlJyk7XHJcbiAgICAgICAgbGV0IENTU1NlbGVjdG9yRm9ybT0nLm9yZGVyUGFyYW1ldGVyRm9ybSc7XHJcbiAgICAgICAgLy9jb25zb2xlLmxvZyhPcHRzLlVSTC5nZXREYXRhVGFibGVDb250ZW50UHJvZHVjdExpc3QpO2NoYW5nZVxyXG4gICAgICAgIGRlYnVnKChDU1NTZWxlY3RvckZvcm0rJyAuZmEtc2VhcmNoJykpO1xyXG5cclxuICAgICAgICAkKCcuc2lkZWJhci1zZWFyY2ggLmZhLXNlYXJjaCcpLm9mZignY2xpY2snKTtcclxuICAgICAgICAkKCcuc2lkZWJhci1zZWFyY2ggLmZhLXNlYXJjaCcpLm9uKCdjbGljaycscm9vdC5jbGlja1NlYXJjaFByb2R1Y3QpO1xyXG5cclxuICAgICAgICAkKCdhLnNpZGViYXIuZmF2b3JpdGVzJykub2ZmKCdjbGljaycpO1xyXG4gICAgICAgICQoJ2Euc2lkZWJhci5mYXZvcml0ZXMnKS5vbignY2xpY2snLHJvb3QuY2xpY2tGYXZvcml0ZXNQcm9kdWN0KTtcclxuXHJcbiAgICAgICAgJCgnYS5zaWRlYmFyLm9mdGVuJykub2ZmKCdjbGljaycpO1xyXG4gICAgICAgICQoJ2Euc2lkZWJhci5vZnRlbicpLm9uKCdjbGljaycscm9vdC5jbGlja09mdGVuUHJvZHVjdCk7XHJcblxyXG4gICAgICAgICQoJ2Euc2lkZWJhci5sYXN0Jykub2ZmKCdjbGljaycpO1xyXG4gICAgICAgICQoJ2Euc2lkZWJhci5sYXN0Jykub24oJ2NsaWNrJyxyb290LmNsaWNrTGFzdFByb2R1Y3QpO1xyXG5cclxuICAgICAgICAkKCdhLnNpZGViYXIud2Vla2x5Jykub2ZmKCdjbGljaycpO1xyXG4gICAgICAgICQoJ2Euc2lkZWJhci53ZWVrbHknKS5vbignY2xpY2snLHJvb3QuY2xpY2tXZWVrbHlQcm9kdWN0KTtcclxuXHJcbiAgICAgICAgJCgnYS5zaWRlYmFyLmtyZWwnKS5vZmYoJ2NsaWNrJyk7XHJcbiAgICAgICAgJCgnYS5zaWRlYmFyLmtyZWwnKS5vbignY2xpY2snLHJvb3QuY2xpY2tLcmVsUHJvZHVjdCk7XHJcblxyXG4gICAgICAgICQoJ2Euc2lkZWJhci5zcGVjaWFsT2ZmZXInKS5vZmYoJ2NsaWNrJyk7XHJcbiAgICAgICAgJCgnYS5zaWRlYmFyLnNwZWNpYWxPZmZlcicpLm9uKCdjbGljaycscm9vdC5jbGlja1NwZWNpYWxPZmZlcik7XHJcblxyXG5cclxuICAgICAgICAkKCcuc2lkZWJhci1zZWFyY2ggaW5wdXRbbmFtZT1zZWFyY2hWYWx1ZV0nKS5vZmYoJ2tleXByZXNzJyk7XHJcbiAgICAgICAgJCgnLnNpZGViYXItc2VhcmNoIGlucHV0W25hbWU9c2VhcmNoVmFsdWVdJykub24oJ2tleXByZXNzJyxmdW5jdGlvbiAoZXZlbnQpIHtcclxuICAgICAgICAgICAgaWYgKCBldmVudC53aGljaCA9PSAxMyApIHtcclxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYoJCh0aGlzKS52YWwoKS5sZW5ndGg+PTIpe1xyXG4gICAgICAgICAgICAgICAgcm9vdC5zZWFyY2hQcm9kdWN0QnlTdHJpbmcoJCh0aGlzKS52YWwoKStldmVudC5rZXkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG5cclxuXHJcbiAgICAgICAgJCgnLnNpZGViYXItd3JhcHBlciAuc2lkZWJhci1tZW51IC5zaWRlYmFyLWRyb3Bkb3duIC5zaWRlYmFyLXN1Ym1lbnUgbGkgYS5jYXRlZ29yeUl0ZW0uY2xpY2thYmxlJykub2ZmKCdjbGljaycpO1xyXG4gICAgICAgICQoJy5zaWRlYmFyLXdyYXBwZXIgLnNpZGViYXItbWVudSAuc2lkZWJhci1kcm9wZG93biAuc2lkZWJhci1zdWJtZW51IGxpIGEuY2F0ZWdvcnlJdGVtLmNsaWNrYWJsZScpLm9uKCdjbGljaycsXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIGxldCBncm91cElkPSQodGhpcykuZGF0YSgnaWQnKTtcclxuICAgICAgICAgICAgICAgIHNlbGVjdGVkUHJvZHVjdEdyb3VwPWdyb3VwSWQ7XHJcbiAgICAgICAgICAgICAgICBkYXRhVGFibGVTZWFyY2hTdHI9bnVsbDtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGdyb3VwSWQpO1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2cocm9vdC5nZXRUcmVlUGF0aE5hbWUodGhpcykpO1xyXG4gICAgICAgICAgICAgICAgcm9vdC5zZXREYXRhdGFibGVIZWFkZXJUZXh0KHJvb3QuZ2V0VHJlZVBhdGhOYW1lKHRoaXMpKTtcclxuLypcclxuICAgICAgICAgICAgICAgIGxldCBhamF4RGF0YT17XHJcbiAgICAgICAgICAgICAgICAgICAgJ2dyb3VwSWQnOmdyb3VwSWQsXHJcbiAgICAgICAgICAgICAgICAgICAgJ3N1cHBsaWVyX2lkJzpPcmRlci5zdXBwbGllcklkLFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIC8vJCgnLmRhdGFUYWJsZU9yZGVyUHJvZHVjdFNlbGVjdCcpLkRhdGFUYWJsZSgpLmFqYXguZGF0YShhamF4RGF0YSkubG9hZCgpO1xyXG5cclxuKi9cclxuLypcclxuICAgICAgICAgICAgICAgIGxldCBhamF4VXJsPU9wdHMuVVJMLmdldERhdGFUYWJsZUNvbnRlbnRQcm9kdWN0TGlzdCsnP2dyb3VwSWQ9Jytncm91cElkKycmc3VwcGxpZXJfaWQ9JytPcmRlci5zdXBwbGllcklkO1xyXG4gICAgICAgICAgICAgICAgJCgnLmRhdGFUYWJsZU9yZGVyUHJvZHVjdFNlbGVjdCcpLkRhdGFUYWJsZSgpLmFqYXgudXJsKGFqYXhVcmwpLmxvYWQoKTtcclxuKi9cclxuICAgICAgICAgICAgICAgICQoJy5kYXRhVGFibGVPcmRlclByb2R1Y3RTZWxlY3QnKS5EYXRhVGFibGUoKS5hamF4LnJlbG9hZCgpO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcblxyXG4gICAgICAgIGxldCB0YWJsZSA9IHJvb3QuZ2V0RGF0YXRhYmxlcyhPcmRlci5nZXREYXRhKCdvcmRlclR5cGUnKSk7XHJcblxyXG4gICAgICAgICQoJy5kYXRhVGFibGVPcmRlclByb2R1Y3RTZWxlY3QnKS5vbiggJ2luaXQuZHQnLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCAnVGFibGUgaW5pdGlhbGlzYXRpb24gY29tcGxldGU6ICcrbmV3IERhdGUoKS5nZXRUaW1lKCkgKTtcclxuICAgICAgICB9ICkuZGF0YVRhYmxlKCk7XHJcblxyXG5cclxuXHJcbiAgICAgICAgJCgnLmRhdGFUYWJsZU9yZGVyUHJvZHVjdFNlbGVjdCcpLm9uKCAnZHJhdy5kdCcscm9vdC5wcm9kdWN0U2VsZWN0RGF0YVRhYmxlRHJhd0RUKS5kYXRhVGFibGUoKTtcclxuXHJcbiAgICAgICAgLy8kKCcuZGF0YVRhYmxlT3JkZXJQcm9kdWN0U2VsZWN0Jykub24oICdkcmF3LmR0JywgICkuZGF0YVRhYmxlKCk7XHJcblxyXG4gICAgICAgICQoJy5kYXRhVGFibGVPcmRlclByb2R1Y3RTZWxlY3QnKS5vbiggJ3hoci5kdCcsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgZGVidWcoICdUYWJsZSB4aHIgY29tcGxldGU6ICcrbmV3IERhdGUoKS5nZXRUaW1lKCkgKTtcclxuICAgICAgICB9ICkuZGF0YVRhYmxlKCk7XHJcblxyXG4gICAgICAgIC8vJChcImlucHV0W3R5cGU9J251bWJlciddLmlucHV0TnVtYmVyU3Bpbm5lclwiKS5pbnB1dFNwaW5uZXIoKTtcclxuXHJcbi8qXHJcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuIEFkZCBldmVudCBsaXN0ZW5lciBmb3Igb3BlbmluZyBhbmQgY2xvc2luZyBkZXRhaWxzXHJcbiAqL1xyXG5cclxuICAgICAgICAkKCcuZGF0YVRhYmxlT3JkZXJQcm9kdWN0U2VsZWN0IHRib2R5Jykub24oJ2NsaWNrJywgJ3RkLmRldGFpbHMtY29udHJvbCcsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgbGV0IHRyID0gJCh0aGlzKS5jbG9zZXN0KCd0cicpO1xyXG4gICAgICAgICAgICBsZXQgcm93ID0gdGFibGUucm93KCB0ciApO1xyXG5cclxuICAgICAgICAgICAgaWYgKCByb3cuY2hpbGQuaXNTaG93bigpICkge1xyXG4gICAgICAgICAgICAgICAgLy8gVGhpcyByb3cgaXMgYWxyZWFkeSBvcGVuIC0gY2xvc2UgaXRcclxuICAgICAgICAgICAgICAgIHJvdy5jaGlsZC5oaWRlKCk7XHJcbiAgICAgICAgICAgICAgICB0ci5yZW1vdmVDbGFzcygnc2hvd24nKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIE9wZW4gdGhpcyByb3dcclxuICAgICAgICAgICAgICAgIHJvdy5jaGlsZCggcm9vdC5wcm9kdWN0U2VsZWN0RGF0YXRhYmxlc1Jvd0Zvcm1hdHRlcihyb3cuZGF0YSgpKSApLnNob3coKTtcclxuICAgICAgICAgICAgICAgIHRyLmFkZENsYXNzKCdzaG93bicpO1xyXG4gICAgICAgICAgICAgICAgcm9vdC5iaW5kUHJvZHVjdERldGFpbHNBY3Rpb24oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gKTtcclxuICAgICAgICB2aWV3SW5pY2lhbGl6ZWQucHVzaChmdW5jdGlvbk5hbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYmluZFByb2R1Y3REZXRhaWxzQWN0aW9uPWZ1bmN0aW9uICgpe1xyXG4gICAgICAgIHJvb3QuYmluZFJvd0Rlc2NyaXB0aW9uQWN0aW9uKCk7XHJcbiAgICAgICAgcm9vdC5iaW5kUm93RmF2b3JpdGVzQWN0aW9uKCk7XHJcbiAgICAgICAgaWYoT3JkZXIuZ2V0RGF0YSgpWydvcmRlclR5cGUnXT09J3dlZWtseScpe1xyXG4gICAgICAgICAgICByb290LmJpbmRPcmRlckl0ZW1XZWVrUXVhbnRpdHkoKTtcclxuICAgICAgICB9XHJcbiAgIH1cclxuXHJcbiAgICB0aGlzLmJpbmRXZWFrVXNlckhlbHBlcj1mdW5jdGlvbiAoKXtcclxuICAgICAgICAkKCBcImlucHV0LmlucHV0TnVtYmVyU3Bpbm5lclwiICkub2ZmKCBcImZvY3VzXCIpO1xyXG4gICAgICAgICQoIFwiaW5wdXQuaW5wdXROdW1iZXJTcGlubmVyXCIgKS5vbiggXCJmb2N1c1wiLCBmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgbGV0IHF1YW50aXR5PSQodGhpcykudmFsKCk7XHJcbiAgICAgICAgICAgIHF1YW50aXR5PXF1YW50aXR5LnJlcGxhY2UoJywnLCcuJyk7XHJcbiAgICAgICAgICAgIHF1YW50aXR5PXBhcnNlRmxvYXQocXVhbnRpdHkpO1xyXG4gICAgICAgICAgICBpZihxdWFudGl0eT09PTApe1xyXG4gICAgICAgICAgICAgICAgJCh0aGlzKS52YWwoJycpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICAkKCBcImlucHV0W3R5cGU9dGV4dF0uaW5wdXROdW1iZXJTcGlubmVyXCIgKS5vZmYoIFwia2V5cHJlc3NcIik7XHJcbiAgICAgICAgJCggXCJpbnB1dFt0eXBlPXRleHRdLmlucHV0TnVtYmVyU3Bpbm5lclwiICkub24oIFwia2V5cHJlc3NcIiwgZnVuY3Rpb24oZXZlbnQpIHtcclxuICAgICAgICAgICAgaWYgKCBldmVudC53aGljaCA9PSAxMyApIHtcclxuLy8gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignZW50ZXIgcHJlc3NlZCcpO1xyXG4gICAgICAgICAgICAgICAgbGV0IGFjdHVhbEl0ZW09dGhpcztcclxuICAgICAgICAgICAgICAgIGxldCBpdGVtcz0kKCBcImlucHV0W3R5cGU9dGV4dF0uaW5wdXROdW1iZXJTcGlubmVyXCIgKTtcclxuICAgICAgICAgICAgICAgIGl0ZW1zLmVhY2goZnVuY3Rpb24gKGl0ZW0pe1xyXG4vLyAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2codGhpcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYodGhpcz09YWN0dWFsSXRlbSl7XHJcbi8vICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihpdGVtKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYoaXRlbSsxPD1pdGVtcy5sZW5ndGgpe1xyXG4vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGl0ZW1zW2l0ZW0rMV0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChpdGVtc1tpdGVtKzFdKS5mb2N1cygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYmluZE9yZGVySXRlbVdlZWtRdWFudGl0eT1mdW5jdGlvbiAoKXtcclxuICAgICAgICAkKFwiaW5wdXQucHJvZHVjdFNlbGVjdERheVF1YW50aXR5XCIpLm9mZignY2hhbmdlJyk7XHJcbiAgICAgICAgJChcImlucHV0LnByb2R1Y3RTZWxlY3REYXlRdWFudGl0eVwiKS5vbignY2hhbmdlJyxmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMubmFtZSk7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMudmFsdWUpO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygkKHRoaXMpLmRhdGEoJ2RheWluZGV4JykpO1xyXG5cclxuICAgICAgICAgICAgbGV0IHJvd0RhdGE9bnVsbDtcclxuICAgICAgICAgICAgbGV0IHJvd05vZGU9JCgkKHRoaXMpLmNsb3Nlc3QoJ3RhYmxlLm9yZGVyUHJvZHVjdFNlbGVjdFJvd0RldGFpbHNUYWJsZScpLmNsb3Nlc3QoJ3RyJykpLnByZXYoKTtcclxuICAgICAgICAgICAgcm93RGF0YT0kKCcuZGF0YVRhYmxlT3JkZXJQcm9kdWN0U2VsZWN0JykuRGF0YVRhYmxlKCkucm93KHJvd05vZGUpLmRhdGEoKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2cocm93RGF0YSk7XHJcbiAgICAgICAgICAgIGxldCBxdWFudGl0eT0kKHRoaXMpLnZhbCgpO1xyXG4gICAgICAgICAgICBxdWFudGl0eT1xdWFudGl0eS5yZXBsYWNlKCcsJywnLicpO1xyXG4gICAgICAgICAgICBxdWFudGl0eT1wYXJzZUZsb2F0KHF1YW50aXR5KTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2cocm93RGF0YS5pZCk7XHJcbiAgICAgICAgICAgIHJvb3Qub3JkZXJJdGVtc0NoYW5nZShyb3dEYXRhLHF1YW50aXR5LCQodGhpcykuZGF0YSgnZGF5aW5kZXgnKSk7XHJcbi8vICAgICAgICAgICAgcm9vdC5vcmRlckl0ZW1zQ2hhbmdlXHJcbiAgICAgICAgICAgIC8vb3JkZXJJdGVtc0NoYW5nZVxyXG4gICAgICAgICAgICAvL3F1YW50aXR5WzE2ODNdWzFdXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYWZ0ZXJTeW5jT3JkZXJEYXRhVG9TZXJ2ZXI9ZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgICAgICAvL3Jvb3QudG9nZ2xlRW5hYmxlU2VuZCgpO1xyXG4gICAgICAgIC8vY29uc29sZS5sb2coJ21vc3QgdmVnemV0dC4gZW5ueWl0IGtpc3plZCcrYmF0Y2hOdW0pO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDxxdWV1ZUFqYXgubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ3NoaWZ0ZWwnKVxyXG4gICAgICAgICAgICBxdWV1ZUFqYXguc2hpZnQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy9jb25zb2xlLmxvZygncmVtYWluaW5nIGxlZnQgJytxdWV1ZUFqYXgubGVuZ3RoKTtcclxuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgIHN5bmNEb2luZz1mYWxzZTtcclxuICAgICAgICAgICAgcm9vdC5zeW5jT3JkZXJEYXRhVG9TZXJ2ZXIoKTtcclxuICAgICAgICB9LCBPcHRzLmRhdGFTeW5jUGF1c2VUaW1lKTtcclxuICAgIH1cclxuICAgIGxldCBxdWV1ZUFqYXg9W107XHJcbiAgICBsZXQgc3luY0RvaW5nPWZhbHNlO1xyXG5cclxuICAgIHRoaXMuc3luY09yZGVyRGF0YVRvU2VydmVyPWZ1bmN0aW9uICgpIHtcclxuICAgICAgICAvL2RlYnVnKHF1ZXVlQWpheCk7XHJcbiAgICAgICAgaWYoc3luY0RvaW5nKXtcclxuICAgICAgICAgICAgLy9kZWJ1Zygnc3luYyBpbiBwcm9ncmVzcy4uLi4nKTtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZihxdWV1ZUFqYXgubGVuZ3RoPDEpe1xyXG4gICAgICAgICAgICByZXR1cm4gO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzeW5jRG9pbmc9dHJ1ZTtcclxuXHJcbiAgICAgICAgcm9vdC5zZW5kT3JkZXJEYXRhVG9TZXJ2ZXIoJ3Byb2R1Y3RTZWxlY3QnLHJvb3QuYWZ0ZXJTeW5jT3JkZXJEYXRhVG9TZXJ2ZXIpO1xyXG4gICAgICAgIHJldHVybiA7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5vcmRlckl0ZW1zQ2hhbmdlPWZ1bmN0aW9uKEl0ZW1EYXRhLHF1YW50aXR5LGRheUluZGV4KXtcclxuXHJcbi8qXHJcbiAgICAgICAgZGVidWcoJy0tLS0tLS0tLS0tLS0tLS0tJyk7XHJcbiAgICAgICAgZGVidWcoSXRlbURhdGEpO1xyXG4gICAgICAgIGRlYnVnKHF1YW50aXR5KTtcclxuICAgICAgICBkZWJ1ZyhPcmRlci5nZXREYXRhKCdwcm9kdWN0U2VsZWN0ZWQnKSk7XHJcbiAgICAgICAgZGVidWcoJy0tLS0tLS0tLS0tLS0tLS0tJyk7XHJcblxyXG4qL1xyXG4gICAgICAgIGlmKGlzTmFOKHF1YW50aXR5KSl7XHJcbiAgICAgICAgICAgIHF1YW50aXR5PTA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBwcm9kdWN0U2VsZWN0ZWQ9T3JkZXIuZ2V0RGF0YSgncHJvZHVjdFNlbGVjdGVkJyk7XHJcbiAgICAgICAgY29uc29sZS5ncm91cCgnb3JkZXJJdGVtc0NoYW5nZScpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFsncHJvZHVjdFNlbGVjdGVkJyxwcm9kdWN0U2VsZWN0ZWRdKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhbJ0l0ZW1EYXRhJyxJdGVtRGF0YV0pO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFsnSXRlbURhdGEuaWQnLEl0ZW1EYXRhLmlkXSk7XHJcbiAgICAgICAgY29uc29sZS5sb2coWydxdWFudGl0eScscXVhbnRpdHldKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhbJ2RheUluZGV4JyxkYXlJbmRleF0pO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKHByb2R1Y3RTZWxlY3RlZFtJdGVtRGF0YS5pZF0pO1xyXG5cclxuICAgICAgICBsZXQgcHJvZHVjdFNlbGVjdGVkSXRlbT1wcm9kdWN0U2VsZWN0ZWRbSXRlbURhdGEuaWRdO1xyXG4gICAgICAgIC8qXHJcbiAgICAgICAgaGEgMCBlcnRlayBqb24gZXMgbmVtIGlzIHZvbHQgYWtrb3IgaGFtYXIga2l1Z3JhdGp1a1xyXG4gICAgICAgICAqL1xyXG4gICAgICAgIGlmKHF1YW50aXR5PT0wKXtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcigncXVhbnRpdHk9PTAnKTtcclxuICAgICAgICAgICAgaWYodHlwZW9mIHByb2R1Y3RTZWxlY3RlZEl0ZW09PSd1bmRlZmluZWQnKXtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcignaXR0IGxlcDEnKTtcclxuICAgICAgICAgICAgY29uc29sZS5ncm91cEVuZCgpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKGRheUluZGV4KXtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCd2YW4gZGF5SW5kZXgnKVxyXG4gICAgICAgICAgICAgICAgaWYodHlwZW9mIHByb2R1Y3RTZWxlY3RlZFtJdGVtRGF0YS5pZF1bZGF5SW5kZXhdPT0ndW5kZWZpbmVkJyl7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coWydwcm9kdWN0U2VsZWN0ZWRJdGVtJyxwcm9kdWN0U2VsZWN0ZWRJdGVtXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignaXR0IGxlcDInKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmdyb3VwRW5kKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8qXHJcbiAgICAgICAgaGEgYXpvbm9zIGF6IGVydGVrIGtpdWdydW5rXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgaWYoZGF5SW5kZXgpe1xyXG4gICAgICAgICAgICBpZih0eXBlb2YgcHJvZHVjdFNlbGVjdGVkW0l0ZW1EYXRhLmlkXSE9J3VuZGVmaW5lZCdcclxuICAgICAgICAgICAgICAgICYmIHR5cGVvZiBwcm9kdWN0U2VsZWN0ZWRbSXRlbURhdGEuaWRdW2RheUluZGV4XSE9J3VuZGVmaW5lZCcpe1xyXG4gICAgICAgICAgICAgICAgaWYocHJvZHVjdFNlbGVjdGVkW0l0ZW1EYXRhLmlkXVtkYXlJbmRleF09PXF1YW50aXR5KXtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdhem9ub3MgbmFwaScpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZ3JvdXBFbmQoKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgaWYocHJvZHVjdFNlbGVjdGVkW0l0ZW1EYXRhLmlkXT09cXVhbnRpdHkpe1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignYXpvbm9zJyk7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmdyb3VwRW5kKCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmKHF1YW50aXR5PT0wKXtcclxuICAgICAgICAgICAgaWYoZGF5SW5kZXgpe1xyXG4gICAgICAgICAgICAgICAgZGVsZXRlIE9yZGVyLnByb2R1Y3RTZWxlY3RlZFtJdGVtRGF0YS5pZF1bZGF5SW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgZGVsZXRlIHByb2R1Y3RTZWxlY3RlZFtJdGVtRGF0YS5pZF1bZGF5SW5kZXhdO1xyXG4gICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgIGRlbGV0ZSBPcmRlci5wcm9kdWN0U2VsZWN0ZWRbSXRlbURhdGEuaWRdO1xyXG4gICAgICAgICAgICAgICAgZGVsZXRlIHByb2R1Y3RTZWxlY3RlZFtJdGVtRGF0YS5pZF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgLypcclxuICAgICAgICAgICAgaGEgdmFuIGVydGVrIGVydGVrZXQgYWR1bmshXHJcbiAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICBpZihkYXlJbmRleCl7XHJcbiAgICAgICAgICAgICAgICBpZih0eXBlb2YgcHJvZHVjdFNlbGVjdGVkW0l0ZW1EYXRhLmlkXT09J3VuZGVmaW5lZCcpe1xyXG4gICAgICAgICAgICAgICAgICAgIHByb2R1Y3RTZWxlY3RlZFtJdGVtRGF0YS5pZF09W107XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnc2V0IHF1YW50aXR5IHByb2R1Y3RTZWxlY3RlZFtJdGVtRGF0YS5pZF1bZGF5SW5kZXhdJyxxdWFudGl0eSk7XHJcbiAgICAgICAgICAgICAgICBwcm9kdWN0U2VsZWN0ZWRbSXRlbURhdGEuaWRdW2RheUluZGV4XT1xdWFudGl0eTtcclxuICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICBwcm9kdWN0U2VsZWN0ZWRbSXRlbURhdGEuaWRdPXF1YW50aXR5O1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3NldCBxdWFudGl0eSBwcm9kdWN0U2VsZWN0ZWRbSXRlbURhdGEuaWRdJyxxdWFudGl0eSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc29sZS5sb2coWydwcm9kdWN0U2VsZWN0ZWQnLHByb2R1Y3RTZWxlY3RlZF0pO1xyXG4gICAgICAgIE9yZGVyLnByb2R1Y3RTZWxlY3RlZD1wcm9kdWN0U2VsZWN0ZWQ7XHJcblxyXG4gICAgICAgIGNvbnNvbGUuZ3JvdXBFbmQoKTtcclxuICAgICAgICBxdWV1ZUFqYXgucHVzaChEYXRlLm5vdygpKTtcclxuICAgICAgICByb290LnN5bmNPcmRlckRhdGFUb1NlcnZlcigpO1xyXG5cclxuICAgICAgICByZXR1cm47XHJcblxyXG5cclxuICAgICAgICBpZihwcm9kdWN0U2VsZWN0ZWRbSXRlbURhdGEuaWRdPT1xdWFudGl0eSl7XHJcbiAgICAgICAgICAgIGRlYnVnKCdpdHQgbGVwMTInKTtcclxuICAgICAgICAgICAgY29uc29sZS5ncm91cEVuZCgpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHByb2R1Y3RTZWxlY3RlZFtJdGVtRGF0YS5pZF09cXVhbnRpdHk7XHJcbiAgICAgICAgaWYocXVhbnRpdHk9PTApe1xyXG4gICAgICAgICAgICBkZWxldGUgT3JkZXIucHJvZHVjdFNlbGVjdGVkW0l0ZW1EYXRhLmlkXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgT3JkZXIucHJvZHVjdFNlbGVjdGVkPXByb2R1Y3RTZWxlY3RlZDtcclxuICAgICAgICBjb25zb2xlLmdyb3VwRW5kKCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICBxdWV1ZUFqYXgucHVzaChEYXRlLm5vdygpKTtcclxuICAgICAgICByb290LnN5bmNPcmRlckRhdGFUb1NlcnZlcigpO1xyXG5cclxuICAgICAgICAvKlxyXG4gICAgICAgIGRlYnVnKE9yZGVyLmdldERhdGEoJ3Byb2R1Y3RTZWxlY3RlZCcpKTtcclxuICAgICAgICBkZWJ1ZygnKioqKioqKioqKioqKioqKioqKicpO1xyXG4qL1xyXG4gICAgfVxyXG4gICAgdGhpcy5pbml0Vmlld0ludm9pY2U9ZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJvb3QuU3RlcHBlci5zZXRPcHRzKHtvbkFmdGVyTG9hZDpmdW5jdGlvbiAoKXt9fSk7XHJcblxyXG4gICAgICAgIGlmKE9iamVjdC5rZXlzKE9yZGVyLnByb2R1Y3RTZWxlY3RlZCkubGVuZ3RoPjApe1xyXG4gICAgICAgICAgICByb290LlN0ZXBwZXIuYWRkQ29tcGxldGVkKCdzZW5kJyk7XHJcbiAgICAgICAgICAgIHJvb3QuU3RlcHBlci5hZGRFbmFibGVkKCdzZW5kJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBzdHlsZVN0cj0nPGxpbmsgcmVsPVwic3R5bGVzaGVldFwiIGhyZWY9XCInK09wdHMuVVJMLnJvb3QrJy9jc3MvaW52b2ljZS5jc3NcIj4nO1xyXG4gICAgICAgICQoJ3RhYmxlLmludm9pY2UgYnV0dG9uLnByaW50QnV0dG9uJykub2ZmKCdjbGljaycpO1xyXG4gICAgICAgICQoJ3RhYmxlLmludm9pY2UgYnV0dG9uLnByaW50QnV0dG9uJykub24oJ2NsaWNrJyxmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHdpbmRvdy5wcmludCgpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgICAgICBsZXQgbmV3V2luPSB3aW5kb3cub3BlbihcIlwiKTtcclxuICAgICAgICAgICAgbmV3V2luLmRvY3VtZW50LndyaXRlKHN0eWxlU3RyKTtcclxuICAgICAgICAgICAgbGV0IHByaW50PSQoJ3RhYmxlLmludm9pY2UnKS5jbG9uZSgpO1xyXG4gICAgICAgICAgICBwcmludC5maW5kKCdidXR0b24ucHJpbnRCdXR0b24nKS5yZW1vdmUoKTtcclxuLy8gICAgICAgICAgICBuZXdXaW4uZG9jdW1lbnQud3JpdGUoJCgndGFibGUuaW52b2ljZScpLnByb3AoJ291dGVySFRNTCcpKTtcclxuICAgICAgICAgICAgbmV3V2luLmRvY3VtZW50LndyaXRlKHByaW50LnByb3AoJ291dGVySFRNTCcpKTtcclxuICAgICAgICAgICAgbmV3V2luLnByaW50KCk7XHJcbiAgICAgICAgICAgbmV3V2luLmNsb3NlKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5yZXNldE9yZGVyPWZ1bmN0aW9uICgpIHtcclxuICAgICAgICByb290LmluaXQoKTtcclxuICAgICAgICByb290LnNldERlbGl2ZXJ5RGF0ZSgnLScpO1xyXG4gICAgICAgIHJvb3Quc2V0U3VwcGxpZXIoJy0nKTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hZnRlck9yZGVyU2VuZE9rPWZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgVG9hc3QuY3JlYXRlKFwiU2VudCFcIiwnT3JkZXIgU2VudCcgLCBUT0FTVF9TVEFUVVMuSU5GTyw1MDAwKTtcclxuICAgICAgICAkKCcuYnV0dG9uT3JkZXJTZW5kJykub2ZmKCdjbGljaycpO1xyXG4gICAgICAgICQoJy5idXR0b25PcmRlclNlbmQnKS5wcm9wKCdkaXNhYmxlZCcsdHJ1ZSk7XHJcbiAgICAgICAgJCgnLnN0YXR1c05hbWVQbGFjZScpLnJlbW92ZUNsYXNzKCdzdGF0dXNCbGluaycpO1xyXG4gICAgICAgICQoJy5zdGF0dXNOYW1lUGxhY2UnKS50ZXh0KCdlbGvDvGxkdmUnKTtcclxuICAgICAgICAkKCcuYnV0dG9uT3JkZXJTZW5kaW5nJykudG9nZ2xlQ2xhc3MoJ2Qtbm9uZScpO1xyXG4gICAgICAgICQoJy5idXR0b25PcmRlclNlbmRPaycpLnRvZ2dsZUNsYXNzKCdkLW5vbmUnKTtcclxuICAgICAgICAkKCdkaXYuaW52b2ljZUNvbnRhaW5lcicpLmh0bWwoZGF0YS5yZXRIVE1MKTtcclxuICAgICAgICAvL3Jvb3QucmVzZXRPcmRlcigpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5hZnRlck9yZGVyU2VuZEVycm9yPWZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgJCgnLmJ1dHRvbk9yZGVyU2VuZCcpLnRvZ2dsZUNsYXNzKCdkLW5vbmUnKTtcclxuICAgICAgICAkKCcuYnV0dG9uT3JkZXJTZW5kaW5nJykudG9nZ2xlQ2xhc3MoJ2Qtbm9uZScpO1xyXG4gICAgICAgICQuZWFjaChBUFAuT3JkZXJNb2R1bGUuU3RlcHBlci5nZXRPcHRzKCkuYXZhaWxhYmxlLGZ1bmN0aW9uIChpbmRleCx2YWx1ZSkge1xyXG4gICAgICAgICAgICBBUFAuT3JkZXJNb2R1bGUuU3RlcHBlci5zZXRFbmFibGVkKHZhbHVlKTtcclxuICAgICAgICAgICAgQVBQLk9yZGVyTW9kdWxlLlN0ZXBwZXIuc2V0Q29tcGxldGVkKHZhbHVlKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmluaXRWaWV3U2VuZD1mdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ2luaXRWaWV3U2VuZCBjYWxsZWQgMicpO1xyXG4gICAgICAgIHJvb3QuU3RlcHBlci5zZXRPcHRzKHtvbkFmdGVyTG9hZDpmdW5jdGlvbiAoKXt9fSk7XHJcbiAgICAgICAgJCgnLmJ1dHRvbk9yZGVyU2VuZCcpLm9mZignY2xpY2snKTtcclxuICAgICAgICAkKCcuYnV0dG9uT3JkZXJTZW5kJykub24oJ2NsaWNrJyxmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdTZW5kIGJ1dG9uIGNsaWNrZWQnKTtcclxuICAgICAgICAgICAgLy9AdG9kbzogZGF0YXN5bmNoZXJlIGFuZCBjYWxsYmFja1xyXG4gICAgICAgICAgICAkKCcuYnV0dG9uT3JkZXJTZW5kJykudG9nZ2xlQ2xhc3MoJ2Qtbm9uZScpO1xyXG4gICAgICAgICAgICAkKCcuYnV0dG9uT3JkZXJTZW5kaW5nJykudG9nZ2xlQ2xhc3MoJ2Qtbm9uZScpO1xyXG4gICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgICogUE0xNThcclxuICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgICQuZWFjaChBUFAuT3JkZXJNb2R1bGUuU3RlcHBlci5nZXRPcHRzKCkuYXZhaWxhYmxlLGZ1bmN0aW9uIChpbmRleCx2YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgcm9vdC5TdGVwcGVyLnVuc2V0RW5hYmxlZCh2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICByb290LlN0ZXBwZXIudW5zZXRDb21wbGV0ZWQodmFsdWUpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgLyoqXHJcblxyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgcm9vdC5zZW5kT3JkZXJEYXRhVG9TZXJ2ZXIoJ3NlbmQnLHJvb3QuYWZ0ZXJPcmRlclNlbmRPayxyb290LmFmdGVyT3JkZXJTZW5kRXJyb3IpO1xyXG5cclxuLyogICAgICAgICAgICBsZXQgYWpheERhdGE9e307XHJcbiAgICAgICAgICAgIGFqYXhEYXRhLl90b2tlbj1PcHRzLnRva2VuO1xyXG4gICAgICAgICAgICBhamF4RGF0YS5zZW5kPXRydWU7XHJcbiAgICAgICAgICAgICQuZXh0ZW5kKGFqYXhEYXRhLE9yZGVyKTtcclxuICAgICAgICAgICAgJC5hamF4KHtcclxuICAgICAgICAgICAgICAgdXJsOiBPcHRzLlVSTC5zdG9yZSxcclxuICAgICAgICAgICAgICAgIG1ldGhvZDonUE9TVCcsXHJcbiAgICAgICAgICAgICAgICBkYXRhOmFqYXhEYXRhLFxyXG4gICAgICAgICAgICAgICAgc3VjY2VzczpmdW5jdGlvbiAoZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKGRhdGEuc3VjY2Vzcyl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvb3QuYWZ0ZXJPcmRlclNlbmRPayhkYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pOyovXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudGVzdE1vZGVTZW5kPWZ1bmN0aW9uICgpIHtcclxuXHJcbiAgICB9XHJcblxyXG5cclxuICAgIHRoaXMudGVzdE1vZGU9ZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCd0ZXN0TW9kZSBjYWxsZWQgJylcclxuICAgICAgICBPcmRlci5zZXREYXRhKHtcclxuICAgICAgICAgICAgaWQ6MjM0LFxyXG4gICAgICAgICAgICBzdXBwbGllcklkOjcsXHJcbiAgICAgICAgICAgIHByb2R1Y3RTZWxlY3RlZDp7XHJcbiAgICAgICAgICAgICAgICAxMTYgOiAzLFxyXG4gICAgICAgICAgICAgICAgMjkzIDogMixcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgY29udGFjdE5hbWU6J0NvbnRhY3QgTmFtZScsXHJcbiAgICAgICAgICAgIG5vdGU6J05vdGUnLFxyXG4gICAgICAgICAgICB0eXBlOidkYWlseScsXHJcbiAgICAgICAgICAgIGRlbGl2ZXJ5RGF0ZTpPcHRzLmRlZmF1bHREZWxpdmVyeURhdGUsXHJcbiAgICAgICAgICAgIGRlbGl2ZXJ5QWRkcmVzczoxMixcclxuICAgICAgICB9KTtcclxuICAgICAgICBjb25zb2xlLmxvZyhPcmRlci5nZXREYXRhKCkpO1xyXG5cclxuICAgICAgICBjb25zb2xlLmxvZygnKioqKioqKioqKioqKioqKioqKicpO1xyXG4gICAgICAgIC8vcm9vdC5TdGVwcGVyLnNldE9wdHMoeydVcmxEYXRhJzp7J3N1cHBsaWVySWQnOnN1cHBsaWVySWR9fSk7XHJcbiAgICAgICAgcm9vdC5TdGVwcGVyLnNldE9wdHMoeydVcmxEYXRhJzp7J3N1cHBsaWVySWQnOk9yZGVyLnN1cHBsaWVySWQsaWQ6T3JkZXIuaWR9fSk7XHJcbiAgICAgICAgdGhpcy5TdGVwcGVyLmluaXQoe1xyXG4gICAgICAgICAgICBVUkw6IHtcclxuICAgICAgICAgICAgICAgIGNyZWF0ZTogT3B0cy5VUkwuY3JlYXRlLFxyXG4gICAgICAgICAgICB9LFxyXG4vKlxyXG5jc3VwYXN6IGF6IGVsZWplcm9sXHJcbiAgICAgICAgICAgIGNvbXBsZXRlOlsnc3VwcGxpZXInXSxcclxuICAgICAgICAgICAgZW5hYmxlOiBbJ3N1cHBsaWVyJ10sXHJcbiAgICAgICAgICAgIGFjdGl2ZTogJ3N1cHBsaWVyJyxcclxuICAgICAgICAgICAgb25BZnRlckFjdGl2YXRlOnRoaXMuaW5pdFZpZXdTdXBwbGllcixcclxuXHJcbnByb2R1Y3Qgc2VsZWN0XHJcbiAgICAgICAgICAgIGNvbXBsZXRlOlsnc3VwcGxpZXInLCdwYXJhbWV0ZXInLCdwcm9kdWN0U2VsZWN0J10sXHJcbiAgICAgICAgICAgIGVuYWJsZTogWydzdXBwbGllcicsJ3BhcmFtZXRlcicsJ3Byb2R1Y3RTZWxlY3QnXSxcclxuICAgICAgICAgICAgYWN0aXZlOiAncHJvZHVjdFNlbGVjdCcsXHJcbiAgICAgICAgICAgIG9uQWZ0ZXJBY3RpdmF0ZTp0aGlzLmluaXRWaWV3UHJvZHVjdFNlbGVjdCxcclxuXHJcbmZ1bGxvc1xyXG4gICAgICAgICAgICBjb21wbGV0ZTpbJ3N1cHBsaWVyJywncGFyYW1ldGVyJywncHJvZHVjdFNlbGVjdCcsJ2ludm9pY2UnXSxcclxuICAgICAgICAgICAgZW5hYmxlOiBbJ3N1cHBsaWVyJywncGFyYW1ldGVyJywncHJvZHVjdFNlbGVjdCcsJ2ludm9pY2UnLCdzZW5kJ10sXHJcbiAgICAgICAgICAgIGFjdGl2ZTogJ3Byb2R1Y3RTZWxlY3QnLFxyXG4gICAgICAgICAgICBvbkFmdGVyQWN0aXZhdGU6dGhpcy5pbml0Vmlld1Byb2R1Y3RTZWxlY3QsXHJcblxyXG5zZW5kXHJcbiAgICAgICAgICAgIGNvbXBsZXRlOlsnc3VwcGxpZXInLCdwYXJhbWV0ZXInLCdwcm9kdWN0U2VsZWN0JywnaW52b2ljZScsJ3NlbmQnXSxcclxuICAgICAgICAgICAgZW5hYmxlOiBbJ3N1cHBsaWVyJywncGFyYW1ldGVyJywncHJvZHVjdFNlbGVjdCcsJ2ludm9pY2UnLCdzZW5kJ10sXHJcbiAgICAgICAgICAgIGFjdGl2ZTogJ3NlbmQnLFxyXG4gICAgICAgICAgICBvbkFmdGVyQWN0aXZhdGU6dGhpcy5pbml0Vmlld1Byb2R1Y3RTZWxlY3QsXHJcblxyXG4qL1xyXG4gICAgICAgICAgICBjb21wbGV0ZTpbJ3N1cHBsaWVyJywncGFyYW1ldGVyJywncHJvZHVjdFNlbGVjdCddLFxyXG4gICAgICAgICAgICBlbmFibGU6IFsnc3VwcGxpZXInLCdwYXJhbWV0ZXInLCdwcm9kdWN0U2VsZWN0J10sXHJcbiAgICAgICAgICAgIGFjdGl2ZTogJ3Byb2R1Y3RTZWxlY3QnLFxyXG4gICAgICAgICAgICBvbkFmdGVyQWN0aXZhdGU6dGhpcy5pbml0Vmlld1Byb2R1Y3RTZWxlY3QsXHJcblxyXG5cclxuICAgICAgICAgICAgYXV0b0NhbGxiYWNrOiB7XHJcbiAgICAgICAgICAgICAgICBpbnZvaWNlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgb25BZnRlckFjdGl2YXRlOnJvb3QuaW5pdFZpZXdJbnZvaWNlXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgc2VuZDoge1xyXG4gICAgICAgICAgICAgICAgICAgIG9uQWZ0ZXJBY3RpdmF0ZTpyb290LmluaXRWaWV3U2VuZFxyXG4gICAgICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgY29uc29sZS5sb2coJyoqKioqKioqKioqKioqKioqKionKTtcclxuXHJcbiAgICB9XHJcbiAgICB0aGlzLnRvZ2dsZUVuYWJsZVNlbmQ9ZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCd0b2dnbGVFbmFibGVTZW5kIGNhbGxlZCcpO1xyXG4gICAgICAgIGxldCBhamF4VXJsPU9wdHMuVVJMLmNoZWNrUmVhZHlUb1NlbmQucmVwbGFjZSgnJWlkJScsT3JkZXIuaWQpO1xyXG4gICAgICAgICQuYWpheCh7XHJcbiAgICAgICAgICAgIHVybDphamF4VXJsLFxyXG4gICAgICAgICAgICBzdWNjZXNzOmZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICBpZihkYXRhLnN1Y2Nlc3Mpe1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKGRhdGEucmVhZHlUb1NlbmQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByb290LlN0ZXBwZXIuYWRkQ29tcGxldGVkKCdzZW5kJyk7XHJcbi8qXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvb3QuU3RlcHBlci5hZGRDb21wbGV0ZWQoJ2ludm9pY2UnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcm9vdC5TdGVwcGVyLmFkZEVuYWJsZWQoJ2ludm9pY2UnKTtcclxuKi9cclxuICAgICAgICAgICAgICAgICAgICAgICAgcm9vdC5TdGVwcGVyLmFkZEVuYWJsZWQoJ3NlbmQnKTtcclxuICAgICAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcm9vdC5TdGVwcGVyLnVuc2V0Q29tcGxldGVkKCdzZW5kJyk7XHJcbi8qXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvb3QuU3RlcHBlci51bnNldENvbXBsZXRlZCgnaW52b2ljZScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByb290LlN0ZXBwZXIudW5zZXRFbmFibGVkKCdpbnZvaWNlJyk7XHJcbiovXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvb3QuU3RlcHBlci51bnNldEVuYWJsZWQoJ3NlbmQnKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhkYXRhKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxufVxyXG4iXSwibmFtZXMiOlsid2luZG93IiwiT3JkZXJNb2R1bERlZmF1bHQiLCJhY3Rpb25GdW5jdGlvbiIsIkRhdGFNb2RlbE9yZGVyIiwiX0RhdGFNb2RlbCIsImRhdGEiLCJvcHRpb25zIiwiX3RoaXMiLCJfY2xhc3NDYWxsQ2hlY2siLCJfY2FsbFN1cGVyIiwicHJvZHVjdFNlbGVjdGVkIiwicHJvZHVjdENvbW1lbnQiLCJjb25zb2xlIiwibG9nIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiX2luaGVyaXRzIiwiX2NyZWF0ZUNsYXNzIiwiRGF0YU1vZGVsIiwiU3RlcHBlciIsIk9wdHMiLCJjb21wbGV0ZSIsImF2YWlsYWJsZSIsImVuYWJsZSIsImxvYWQiLCJleGNsdWRlTG9hZGVkIiwibG9hZGVkIiwiYWN0aXZlIiwiVVJMIiwiY3JlYXRlIiwiVXJsRGF0YSIsIm9uQWZ0ZXJMb2FkIiwib25BZnRlckFjdGl2YXRlIiwiYXV0b0NhbGxiYWNrIiwibm93TG9hZGVkIiwicm9vdCIsImNvbnN0cnVjdCIsIiQiLCJleHRlbmQiLCJnZXRPcHRzIiwic2V0T3B0cyIsImluaXQiLCJkZWJ1ZyIsImVhY2giLCJzdGVwTmFtZSIsImluY2x1ZGVzIiwic2V0Q29tcGxldGVkIiwic2V0RW5hYmxlZCIsImxvYWRTdGVwQ29udGVudCIsInNldEFjdGl2ZSIsImJpbmRDbGlja0FjdGlvbiIsInN0ZXBDbGlja0J1dHRvbnMiLCJvZmYiLCJvbiIsInN0ZXBDbGljayIsImFkZENsYXNzIiwidW5zZXRDb21wbGV0ZWQiLCJyZW1vdmVDbGFzcyIsImFycmF5UmVtb3ZlIiwidW5zZXRFbmFibGVkIiwiY29udGVudHMiLCJ1bndyYXAiLCJzdGVwSXRlbSIsImh0bWwiLCJhZGRFbmFibGVkIiwicHVzaCIsImFkZENvbXBsZXRlZCIsImFqYXgiLCJhc3luYyIsInR5cGUiLCJ1cmwiLCJjYWNoZSIsInN1Y2Nlc3MiLCJyZXN1bHQiLCJjb250YWluZXIiLCJjYXBpdGFsaXplIiwiaW5BcnJheSIsImNsZWFyTG9hZGVkIiwiY2xhc3NMaXN0IiwiY29udGFpbnMiLCJzZXRBY3RpdmVGaW5pc2giLCJzaG93IiwiaGlkZSIsImV2ZW50IiwicHJldmVudERlZmF1bHQiLCJjdXJyZW50VGFyZ2V0IiwiT3JkZXJNb2R1bGUiLCJ0ZXN0TW9kZSIsIm5lZWRTdGVwcGVyIiwiQ1NTU2VsZWN0b3JGb3JtIiwiZGVmYXVsdERlbGl2ZXJ5RGF0ZSIsImRhdGFTeW5jUGF1c2VUaW1lIiwidG9rZW4iLCJnZXREYXRhVGFibGVDb250ZW50UHJvZHVjdExpc3QiLCJjaGVja1JlYWR5VG9TZW5kIiwiaW5kZXgiLCJlZGl0Iiwic3RvcmUiLCJ1cGRhdGUiLCJkZXN0cm95IiwidG9nZ2xlRmF2b3JpdGVzIiwiUHVibGljVmFyIiwiUHVibGljVmFyMiIsIkFwaVRva2VuIiwiT3JkZXIiLCJ2aWV3SW5pY2lhbGl6ZWQiLCJjbGlja09yZGVyRWRpdCIsImFqYXhVcmwiLCJyZXBsYWNlIiwiaWQiLCJBUFAiLCJsb2FkTWFpbkNvbnRlbnQiLCJhZnRlck9yZGVyRGVsZXRlZCIsIlRvYXN0IiwiVE9BU1RfU1RBVFVTIiwiREFOR0VSIiwiY2xpY2tPcmRlckRlbGV0ZUNvbmZpcm1lZCIsIm1vZGFsIiwiYWpheERhdGEiLCJfdG9rZW4iLCJtZXRob2QiLCJpbml0Vmlld09yZGVyU2VsZWN0IiwiYWN0aW9uIiwib3JkZXJJZCIsImNsb3Nlc3QiLCJmaW5kIiwidGV4dCIsImluaXRTdGVwcGVyIiwiZ2V0RGF0YSIsInNldERlbGl2ZXJ5RGF0ZSIsInNldFN1cHBsaWVyIiwidW5FbmFibGVkIiwidmFsdWUiLCJzdGVwQWN0aXZlIiwic3RlcENvbXBsZXRlIiwic3RlcEVuYWJsZSIsInN0ZXBPbkFmdGVyQWN0aXZhdGUiLCJhdmFsYWlibGVTdGVwcyIsInN0ZXBVcmxEYXRhIiwic3RlcEF1dG9DYWxsYmFjayIsIl9pdGVyYXRvciIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiX3N0ZXAiLCJzIiwibiIsImRvbmUiLCJpdGVtIiwiZXJyIiwiZSIsImYiLCJzdXBwbGllcklkIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsImluaXRPcmRlciIsInN1cHBsaWVyTmFtZSIsInNldERhdGEiLCJkYXRlVGV4dCIsImRhdGVUZXh0VG8iLCJkYXRlVGV4dEh1bWFuIiwicmVwbGFjZUFsbCIsImxlbmd0aCIsInZhbCIsInNldFN1cHBsaWVyQ29tcGxldGVkIiwiaW5pdFZpZXdQYXJhbWV0ZXIiLCJhZnRlck9yZGVyU2V0U3VwcGxpZXJPayIsInN1cHBsaWVyIiwiSU5GTyIsImluaXRWaWV3U3VwcGxpZXIiLCJzdG9yZVR5cGUiLCJXQVJOSU5HIiwiY2hlY2tDb250YWN0TmFtZUZpZWxkIiwibm9kZSIsInNlbmRPcmRlckRhdGFUb1NlcnZlciIsInVwZGF0ZVR5cGUiLCJjYWxsYmFjayIsImVycm9yQ2FsbGJhY2siLCJhamF4TWV0aG9kIiwiX21ldGhvZCIsImpzb25Ub0Zvcm1EYXRhIiwiY29udGVudFR5cGUiLCJwcm9jZXNzRGF0YSIsImVycm9yIiwieGhyIiwiYWpheE9wdGlvbnMiLCJ0aHJvd25FcnJvciIsImFqYXhFcnJvckhhbmRsZXIiLCJyZXNwb25zZUpTT04iLCJhZnRlck9yZGVyU2V0UGFyYW1ldGVyT2siLCJzZWxlY3RDdXJyZW50V2VlayIsIndlZWtIb3ZlciIsIndlZWtIb3ZlclNsb3ciLCJzZXRUaW1lb3V0IiwiaW5pdERhdGVQaWNrZXIiLCJzdGFydERhdGUiLCJEYXRlIiwiZW5kRGF0ZSIsImRhdGVwaWNrZXIiLCJzaG93T3RoZXJNb250aHMiLCJzZWxlY3RPdGhlck1vbnRocyIsInNob3dXZWVrIiwiZGF0ZUZvcm1hdCIsImZpcnN0RGF5IiwibWluRGF0ZSIsImFmdGVyU2hvdyIsImluc3QiLCJvblNlbGVjdCIsImRhdGUiLCJnZXRNb25kYXkiLCJnZXRGdWxsWWVhciIsImdldE1vbnRoIiwiZ2V0RGF0ZSIsImdldERheSIsImZvcm1hdERhdGUiLCJiZWZvcmVTaG93IiwiZ3JvdXAiLCJncm91cEVuZCIsImJlZm9yZVNob3dEYXkiLCJ0b0xvY2FsZURhdGVTdHJpbmciLCJjc3NDbGFzcyIsIm9uQ2hhbmdlTW9udGhZZWFyIiwieWVhciIsIm1vbnRoIiwiY2FsbENoYW5nZU9yZGVyVHlwZSIsImNsaWNrIiwic2VsZWN0MiIsInByb3AiLCJzZXREYXRlIiwic3VibWl0IiwiY2hlY2tWYWxpZGl0eSIsInN0b3BQcm9wYWdhdGlvbiIsImNvbnRhY3ROYW1lIiwibm90ZSIsIm9yZGVyVHlwZSIsImRlbGl2ZXJ5RGF0ZSIsImRlbGl2ZXJ5QWRkcmVzc0lkIiwiZGVsaXZlcnlBZGRyZXNzIiwiY3VzdG9tTm90aWZpY2F0aW9uRW1haWwiLCJibGFuayIsInNldFBhcmFtZXRlckNvbXBsZXRlZCIsImJpbmRSb3dGYXZvcml0ZXNBY3Rpb24iLCJwcm9kdWN0SWQiLCJidXR0b24iLCJyZXNwb25zZSIsInN0YXR1cyIsImJpbmRSb3dEZXNjcmlwdGlvbkFjdGlvbiIsImNvbW1lbnQiLCJxdWV1ZUFqYXgiLCJub3ciLCJzeW5jT3JkZXJEYXRhVG9TZXJ2ZXIiLCJwcm9kdWN0U2VsZWN0RGF0YXRhYmxlc1Jvd0Zvcm1hdHRlciIsImQiLCJ0ZW1wbGF0ZURhdGEiLCJfdHlwZW9mIiwiZmF2b3JpdGVzIiwiYnRuRmF2b3JpdGVzQ2xhc3MiLCJ0ZW1wbGF0ZSIsIndlZWtseSIsIml0ZW1RdWFudGl0eSIsIm9sZFRhZ3MiLCJNdXN0YWNoZSIsInRhZ3MiLCJzcGVjaWZpY2F0aW9uQ2xhc3MiLCJwaWN0dXJlSW1nIiwicGljdHVyZUNsYXNzIiwicmVuZGVyIiwic2V0RGF0YXRhYmxlSGVhZGVyVGV4dCIsImdldFRyZWVQYXRoTmFtZSIsInJlcyIsIml0ZW1zIiwicGFyZW50cyIsInRvQXJyYXkiLCJzaGlmdCIsInJldmVyc2UiLCJjaGlsZHJlbiIsInNlbGVjdGVkUHJvZHVjdEdyb3VwIiwiZGF0YVRhYmxlU2VhcmNoU3RyIiwiZGF0YVRhYmxlU2VhcmNoS3JlbCIsInNlYXJjaFByb2R1Y3RCeVN0cmluZyIsImZpbHRlclN0ciIsIkRhdGFUYWJsZSIsInJlbG9hZCIsImNsaWNrU2VhcmNoUHJvZHVjdCIsImNsaWNrRmF2b3JpdGVzUHJvZHVjdCIsImNsaWNrT2Z0ZW5Qcm9kdWN0IiwiY2xpY2tTcGVjaWFsT2ZmZXIiLCJjbGlja0xhc3RQcm9kdWN0IiwiY2xpY2tXZWVrbHlQcm9kdWN0IiwiY2xpY2tLcmVsUHJvZHVjdCIsInBhcmVudCIsInRvZ2dsZUNsYXNzIiwicHJvZHVjdFNlbGVjdERhdGFUYWJsZUNvbHVtbkRlZnMiLCJwcm9kdWN0U2VsZWN0RGF0YVRhYmxlQ29sdW1uIiwiY29sdW1uRGF0YSIsImFjdGlvbkNvbHVtbiIsImRlZmF1bHRDb250ZW50IiwiZ2V0RGF0YXRhYmxlcyIsInRhYmxlIiwibGFuZ3VhZ2UiLCJzZWFyY2hTdHIiLCJrcmVsIiwiZ3JvdXBJZCIsImJ1dHRvbnMiLCJwcm9kdWN0U2VsZWN0RGF0YVRhYmxlRHJhd0RUIiwiZmlsdGVyIiwiaW5wdXRTcGlubmVyIiwiYnV0dG9uc1dpZHRoIiwiZ3JvdXBDbGFzcyIsImJ1dHRvbnNDbGFzcyIsImJpbmRXZWFrVXNlckhlbHBlciIsInF1YW50aXR5IiwicGFyc2VGbG9hdCIsInJvd0RhdGEiLCJyb3ciLCJvcmRlckl0ZW1zQ2hhbmdlIiwicXVhbnRpdHlDdXJyZW50IiwidHJpZ2dlciIsImluaXRWaWV3UHJvZHVjdFNlbGVjdCIsImZ1bmN0aW9uTmFtZSIsIndoaWNoIiwia2V5IiwiZ2V0VGltZSIsImRhdGFUYWJsZSIsInRyIiwiY2hpbGQiLCJpc1Nob3duIiwiYmluZFByb2R1Y3REZXRhaWxzQWN0aW9uIiwiYmluZE9yZGVySXRlbVdlZWtRdWFudGl0eSIsImFjdHVhbEl0ZW0iLCJmb2N1cyIsInJvd05vZGUiLCJwcmV2IiwiYWZ0ZXJTeW5jT3JkZXJEYXRhVG9TZXJ2ZXIiLCJpIiwic3luY0RvaW5nIiwiSXRlbURhdGEiLCJkYXlJbmRleCIsImlzTmFOIiwicHJvZHVjdFNlbGVjdGVkSXRlbSIsImluaXRWaWV3SW52b2ljZSIsIk9iamVjdCIsImtleXMiLCJzdHlsZVN0ciIsInByaW50IiwibmV3V2luIiwib3BlbiIsImRvY3VtZW50Iiwid3JpdGUiLCJjbG9uZSIsInJlbW92ZSIsImNsb3NlIiwicmVzZXRPcmRlciIsImFmdGVyT3JkZXJTZW5kT2siLCJyZXRIVE1MIiwiYWZ0ZXJPcmRlclNlbmRFcnJvciIsImluaXRWaWV3U2VuZCIsInRlc3RNb2RlU2VuZCIsImludm9pY2UiLCJzZW5kIiwidG9nZ2xlRW5hYmxlU2VuZCIsInJlYWR5VG9TZW5kIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./resources/js/moduleJs/order.js\n\n}");
/***/ },
/***/ "./resources/js/moduleJs/orderArchive.js"
/*!***********************************************!*\
!*** ./resources/js/moduleJs/orderArchive.js ***!
\***********************************************/
() {
eval("{function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _superPropGet(t, o, e, r) { var p = _get(_getPrototypeOf(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\nfunction _get() { return _get = \"undefined\" != typeof Reflect && Reflect.get ? Reflect.get.bind() : function (e, t, r) { var p = _superPropBase(e, t); if (p) { var n = Object.getOwnPropertyDescriptor(p, t); return n.get ? n.get.call(arguments.length < 3 ? e : r) : n.value; } }, _get.apply(null, arguments); }\nfunction _superPropBase(t, o) { for (; !{}.hasOwnProperty.call(t, o) && null !== (t = _getPrototypeOf(t));); return t; }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\nfunction _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\nfunction _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\nfunction _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\nif (typeof window.DataModelOrderArchive === \"undefined\") {\n window.OrderArchiveModulDefault = {\n actionFunction: function actionFunction() {}\n };\n var _DataModelOrderArchive = /*#__PURE__*/function (_DataModel) {\n /*\r\n * Constructor\r\n */\n function _DataModelOrderArchive(data, options) {\n var _this;\n _classCallCheck(this, _DataModelOrderArchive);\n _this = _callSuper(this, _DataModelOrderArchive, [data, options]);\n if (typeof _this.items === \"undefined\") {\n _this.items = {};\n }\n console.log(_this.constructor.name + ' constructor called');\n return _this;\n }\n _inherits(_DataModelOrderArchive, _DataModel);\n return _createClass(_DataModelOrderArchive);\n }(DataModel);\n ;\n window.DataModelOrderArchive = _DataModelOrderArchive;\n}\nif (typeof window.OrderArchiveModule === \"undefined\") {\n var OrderArchiveModule = /*#__PURE__*/function (_ModuleBase) {\n function OrderArchiveModule(options, data) {\n var _this2;\n _classCallCheck(this, OrderArchiveModule);\n _this2 = _callSuper(this, OrderArchiveModule, [options, data]);\n if (data !== \"undefined\" || data != null) {} else {\n _this2.data = new DataModelOrderArchive();\n }\n _this2.dataTable = null;\n _this2.Opts.dataTable.advanceSearchParameter = {\n deliveryDateFrom: null,\n deliveryDateTo: null,\n profitCenterId: null,\n supplierId: null\n };\n return _this2;\n }\n _inherits(OrderArchiveModule, _ModuleBase);\n return _createClass(OrderArchiveModule, [{\n key: \"datatableRowActionAttachment\",\n value: function datatableRowActionAttachment(rowData, node) {\n debug('call datatableRowActionAttachment');\n _superPropGet(OrderArchiveModule, \"datatableRowActionAttachment\", this, 3)([rowData, node, {\n defaultFileName: \"order\"\n }]);\n }\n }, {\n key: \"datatableRowActionView\",\n value: function datatableRowActionView(rowData, node) {\n debug('call datatableRowActionView');\n _superPropGet(OrderArchiveModule, \"datatableRowActionView\", this, 3)([rowData, node, APP.OrderArchiveModule]);\n console.log('datatableRowActionEdit End');\n }\n }, {\n key: \"datatableRowActionButtonClick\",\n value: function datatableRowActionButtonClick(event) {\n debug('datatableRowActionButtonClick');\n _superPropGet(OrderArchiveModule, \"datatableRowActionButtonClick\", this, 3)([event, APP.OrderArchiveModule]);\n }\n /*\r\n datatableRowActionButtonClick (event){\r\n debug('datatableRowActionButtonClick');\r\n let node=$(event[0].currentTarget);\r\n let row=$(dataTableCSSSelector).DataTable().row(node.parents('tr'));\r\n let rowData=row.data();\r\n let actionName='datatableRowAction'+node.data('buttontype').capitalize();\r\n if (typeof root[actionName] === \"function\") {\r\n return root[actionName](rowData,node)\r\n }\r\n }\r\n */\n }, {\n key: \"datatableRowActionEdit\",\n value: function datatableRowActionEdit(rowData, node) {\n console.log('datatableRowActionEdit Called');\n //Opts.onAfterInitViewDetails=root.autofillDetails;\n var ajaxUrl = this.Opts.URL.edit.replace('%id%', rowData.id);\n console.log(this.Opts.URL);\n console.log(ajaxUrl);\n /*\r\n */\n APP.loadMainContent(ajaxUrl);\n console.log('datatableRowActionEdit End');\n }\n }, {\n key: \"initViewShow\",\n value: function initViewShow() {\n debug('call initViewShow');\n var root = APP.OrderArchiveModule;\n var styleStr = '<link rel=\"stylesheet\" href=\"' + root.Opts.URL.root + '/css/invoice.css\">';\n $('table.invoice button.printButton').off('click');\n $('table.invoice button.printButton').on('click', function () {\n window.print();\n return;\n // removed by dead control flow\n var newWin; \n // removed by dead control flow\n\n // removed by dead control flow\n var print; \n // removed by dead control flow\n\n // newWin.document.write($('table.invoice').prop('outerHTML'));\n // removed by dead control flow\n\n // removed by dead control flow\n\n // newWin.close();\n });\n }\n }, {\n key: \"datatableCustomHeadButtonClickCallBack\",\n value: function datatableCustomHeadButtonClickCallBack() {\n console.info('hello itt vagyok');\n $('.advanceSearchModal').modal('show');\n }\n }, {\n key: \"initAdvancedSearch\",\n value: function initAdvancedSearch() {\n console.log('initAdvancedSearch');\n window.datePickerTarget = '';\n $('.deliveryDateFrom,.deliveryDateTo').datepicker({\n dateFormat: 'yy-mm-dd',\n //minDate:new Date(),\n onSelect: function onSelect(dateText) {\n debug('target:' + window.datePickerTarget);\n $('.' + window.datePickerTarget + 'SelectedDateText').text(dateText);\n debug($(' input[name=\"' + window.datePickerTarget + '\"]'));\n $(' input[name=\"' + window.datePickerTarget + '\"]').val(dateText);\n }\n });\n $('.datePickerClick').click(function () {\n debug($(this).data('target'));\n datePickerTarget = $(this).data('target');\n //$('.datePicker .'+datePickerTarget).datepicker('show');\n $('.' + datePickerTarget).datepicker('show');\n });\n $(\".selectProfitCenter,.selectSupplier\").select2({\n maximumSelectionLength: 1\n });\n /*\r\n stored advanceSearchParameter restoring\r\n */\n var advanceFiltered = false;\n $.each(this.Opts.dataTable.advanceSearchParameter, function (k, v) {\n if (v != null) {\n advanceFiltered = true;\n console.log(k + ' > ' + v);\n $('.advanceSearchModal input[name=' + k + '],.advanceSearchModal select[name=' + k + ']').val(v).trigger('change');\n $('.' + k + 'SelectedDateText').text(v);\n }\n });\n if (advanceFiltered) {\n $('.dt-button.btn-advanceSearchParameter').addClass('btn-success');\n }\n /*\r\n clearing advanceSearchParameter\r\n */\n $('.advanceSearchModal .buttonClear').off('click');\n $('.advanceSearchModal .buttonClear').on('click', function () {\n $('.advanceSearchModal input,.advanceSearchModal select').val('').trigger('change');\n $('.SelectedDateText').text('\\xa0');\n var root = APP.OrderArchiveModule;\n $.each(root.Opts.dataTable.advanceSearchParameter, function (k, v) {\n root.Opts.dataTable.advanceSearchParameter[k] = null;\n });\n $('.dt-button.btn-advanceSearchParameter').removeClass('btn-success');\n var dataTableCSSSelector = root.Opts.CSSSelectorContainer + ' .dataTable';\n $(dataTableCSSSelector).DataTable().ajax.reload();\n $('.advanceSearchModal').modal('hide');\n });\n\n /*\r\n process advanceSearchParameter\r\n */\n $('.advanceSearchModal .buttonSave').off('click');\n $('.advanceSearchModal .buttonSave').on('click', function () {\n console.log('clicked advanced search ');\n var root = APP.OrderArchiveModule;\n var dataSearch = $('.advanceSearchModalForm').find('input,select').serializeArray();\n console.log(dataSearch);\n console.log(root.Opts);\n console.log(root.Opts.dataTable.advanceSearchParameter);\n $.each(root.Opts.dataTable.advanceSearchParameter, function (k, v) {\n root.Opts.dataTable.advanceSearchParameter[k] = null;\n });\n $.each(dataSearch, function (k, item) {\n console.log(item['name']);\n console.log(item['value']);\n if (typeof root.Opts.dataTable.advanceSearchParameter[item['name']] != 'undefined' && item['value'].length > 0) {\n root.Opts.dataTable.advanceSearchParameter[item['name']] = item['value'];\n }\n });\n console.log(root.Opts.dataTable.advanceSearchParameter);\n var dataTableCSSSelector = root.Opts.CSSSelectorContainer + ' .dataTable';\n $(dataTableCSSSelector).DataTable().ajax.reload();\n $('.dt-button.btn-advanceSearchParameter').addClass('btn-success');\n $('.advanceSearchModal').modal('hide');\n });\n }\n }, {\n key: \"initViewList\",\n value: function initViewList() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n debug('listview inicialization');\n if (APP.IsUserAdmin) {\n this.DtColumns = [{\n \"data\": \"supplier_name\"\n }, {\n \"data\": \"deliveryDate\"\n }, {\n \"data\": \"profit_center.name\"\n }, {\n \"data\": \"deliveryAddressName\"\n }, {\n \"data\": \"sentTime\"\n }, {\n \"data\": \"humanId\"\n }, {\n \"data\": \"confirmed\"\n }, null];\n } else {\n this.DtColumns = [{\n \"data\": \"supplier_name\"\n }, {\n \"data\": \"deliveryDate\"\n }, {\n \"data\": \"deliveryAddressName\"\n }, {\n \"data\": \"sentTime\"\n }, {\n \"data\": \"humanId\"\n }, {\n \"data\": \"confirmed\"\n }, null];\n }\n var dataTableCSSSelector = this.Opts.CSSSelectorContainer + ' .dataTable'; //\n var colNum = $(dataTableCSSSelector + ' thead th').length; //buttons insert position need\n APP.setOpts({\n //datatableRowActionButtonClickCallBack:this.datatableRowActionButtonClick,\n datatableRowActionButtonClickCallBack: this.datatableRowActionButtonClick,\n datatableCustomHeadButtonClickCallBack: this.datatableCustomHeadButtonClickCallBack\n });\n var orderDirective = this.Opts.dataTable.orderDirective;\n var advanceSearchParameter = this.Opts.dataTable.advanceSearchParameter;\n if (typeof options['orderDirective'] != 'undefined') {\n orderDirective = options['orderDirective'];\n }\n //let ajaxUrl=this.Opts.URL.getDataTableContent;\n this.dataTable = $(dataTableCSSSelector).DataTable({\n language: {\n url: '//cdn.datatables.net/plug-ins/1.10.24/i18n/Hungarian.json'\n },\n //\"ajax\": \"{{asset('exapmle2.json')}}\",\n \"ajax\": {\n url: this.Opts.URL.getDataTableContent,\n data: function data(_data) {\n _data.advanceSearchParameter = advanceSearchParameter;\n /*\r\n data.searchParam=this.Opts.dataTable.advanceSearchParameter\r\n data.searchStr=dataTableSearchStr;\r\n data.groupId=selectedProductGroup;\r\n data.supplierId=Order.supplierId;\r\n data.deliveryDate=Order.deliveryDate;\r\n */\n }\n },\n \"columnDefs\": [{\n \"targets\": colNum - 1,\n \"render\": function render(data, type, row) {\n var buttons = APP.datatableAddRowViewButton(0, arguments);\n buttons += APP.datatableAddRowAttachmentButton(0, arguments);\n //buttons+=APP.datatableAddRowEditButton(0, arguments);\n if (row.canEditable) {\n buttons += APP.datatableAddRowEditButton(0, {\n title: \"módosítás\"\n });\n }\n return buttons;\n }\n }, {\n \"targets\": colNum - 2,\n \"render\": function render(data, type, row) {\n if (row.confirmed == null) {\n return '<span class=\"badge badge-pill badge-danger\"><i class=\"fas fa-handshake-slash\"></i></span>';\n } else {\n return row.confirmed;\n }\n }\n }, {\n \"targets\": 1,\n \"render\": function render(data, type, row) {\n row = null;\n return type === \"sort\" ? data.latinise() : data;\n }\n }\n //{ \"visible\": false, \"targets\": [ 0 ] }\n ],\n buttons: {\n buttons: ['excel', 'pdf', {\n extend: 'print',\n //text: 'Print current page',\n 'title': 'title custom text',\n 'messageTop': 'Message On Top',\n autoPrint: true\n }, {\n text: 'Szürők',\n action: function action(e, dt, node, config) {\n APP.datatableCustomHeadButtonClickCallBack();\n },\n className: 'btn-advanceSearchParameter'\n }\n /**/]\n },\n \"columns\": this.DtColumns,\n \"order\": orderDirective,\n \"stateSave\": false,\n \"drawCallback\": function drawCallback(settings) {\n settings = null;\n APP.datatableAddRowAction(dataTableCSSSelector);\n }\n });\n this.initAdvancedSearch();\n debug('listview end');\n }\n }]);\n }(ModuleBase);\n window.OrderArchiveModule = OrderArchiveModule;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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NEYsVUFBVTtFQXdTM0M5SCxNQUFNLENBQUNtQixrQkFBa0IsR0FBQ0Esa0JBQWtCO0FBQ2hEIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL21vZHVsZUpzL29yZGVyQXJjaGl2ZS5qcz9mMGE4Il0sInNvdXJjZXNDb250ZW50IjpbIlxyXG5cclxuaWYodHlwZW9mIHdpbmRvdy5EYXRhTW9kZWxPcmRlckFyY2hpdmUgPT09XCJ1bmRlZmluZWRcIil7XHJcbiAgICB3aW5kb3cuT3JkZXJBcmNoaXZlTW9kdWxEZWZhdWx0PXtcclxuICAgICAgICBhY3Rpb25GdW5jdGlvbjogZnVuY3Rpb24gKCkge30sXHJcbiAgICB9XHJcbiAgICBjbGFzcyBEYXRhTW9kZWxPcmRlckFyY2hpdmUgZXh0ZW5kcyBEYXRhTW9kZWx7XHJcblxyXG4gICAgICAgIC8qXHJcbiAgICAgICAgICogQ29uc3RydWN0b3JcclxuICAgICAgICAgKi9cclxuICAgICAgICBjb25zdHJ1Y3RvciAoZGF0YSxvcHRpb25zKSB7XHJcbiAgICAgICAgICAgIHN1cGVyKGRhdGEsb3B0aW9ucylcclxuICAgICAgICAgICAgaWYodHlwZW9mIHRoaXMuaXRlbXMgPT09XCJ1bmRlZmluZWRcIil7XHJcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1zPXt9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMuY29uc3RydWN0b3IubmFtZSsnIGNvbnN0cnVjdG9yIGNhbGxlZCcpO1xyXG4gICAgICAgIH07XHJcbiAgICB9O1xyXG4gICAgd2luZG93LkRhdGFNb2RlbE9yZGVyQXJjaGl2ZT1EYXRhTW9kZWxPcmRlckFyY2hpdmU7XHJcbn1cclxuXHJcblxyXG5pZih0eXBlb2Ygd2luZG93Lk9yZGVyQXJjaGl2ZU1vZHVsZSA9PT1cInVuZGVmaW5lZFwiKSB7XHJcbiAgICBjbGFzcyBPcmRlckFyY2hpdmVNb2R1bGUgZXh0ZW5kcyBNb2R1bGVCYXNle1xyXG4gICAgICAgIGNvbnN0cnVjdG9yIChvcHRpb25zLGRhdGEpIHtcclxuICAgICAgICAgICAgc3VwZXIob3B0aW9ucyxkYXRhKVxyXG4gICAgICAgICAgICBpZihkYXRhIT09XCJ1bmRlZmluZWRcIiB8fCBkYXRhIT1udWxsKXtcclxuICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGE9bmV3IERhdGFNb2RlbE9yZGVyQXJjaGl2ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuZGF0YVRhYmxlPW51bGw7XHJcbiAgICAgICAgICAgIHRoaXMuT3B0cy5kYXRhVGFibGUuYWR2YW5jZVNlYXJjaFBhcmFtZXRlcj17XHJcbiAgICAgICAgICAgICAgICBkZWxpdmVyeURhdGVGcm9tOm51bGwsXHJcbiAgICAgICAgICAgICAgICBkZWxpdmVyeURhdGVUbzpudWxsLFxyXG4gICAgICAgICAgICAgICAgcHJvZml0Q2VudGVySWQ6bnVsbCxcclxuICAgICAgICAgICAgICAgIHN1cHBsaWVySWQ6bnVsbCxcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGRhdGF0YWJsZVJvd0FjdGlvbkF0dGFjaG1lbnQocm93RGF0YSxub2RlKSB7XHJcbiAgICAgICAgICAgIGRlYnVnKCdjYWxsIGRhdGF0YWJsZVJvd0FjdGlvbkF0dGFjaG1lbnQnKTtcclxuICAgICAgICAgICAgc3VwZXIuZGF0YXRhYmxlUm93QWN0aW9uQXR0YWNobWVudChyb3dEYXRhLG5vZGUse2RlZmF1bHRGaWxlTmFtZTpcIm9yZGVyXCJ9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGRhdGF0YWJsZVJvd0FjdGlvblZpZXcocm93RGF0YSxub2RlKSB7XHJcbiAgICAgICAgICAgIGRlYnVnKCdjYWxsIGRhdGF0YWJsZVJvd0FjdGlvblZpZXcnKTtcclxuICAgICAgICAgICAgc3VwZXIuZGF0YXRhYmxlUm93QWN0aW9uVmlldyhyb3dEYXRhLG5vZGUsQVBQLk9yZGVyQXJjaGl2ZU1vZHVsZSlcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ2RhdGF0YWJsZVJvd0FjdGlvbkVkaXQgRW5kJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBkYXRhdGFibGVSb3dBY3Rpb25CdXR0b25DbGljayhldmVudCkge1xyXG4gICAgICAgICAgICBkZWJ1ZygnZGF0YXRhYmxlUm93QWN0aW9uQnV0dG9uQ2xpY2snKTtcclxuICAgICAgICAgICAgc3VwZXIuZGF0YXRhYmxlUm93QWN0aW9uQnV0dG9uQ2xpY2soZXZlbnQsQVBQLk9yZGVyQXJjaGl2ZU1vZHVsZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8qXHJcbiAgICAgICAgZGF0YXRhYmxlUm93QWN0aW9uQnV0dG9uQ2xpY2sgKGV2ZW50KXtcclxuICAgICAgICAgICAgZGVidWcoJ2RhdGF0YWJsZVJvd0FjdGlvbkJ1dHRvbkNsaWNrJyk7XHJcbiAgICAgICAgICAgIGxldCBub2RlPSQoZXZlbnRbMF0uY3VycmVudFRhcmdldCk7XHJcbiAgICAgICAgICAgIGxldCByb3c9JChkYXRhVGFibGVDU1NTZWxlY3RvcikuRGF0YVRhYmxlKCkucm93KG5vZGUucGFyZW50cygndHInKSk7XHJcbiAgICAgICAgICAgIGxldCByb3dEYXRhPXJvdy5kYXRhKCk7XHJcbiAgICAgICAgICAgIGxldCBhY3Rpb25OYW1lPSdkYXRhdGFibGVSb3dBY3Rpb24nK25vZGUuZGF0YSgnYnV0dG9udHlwZScpLmNhcGl0YWxpemUoKTtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiByb290W2FjdGlvbk5hbWVdID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiByb290W2FjdGlvbk5hbWVdKHJvd0RhdGEsbm9kZSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAqL1xyXG4gICAgICAgIGRhdGF0YWJsZVJvd0FjdGlvbkVkaXQocm93RGF0YSxub2RlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdkYXRhdGFibGVSb3dBY3Rpb25FZGl0IENhbGxlZCcpO1xyXG4gICAgICAgICAgICAvL09wdHMub25BZnRlckluaXRWaWV3RGV0YWlscz1yb290LmF1dG9maWxsRGV0YWlscztcclxuICAgICAgICAgICAgbGV0IGFqYXhVcmw9dGhpcy5PcHRzLlVSTC5lZGl0LnJlcGxhY2UoJyVpZCUnLHJvd0RhdGEuaWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMuT3B0cy5VUkwpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGFqYXhVcmwpO1xyXG4gICAgICAgICAgICAvKlxyXG4gICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICBBUFAubG9hZE1haW5Db250ZW50KGFqYXhVcmwpO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnZGF0YXRhYmxlUm93QWN0aW9uRWRpdCBFbmQnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGluaXRWaWV3U2hvdygpe1xyXG4gICAgICAgICAgICBkZWJ1ZygnY2FsbCBpbml0Vmlld1Nob3cnKTtcclxuICAgICAgICAgICAgbGV0IHJvb3Q9QVBQLk9yZGVyQXJjaGl2ZU1vZHVsZTtcclxuICAgICAgICAgICAgbGV0IHN0eWxlU3RyPSc8bGluayByZWw9XCJzdHlsZXNoZWV0XCIgaHJlZj1cIicrcm9vdC5PcHRzLlVSTC5yb290KycvY3NzL2ludm9pY2UuY3NzXCI+JztcclxuICAgICAgICAgICAgJCgndGFibGUuaW52b2ljZSBidXR0b24ucHJpbnRCdXR0b24nKS5vZmYoJ2NsaWNrJyk7XHJcbiAgICAgICAgICAgICQoJ3RhYmxlLmludm9pY2UgYnV0dG9uLnByaW50QnV0dG9uJykub24oJ2NsaWNrJyxmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICB3aW5kb3cucHJpbnQoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIGxldCBuZXdXaW49IHdpbmRvdy5vcGVuKFwiXCIpO1xyXG4gICAgICAgICAgICAgICAgbmV3V2luLmRvY3VtZW50LndyaXRlKHN0eWxlU3RyKTtcclxuICAgICAgICAgICAgICAgIGxldCBwcmludD0kKCd0YWJsZS5pbnZvaWNlJykuY2xvbmUoKTtcclxuICAgICAgICAgICAgICAgIHByaW50LmZpbmQoJ2J1dHRvbi5wcmludEJ1dHRvbicpLnJlbW92ZSgpO1xyXG4vLyAgICAgICAgICAgIG5ld1dpbi5kb2N1bWVudC53cml0ZSgkKCd0YWJsZS5pbnZvaWNlJykucHJvcCgnb3V0ZXJIVE1MJykpO1xyXG4gICAgICAgICAgICAgICAgbmV3V2luLmRvY3VtZW50LndyaXRlKHByaW50LnByb3AoJ291dGVySFRNTCcpKTtcclxuICAgICAgICAgICAgICAgIG5ld1dpbi5wcmludCgpO1xyXG4vLyAgICAgICAgICAgICAgICBuZXdXaW4uY2xvc2UoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBkYXRhdGFibGVDdXN0b21IZWFkQnV0dG9uQ2xpY2tDYWxsQmFjaygpe1xyXG4gICAgICAgICAgICBjb25zb2xlLmluZm8oJ2hlbGxvIGl0dCB2YWd5b2snKTtcclxuICAgICAgICAgICAgJCgnLmFkdmFuY2VTZWFyY2hNb2RhbCcpLm1vZGFsKCdzaG93Jyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpbml0QWR2YW5jZWRTZWFyY2goKXtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ2luaXRBZHZhbmNlZFNlYXJjaCcpO1xyXG4gICAgICAgICAgICB3aW5kb3cuZGF0ZVBpY2tlclRhcmdldD0nJztcclxuICAgICAgICAgICAgJCgnLmRlbGl2ZXJ5RGF0ZUZyb20sLmRlbGl2ZXJ5RGF0ZVRvJykuZGF0ZXBpY2tlcih7XHJcbiAgICAgICAgICAgICAgICBkYXRlRm9ybWF0OiAneXktbW0tZGQnLFxyXG4gICAgICAgICAgICAgICAgLy9taW5EYXRlOm5ldyBEYXRlKCksXHJcbiAgICAgICAgICAgICAgICBvblNlbGVjdDpmdW5jdGlvbiAoZGF0ZVRleHQpe1xyXG4gICAgICAgICAgICAgICAgICAgIGRlYnVnKCd0YXJnZXQ6Jyt3aW5kb3cuZGF0ZVBpY2tlclRhcmdldCk7XHJcbiAgICAgICAgICAgICAgICAgICAgJCgnLicrd2luZG93LmRhdGVQaWNrZXJUYXJnZXQrJ1NlbGVjdGVkRGF0ZVRleHQnKS50ZXh0KGRhdGVUZXh0KTtcclxuICAgICAgICAgICAgICAgICAgICBkZWJ1ZygkKCcgaW5wdXRbbmFtZT1cIicrd2luZG93LmRhdGVQaWNrZXJUYXJnZXQrJ1wiXScpKTtcclxuICAgICAgICAgICAgICAgICAgICAkKCcgaW5wdXRbbmFtZT1cIicrd2luZG93LmRhdGVQaWNrZXJUYXJnZXQrJ1wiXScpLnZhbChkYXRlVGV4dCk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9KTtcclxuXHJcblxyXG5cclxuICAgICAgICAgICAgJCgnLmRhdGVQaWNrZXJDbGljaycpLmNsaWNrKGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgICBkZWJ1ZygkKHRoaXMpLmRhdGEoJ3RhcmdldCcpKTtcclxuICAgICAgICAgICAgICAgIGRhdGVQaWNrZXJUYXJnZXQ9JCh0aGlzKS5kYXRhKCd0YXJnZXQnKTtcclxuICAgICAgICAgICAgICAgIC8vJCgnLmRhdGVQaWNrZXIgLicrZGF0ZVBpY2tlclRhcmdldCkuZGF0ZXBpY2tlcignc2hvdycpO1xyXG4gICAgICAgICAgICAgICAgJCgnLicrZGF0ZVBpY2tlclRhcmdldCkuZGF0ZXBpY2tlcignc2hvdycpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgJChcIi5zZWxlY3RQcm9maXRDZW50ZXIsLnNlbGVjdFN1cHBsaWVyXCIpLnNlbGVjdDIoe1xyXG4gICAgICAgICAgICAgICAgbWF4aW11bVNlbGVjdGlvbkxlbmd0aDogMSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIC8qXHJcbiAgICAgICAgICAgIHN0b3JlZCBhZHZhbmNlU2VhcmNoUGFyYW1ldGVyIHJlc3RvcmluZ1xyXG4gICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICBsZXQgYWR2YW5jZUZpbHRlcmVkPWZhbHNlO1xyXG4gICAgICAgICAgICQuZWFjaCh0aGlzLk9wdHMuZGF0YVRhYmxlLmFkdmFuY2VTZWFyY2hQYXJhbWV0ZXIsZnVuY3Rpb24gKGssdikge1xyXG4gICAgICAgICAgICAgICAgaWYodiE9bnVsbCl7XHJcbiAgICAgICAgICAgICAgICAgICAgYWR2YW5jZUZpbHRlcmVkPXRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coaysnID4gJyt2KTtcclxuICAgICAgICAgICAgICAgICAgICAkKCcuYWR2YW5jZVNlYXJjaE1vZGFsIGlucHV0W25hbWU9JytrKyddLC5hZHZhbmNlU2VhcmNoTW9kYWwgc2VsZWN0W25hbWU9JytrKyddJykudmFsKHYpLnRyaWdnZXIoJ2NoYW5nZScpO1xyXG4gICAgICAgICAgICAgICAgICAgICQoJy4nK2srJ1NlbGVjdGVkRGF0ZVRleHQnKS50ZXh0KHYpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgaWYoYWR2YW5jZUZpbHRlcmVkKXtcclxuICAgICAgICAgICAgICAgJCgnLmR0LWJ1dHRvbi5idG4tYWR2YW5jZVNlYXJjaFBhcmFtZXRlcicpLmFkZENsYXNzKCdidG4tc3VjY2VzcycpO1xyXG4gICAgICAgICAgIH1cclxuICAgICAgICAgICAgLypcclxuICAgICAgICAgICAgY2xlYXJpbmcgYWR2YW5jZVNlYXJjaFBhcmFtZXRlclxyXG4gICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICAkKCcuYWR2YW5jZVNlYXJjaE1vZGFsIC5idXR0b25DbGVhcicpLm9mZignY2xpY2snKTtcclxuICAgICAgICAgICAgJCgnLmFkdmFuY2VTZWFyY2hNb2RhbCAuYnV0dG9uQ2xlYXInKS5vbignY2xpY2snLGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICQoJy5hZHZhbmNlU2VhcmNoTW9kYWwgaW5wdXQsLmFkdmFuY2VTZWFyY2hNb2RhbCBzZWxlY3QnKS52YWwoJycpLnRyaWdnZXIoJ2NoYW5nZScpO1xyXG4gICAgICAgICAgICAgICAgJCgnLlNlbGVjdGVkRGF0ZVRleHQnKS50ZXh0KCdcXHhhMCcpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHJvb3Q9QVBQLk9yZGVyQXJjaGl2ZU1vZHVsZTtcclxuICAgICAgICAgICAgICAgICQuZWFjaChyb290Lk9wdHMuZGF0YVRhYmxlLmFkdmFuY2VTZWFyY2hQYXJhbWV0ZXIsZnVuY3Rpb24gKGssdikge1xyXG4gICAgICAgICAgICAgICAgICAgIHJvb3QuT3B0cy5kYXRhVGFibGUuYWR2YW5jZVNlYXJjaFBhcmFtZXRlcltrXT1udWxsO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAkKCcuZHQtYnV0dG9uLmJ0bi1hZHZhbmNlU2VhcmNoUGFyYW1ldGVyJykucmVtb3ZlQ2xhc3MoJ2J0bi1zdWNjZXNzJyk7XHJcbiAgICAgICAgICAgICAgICBsZXQgZGF0YVRhYmxlQ1NTU2VsZWN0b3I9cm9vdC5PcHRzLkNTU1NlbGVjdG9yQ29udGFpbmVyKycgLmRhdGFUYWJsZSc7XHJcbiAgICAgICAgICAgICAgICAkKGRhdGFUYWJsZUNTU1NlbGVjdG9yKS5EYXRhVGFibGUoKS5hamF4LnJlbG9hZCgpO1xyXG4gICAgICAgICAgICAgICAgJCgnLmFkdmFuY2VTZWFyY2hNb2RhbCcpLm1vZGFsKCdoaWRlJyk7XHJcblxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIC8qXHJcbiAgICAgICAgICAgIHByb2Nlc3MgYWR2YW5jZVNlYXJjaFBhcmFtZXRlclxyXG4gICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICAkKCcuYWR2YW5jZVNlYXJjaE1vZGFsIC5idXR0b25TYXZlJykub2ZmKCdjbGljaycpO1xyXG4gICAgICAgICAgICAkKCcuYWR2YW5jZVNlYXJjaE1vZGFsIC5idXR0b25TYXZlJykub24oJ2NsaWNrJyxmdW5jdGlvbiAoKXtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdjbGlja2VkIGFkdmFuY2VkIHNlYXJjaCAnKTtcclxuICAgICAgICAgICAgICAgIGxldCByb290PUFQUC5PcmRlckFyY2hpdmVNb2R1bGU7XHJcbiAgICAgICAgICAgICAgICBsZXQgZGF0YVNlYXJjaD0kKCcuYWR2YW5jZVNlYXJjaE1vZGFsRm9ybScpLmZpbmQoJ2lucHV0LHNlbGVjdCcpLnNlcmlhbGl6ZUFycmF5KCk7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhkYXRhU2VhcmNoKTtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHJvb3QuT3B0cyk7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhyb290Lk9wdHMuZGF0YVRhYmxlLmFkdmFuY2VTZWFyY2hQYXJhbWV0ZXIpO1xyXG4gICAgICAgICAgICAgICAgJC5lYWNoKHJvb3QuT3B0cy5kYXRhVGFibGUuYWR2YW5jZVNlYXJjaFBhcmFtZXRlcixmdW5jdGlvbiAoayx2KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcm9vdC5PcHRzLmRhdGFUYWJsZS5hZHZhbmNlU2VhcmNoUGFyYW1ldGVyW2tdPW51bGw7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICQuZWFjaChkYXRhU2VhcmNoLGZ1bmN0aW9uIChrLGl0ZW0pIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhpdGVtWyduYW1lJ10pO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGl0ZW1bJ3ZhbHVlJ10pO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKCB0eXBlb2Ygcm9vdC5PcHRzLmRhdGFUYWJsZS5hZHZhbmNlU2VhcmNoUGFyYW1ldGVyW2l0ZW1bJ25hbWUnXV0hPSAndW5kZWZpbmVkJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiBpdGVtWyd2YWx1ZSddLmxlbmd0aD4wXHJcbiAgICAgICAgICAgICAgICAgICAgKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcm9vdC5PcHRzLmRhdGFUYWJsZS5hZHZhbmNlU2VhcmNoUGFyYW1ldGVyW2l0ZW1bJ25hbWUnXV09aXRlbVsndmFsdWUnXTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2cocm9vdC5PcHRzLmRhdGFUYWJsZS5hZHZhbmNlU2VhcmNoUGFyYW1ldGVyKTtcclxuICAgICAgICAgICAgICAgIGxldCBkYXRhVGFibGVDU1NTZWxlY3Rvcj1yb290Lk9wdHMuQ1NTU2VsZWN0b3JDb250YWluZXIrJyAuZGF0YVRhYmxlJztcclxuICAgICAgICAgICAgICAgICQoZGF0YVRhYmxlQ1NTU2VsZWN0b3IpLkRhdGFUYWJsZSgpLmFqYXgucmVsb2FkKCk7XHJcbiAgICAgICAgICAgICAgICAkKCcuZHQtYnV0dG9uLmJ0bi1hZHZhbmNlU2VhcmNoUGFyYW1ldGVyJykuYWRkQ2xhc3MoJ2J0bi1zdWNjZXNzJyk7XHJcbiAgICAgICAgICAgICAgICAkKCcuYWR2YW5jZVNlYXJjaE1vZGFsJykubW9kYWwoJ2hpZGUnKTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaW5pdFZpZXdMaXN0KG9wdGlvbnM9e30pIHtcclxuICAgICAgICAgICAgZGVidWcoJ2xpc3R2aWV3IGluaWNpYWxpemF0aW9uJyk7XHJcblxyXG4gICAgICAgICAgICBpZihBUFAuSXNVc2VyQWRtaW4pe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5EdENvbHVtbnM9W1xyXG4gICAgICAgICAgICAgICAgICAgIHsgXCJkYXRhXCI6IFwic3VwcGxpZXJfbmFtZVwiIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgeyBcImRhdGFcIjogXCJkZWxpdmVyeURhdGVcIiB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgXCJkYXRhXCI6IFwicHJvZml0X2NlbnRlci5uYW1lXCIgfSxcclxuICAgICAgICAgICAgICAgICAgICB7IFwiZGF0YVwiOiBcImRlbGl2ZXJ5QWRkcmVzc05hbWVcIiB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgXCJkYXRhXCI6IFwic2VudFRpbWVcIiB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgXCJkYXRhXCI6IFwiaHVtYW5JZFwiIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgeyBcImRhdGFcIjogXCJjb25maXJtZWRcIiB9LFxyXG4gICAgICAgICAgICAgICAgICAgIG51bGwsXHJcbiAgICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgIHRoaXMuRHRDb2x1bW5zPVtcclxuICAgICAgICAgICAgICAgICAgICB7IFwiZGF0YVwiOiBcInN1cHBsaWVyX25hbWVcIiB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgXCJkYXRhXCI6IFwiZGVsaXZlcnlEYXRlXCIgfSxcclxuICAgICAgICAgICAgICAgICAgICB7IFwiZGF0YVwiOiBcImRlbGl2ZXJ5QWRkcmVzc05hbWVcIiB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgXCJkYXRhXCI6IFwic2VudFRpbWVcIiB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgXCJkYXRhXCI6IFwiaHVtYW5JZFwiIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgeyBcImRhdGFcIjogXCJjb25maXJtZWRcIiB9LFxyXG4gICAgICAgICAgICAgICAgICAgIG51bGwsXHJcbiAgICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBsZXQgZGF0YVRhYmxlQ1NTU2VsZWN0b3I9dGhpcy5PcHRzLkNTU1NlbGVjdG9yQ29udGFpbmVyKycgLmRhdGFUYWJsZSc7IC8vXHJcbiAgICAgICAgICAgIGxldCBjb2xOdW09JChkYXRhVGFibGVDU1NTZWxlY3RvcisnIHRoZWFkIHRoJykubGVuZ3RoOyAvL2J1dHRvbnMgaW5zZXJ0IHBvc2l0aW9uIG5lZWRcclxuICAgICAgICAgICAgQVBQLnNldE9wdHMoe1xyXG4gICAgICAgICAgICAgICAgLy9kYXRhdGFibGVSb3dBY3Rpb25CdXR0b25DbGlja0NhbGxCYWNrOnRoaXMuZGF0YXRhYmxlUm93QWN0aW9uQnV0dG9uQ2xpY2ssXHJcbiAgICAgICAgICAgICAgICBkYXRhdGFibGVSb3dBY3Rpb25CdXR0b25DbGlja0NhbGxCYWNrOnRoaXMuZGF0YXRhYmxlUm93QWN0aW9uQnV0dG9uQ2xpY2ssXHJcbiAgICAgICAgICAgICAgICBkYXRhdGFibGVDdXN0b21IZWFkQnV0dG9uQ2xpY2tDYWxsQmFjazp0aGlzLmRhdGF0YWJsZUN1c3RvbUhlYWRCdXR0b25DbGlja0NhbGxCYWNrLFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICBsZXQgb3JkZXJEaXJlY3RpdmU9dGhpcy5PcHRzLmRhdGFUYWJsZS5vcmRlckRpcmVjdGl2ZTtcclxuICAgICAgICAgICAgbGV0IGFkdmFuY2VTZWFyY2hQYXJhbWV0ZXI9dGhpcy5PcHRzLmRhdGFUYWJsZS5hZHZhbmNlU2VhcmNoUGFyYW1ldGVyO1xyXG5cclxuICAgICAgICAgICAgaWYodHlwZW9mIG9wdGlvbnNbJ29yZGVyRGlyZWN0aXZlJ10hPSd1bmRlZmluZWQnKXtcclxuICAgICAgICAgICAgICAgIG9yZGVyRGlyZWN0aXZlPW9wdGlvbnNbJ29yZGVyRGlyZWN0aXZlJ107XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy9sZXQgYWpheFVybD10aGlzLk9wdHMuVVJMLmdldERhdGFUYWJsZUNvbnRlbnQ7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0YVRhYmxlPSQoZGF0YVRhYmxlQ1NTU2VsZWN0b3IpLkRhdGFUYWJsZSgge1xyXG4gICAgICAgICAgICAgICAgbGFuZ3VhZ2U6IHtcclxuICAgICAgICAgICAgICAgICAgICB1cmw6ICcvL2Nkbi5kYXRhdGFibGVzLm5ldC9wbHVnLWlucy8xLjEwLjI0L2kxOG4vSHVuZ2FyaWFuLmpzb24nXHJcbiAgICAgICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgICAgIC8vXCJhamF4XCI6IFwie3thc3NldCgnZXhhcG1sZTIuanNvbicpfX1cIixcclxuICAgICAgICAgICAgICAgIFwiYWpheFwiOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdXJsOnRoaXMuT3B0cy5VUkwuZ2V0RGF0YVRhYmxlQ29udGVudCxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhOmZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuYWR2YW5jZVNlYXJjaFBhcmFtZXRlcj1hZHZhbmNlU2VhcmNoUGFyYW1ldGVyO1xyXG4vKlxyXG5kYXRhLnNlYXJjaFBhcmFtPXRoaXMuT3B0cy5kYXRhVGFibGUuYWR2YW5jZVNlYXJjaFBhcmFtZXRlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLnNlYXJjaFN0cj1kYXRhVGFibGVTZWFyY2hTdHI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuZ3JvdXBJZD1zZWxlY3RlZFByb2R1Y3RHcm91cDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5zdXBwbGllcklkPU9yZGVyLnN1cHBsaWVySWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuZGVsaXZlcnlEYXRlPU9yZGVyLmRlbGl2ZXJ5RGF0ZTtcclxuKi9cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgXCJjb2x1bW5EZWZzXCI6IFtcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidGFyZ2V0c1wiOiBjb2xOdW0tMSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJyZW5kZXJcIjogZnVuY3Rpb24gKCBkYXRhLCB0eXBlLCByb3cgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYnV0dG9ucz1BUFAuZGF0YXRhYmxlQWRkUm93Vmlld0J1dHRvbigwLGFyZ3VtZW50cyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zKz1BUFAuZGF0YXRhYmxlQWRkUm93QXR0YWNobWVudEJ1dHRvbigwLGFyZ3VtZW50cyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2J1dHRvbnMrPUFQUC5kYXRhdGFibGVBZGRSb3dFZGl0QnV0dG9uKDAsIGFyZ3VtZW50cyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihyb3cuY2FuRWRpdGFibGUpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnMrPUFQUC5kYXRhdGFibGVBZGRSb3dFZGl0QnV0dG9uKDAsIHt0aXRsZTpcIm3Ds2Rvc8OtdMOhc1wifSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYnV0dG9ucztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0YXJnZXRzXCI6IGNvbE51bS0yLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcInJlbmRlclwiOiBmdW5jdGlvbiAoIGRhdGEsIHR5cGUsIHJvdyApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJvdy5jb25maXJtZWQ9PW51bGwpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1waWxsIGJhZGdlLWRhbmdlclwiPjxpIGNsYXNzPVwiZmFzIGZhLWhhbmRzaGFrZS1zbGFzaFwiPjwvaT48L3NwYW4+JztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByb3cuY29uZmlybWVkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0YXJnZXRzXCI6IDEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwicmVuZGVyXCI6IGZ1bmN0aW9uICggZGF0YSwgdHlwZSwgcm93ICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93PW51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHlwZSA9PT0gXCJzb3J0XCIgPyBkYXRhLmxhdGluaXNlKCkgOiBkYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgLy97IFwidmlzaWJsZVwiOiBmYWxzZSwgIFwidGFyZ2V0c1wiOiBbIDAgXSB9XHJcbiAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgYnV0dG9uczp7XHJcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAnZXhjZWwnLCdwZGYnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlbmQ6ICdwcmludCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3RleHQ6ICdQcmludCBjdXJyZW50IHBhZ2UnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RpdGxlJzogJ3RpdGxlIGN1c3RvbSB0ZXh0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtZXNzYWdlVG9wJzogJ01lc3NhZ2UgT24gVG9wJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9QcmludDogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiAnU3rDvHLFkWsnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiBmdW5jdGlvbiAoIGUsIGR0LCBub2RlLCBjb25maWcgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBQLmRhdGF0YWJsZUN1c3RvbUhlYWRCdXR0b25DbGlja0NhbGxCYWNrKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnYnRuLWFkdmFuY2VTZWFyY2hQYXJhbWV0ZXInXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgLyoqL1xyXG4gICAgICAgICAgICAgICAgICAgIF1cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBcImNvbHVtbnNcIjogdGhpcy5EdENvbHVtbnMsXHJcbiAgICAgICAgICAgICAgICBcIm9yZGVyXCI6IG9yZGVyRGlyZWN0aXZlLFxyXG4gICAgICAgICAgICAgICAgXCJzdGF0ZVNhdmVcIjogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBcImRyYXdDYWxsYmFja1wiOiBmdW5jdGlvbiggc2V0dGluZ3MgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3M9bnVsbDtcclxuICAgICAgICAgICAgICAgICAgICBBUFAuZGF0YXRhYmxlQWRkUm93QWN0aW9uKGRhdGFUYWJsZUNTU1NlbGVjdG9yKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSApO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5pbml0QWR2YW5jZWRTZWFyY2goKTtcclxuICAgICAgICAgICAgZGVidWcoJ2xpc3R2aWV3IGVuZCcpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHdpbmRvdy5PcmRlckFyY2hpdmVNb2R1bGU9T3JkZXJBcmNoaXZlTW9kdWxlO1xyXG59XHJcbiJdLCJuYW1lcyI6WyJ3aW5kb3ciLCJEYXRhTW9kZWxPcmRlckFyY2hpdmUiLCJPcmRlckFyY2hpdmVNb2R1bERlZmF1bHQiLCJhY3Rpb25GdW5jdGlvbiIsIl9EYXRhTW9kZWwiLCJfRGF0YU1vZGVsT3JkZXJBcmNoaXZlIiwiZGF0YSIsIm9wdGlvbnMiLCJfdGhpcyIsIl9jbGFzc0NhbGxDaGVjayIsIl9jYWxsU3VwZXIiLCJpdGVtcyIsImNvbnNvbGUiLCJsb2ciLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJfaW5oZXJpdHMiLCJfY3JlYXRlQ2xhc3MiLCJEYXRhTW9kZWwiLCJPcmRlckFyY2hpdmVNb2R1bGUiLCJfTW9kdWxlQmFzZSIsIl90aGlzMiIsImRhdGFUYWJsZSIsIk9wdHMiLCJhZHZhbmNlU2VhcmNoUGFyYW1ldGVyIiwiZGVsaXZlcnlEYXRlRnJvbSIsImRlbGl2ZXJ5RGF0ZVRvIiwicHJvZml0Q2VudGVySWQiLCJzdXBwbGllcklkIiwia2V5IiwidmFsdWUiLCJkYXRhdGFibGVSb3dBY3Rpb25BdHRhY2htZW50Iiwicm93RGF0YSIsIm5vZGUiLCJkZWJ1ZyIsIl9zdXBlclByb3BHZXQiLCJkZWZhdWx0RmlsZU5hbWUiLCJkYXRhdGFibGVSb3dBY3Rpb25WaWV3IiwiQVBQIiwiZGF0YXRhYmxlUm93QWN0aW9uQnV0dG9uQ2xpY2siLCJldmVudCIsImRhdGF0YWJsZVJvd0FjdGlvbkVkaXQiLCJhamF4VXJsIiwiVVJMIiwiZWRpdCIsInJlcGxhY2UiLCJpZCIsImxvYWRNYWluQ29udGVudCIsImluaXRWaWV3U2hvdyIsInJvb3QiLCJzdHlsZVN0ciIsIiQiLCJvZmYiLCJvbiIsInByaW50IiwibmV3V2luIiwib3BlbiIsImRvY3VtZW50Iiwid3JpdGUiLCJjbG9uZSIsImZpbmQiLCJyZW1vdmUiLCJwcm9wIiwiZGF0YXRhYmxlQ3VzdG9tSGVhZEJ1dHRvbkNsaWNrQ2FsbEJhY2siLCJpbmZvIiwibW9kYWwiLCJpbml0QWR2YW5jZWRTZWFyY2giLCJkYXRlUGlja2VyVGFyZ2V0IiwiZGF0ZXBpY2tlciIsImRhdGVGb3JtYXQiLCJvblNlbGVjdCIsImRhdGVUZXh0IiwidGV4dCIsInZhbCIsImNsaWNrIiwic2VsZWN0MiIsIm1heGltdW1TZWxlY3Rpb25MZW5ndGgiLCJhZHZhbmNlRmlsdGVyZWQiLCJlYWNoIiwiayIsInYiLCJ0cmlnZ2VyIiwiYWRkQ2xhc3MiLCJyZW1vdmVDbGFzcyIsImRhdGFUYWJsZUNTU1NlbGVjdG9yIiwiQ1NTU2VsZWN0b3JDb250YWluZXIiLCJEYXRhVGFibGUiLCJhamF4IiwicmVsb2FkIiwiZGF0YVNlYXJjaCIsInNlcmlhbGl6ZUFycmF5IiwiaXRlbSIsImxlbmd0aCIsImluaXRWaWV3TGlzdCIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsIklzVXNlckFkbWluIiwiRHRDb2x1bW5zIiwiY29sTnVtIiwic2V0T3B0cyIsImRhdGF0YWJsZVJvd0FjdGlvbkJ1dHRvbkNsaWNrQ2FsbEJhY2siLCJvcmRlckRpcmVjdGl2ZSIsImxhbmd1YWdlIiwidXJsIiwiZ2V0RGF0YVRhYmxlQ29udGVudCIsInJlbmRlciIsInR5cGUiLCJyb3ciLCJidXR0b25zIiwiZGF0YXRhYmxlQWRkUm93Vmlld0J1dHRvbiIsImRhdGF0YWJsZUFkZFJvd0F0dGFjaG1lbnRCdXR0b24iLCJjYW5FZGl0YWJsZSIsImRhdGF0YWJsZUFkZFJvd0VkaXRCdXR0b24iLCJ0aXRsZSIsImNvbmZpcm1lZCIsImxhdGluaXNlIiwiZXh0ZW5kIiwiYXV0b1ByaW50IiwiYWN0aW9uIiwiZSIsImR0IiwiY29uZmlnIiwiY2xhc3NOYW1lIiwiZHJhd0NhbGxiYWNrIiwic2V0dGluZ3MiLCJkYXRhdGFibGVBZGRSb3dBY3Rpb24iLCJNb2R1bGVCYXNlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./resources/js/moduleJs/orderArchive.js\n\n}");
/***/ },
/***/ "./resources/js/moduleJs/priceList.js"
/*!********************************************!*\
!*** ./resources/js/moduleJs/priceList.js ***!
\********************************************/
() {
eval("{function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\nfunction _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _get(_getPrototypeOf(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\nfunction _get() { return _get = \"undefined\" != typeof Reflect && Reflect.get ? Reflect.get.bind() : function (e, t, r) { var p = _superPropBase(e, t); if (p) { var n = Object.getOwnPropertyDescriptor(p, t); return n.get ? n.get.call(arguments.length < 3 ? e : r) : n.value; } }, _get.apply(null, arguments); }\nfunction _superPropBase(t, o) { for (; !{}.hasOwnProperty.call(t, o) && null !== (t = _getPrototypeOf(t));); return t; }\nfunction _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\nfunction _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\nfunction _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\nif (typeof window.PriceListModule === \"undefined\") {\n var PriceListModule = /*#__PURE__*/function (_ModuleBase) {\n function PriceListModule() {\n _classCallCheck(this, PriceListModule);\n return _callSuper(this, PriceListModule, arguments);\n }\n _inherits(PriceListModule, _ModuleBase);\n return _createClass(PriceListModule, [{\n key: \"datatableRowActionAttachment\",\n value: function datatableRowActionAttachment(rowData, node) {\n debug('call datatableRowActionAttachment');\n _superPropGet(PriceListModule, \"datatableRowActionAttachment\", this, 3)([rowData, node, {\n defaultFileName: \"arlista.xls\"\n }]);\n }\n }, {\n key: \"datatableRowActionView\",\n value: function datatableRowActionView(rowData, node) {\n debug('call datatableRowActionView');\n }\n }, {\n key: \"datatableRowActionButtonClick\",\n value: function datatableRowActionButtonClick(event) {\n debug('datatableRowActionButtonClick');\n var rootObj = APP.PriceListModule;\n var node = $(event[0].currentTarget);\n var row = $(rootObj.Opts.dataTable.CSSSelector).DataTable().row(node.parents('tr'));\n var rowData = row.data();\n var actionName = 'datatableRowAction' + node.data('buttontype').capitalize();\n if (typeof rootObj[actionName] === \"function\") {\n return rootObj[actionName](rowData, node);\n }\n }\n }, {\n key: \"initViewList\",\n value: function initViewList() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n debug('listview inicialization');\n var dataTableCSSSelector = this.Opts.CSSSelectorContainer + ' .dataTable'; //\n var colNum = $(dataTableCSSSelector + ' thead th').length; //buttons insert position need\n APP.setOpts({\n //datatableRowActionButtonClickCallBack:this.datatableRowActionButtonClick,\n datatableRowActionButtonClickCallBack: this.datatableRowActionButtonClick\n });\n var orderDirective = this.Opts.dataTable.orderDirective;\n if (typeof options['orderDirective'] != 'undefined') {\n orderDirective = options['orderDirective'];\n }\n //let ajaxUrl=this.Opts.URL.getDataTableContent;\n $(dataTableCSSSelector).DataTable({\n language: {\n url: '//cdn.datatables.net/plug-ins/1.10.24/i18n/Hungarian.json'\n },\n //\"ajax\": \"{{asset('exapmle2.json')}}\",\n \"ajax\": {\n url: this.Opts.URL.getDataTableContent,\n data: function data(_data) {\n /*\r\n data.searchStr=dataTableSearchStr;\r\n data.groupId=selectedProductGroup;\r\n data.supplierId=Order.supplierId;\r\n data.deliveryDate=Order.deliveryDate;\r\n */\n }\n },\n \"columnDefs\": [{\n \"targets\": colNum - 1,\n \"render\": function render(data, type, row) {\n if (row.fileUrl) {\n var buttons = APP.datatableAddRowAttachmentButton(0, arguments);\n return buttons;\n } else {\n return '';\n }\n }\n }\n /* {\r\n \"targets\": 1,\r\n \"render\": function ( data, type, row ) {\r\n row=null;\r\n return type === \"sort\" ? data.latinise() : data;\r\n },\r\n },*/\n //{ \"visible\": false, \"targets\": [ 0 ] }\n ],\n buttons: {\n buttons: [\n /* 'excel','pdf',\r\n {\r\n extend: 'print',\r\n //text: 'Print current page',\r\n 'title': 'title custom text',\r\n 'messageTop': 'Message On Top',\r\n autoPrint: true\r\n },\r\n */ /**/\n ]\n },\n \"columns\": [{\n \"data\": \"id\"\n }, {\n \"data\": \"supplierName\"\n }, {\n \"data\": \"available\"\n }, {\n \"data\": \"created_at\"\n }, {\n \"data\": \"note\"\n }, null],\n \"order\": orderDirective,\n //\"stateSave\": true,\n \"drawCallback\": function drawCallback(settings) {\n settings = null;\n APP.datatableAddRowAction(dataTableCSSSelector);\n }\n });\n debug('listview end');\n }\n }]);\n }(ModuleBase);\n ;\n window.PriceListModule = PriceListModule;\n}\n;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ3aW5kb3ciLCJQcmljZUxpc3RNb2R1bGUiLCJfTW9kdWxlQmFzZSIsIl9jbGFzc0NhbGxDaGVjayIsIl9jYWxsU3VwZXIiLCJhcmd1bWVudHMiLCJfaW5oZXJpdHMiLCJfY3JlYXRlQ2xhc3MiLCJrZXkiLCJ2YWx1ZSIsImRhdGF0YWJsZVJvd0FjdGlvbkF0dGFjaG1lbnQiLCJyb3dEYXRhIiwibm9kZSIsImRlYnVnIiwiX3N1cGVyUHJvcEdldCIsImRlZmF1bHRGaWxlTmFtZSIsImRhdGF0YWJsZVJvd0FjdGlvblZpZXciLCJkYXRhdGFibGVSb3dBY3Rpb25CdXR0b25DbGljayIsImV2ZW50Iiwicm9vdE9iaiIsIkFQUCIsIiQiLCJjdXJyZW50VGFyZ2V0Iiwicm93IiwiT3B0cyIsImRhdGFUYWJsZSIsIkNTU1NlbGVjdG9yIiwiRGF0YVRhYmxlIiwicGFyZW50cyIsImRhdGEiLCJhY3Rpb25OYW1lIiwiY2FwaXRhbGl6ZSIsImluaXRWaWV3TGlzdCIsIm9wdGlvbnMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJkYXRhVGFibGVDU1NTZWxlY3RvciIsIkNTU1NlbGVjdG9yQ29udGFpbmVyIiwiY29sTnVtIiwic2V0T3B0cyIsImRhdGF0YWJsZVJvd0FjdGlvbkJ1dHRvbkNsaWNrQ2FsbEJhY2siLCJvcmRlckRpcmVjdGl2ZSIsImxhbmd1YWdlIiwidXJsIiwiVVJMIiwiZ2V0RGF0YVRhYmxlQ29udGVudCIsInJlbmRlciIsInR5cGUiLCJmaWxlVXJsIiwiYnV0dG9ucyIsImRhdGF0YWJsZUFkZFJvd0F0dGFjaG1lbnRCdXR0b24iLCJkcmF3Q2FsbGJhY2siLCJzZXR0aW5ncyIsImRhdGF0YWJsZUFkZFJvd0FjdGlvbiIsIk1vZHVsZUJhc2UiXSwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL21vZHVsZUpzL3ByaWNlTGlzdC5qcz8yYzNmIl0sInNvdXJjZXNDb250ZW50IjpbImlmKHR5cGVvZiB3aW5kb3cuUHJpY2VMaXN0TW9kdWxlID09PVwidW5kZWZpbmVkXCIpIHtcclxuICAgIGNsYXNzIFByaWNlTGlzdE1vZHVsZSBleHRlbmRzIE1vZHVsZUJhc2V7XHJcblxyXG4gICAgICAgIGRhdGF0YWJsZVJvd0FjdGlvbkF0dGFjaG1lbnQocm93RGF0YSxub2RlKSB7XHJcbiAgICAgICAgICAgIGRlYnVnKCdjYWxsIGRhdGF0YWJsZVJvd0FjdGlvbkF0dGFjaG1lbnQnKTtcclxuICAgICAgICAgICAgc3VwZXIuZGF0YXRhYmxlUm93QWN0aW9uQXR0YWNobWVudChyb3dEYXRhLG5vZGUse2RlZmF1bHRGaWxlTmFtZTpcImFybGlzdGEueGxzXCJ9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZGF0YXRhYmxlUm93QWN0aW9uVmlldyhyb3dEYXRhLG5vZGUpIHtcclxuICAgICAgICAgICAgZGVidWcoJ2NhbGwgZGF0YXRhYmxlUm93QWN0aW9uVmlldycpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZGF0YXRhYmxlUm93QWN0aW9uQnV0dG9uQ2xpY2soZXZlbnQpIHtcclxuICAgICAgICAgICAgZGVidWcoJ2RhdGF0YWJsZVJvd0FjdGlvbkJ1dHRvbkNsaWNrJyk7XHJcbiAgICAgICAgICAgIGxldCByb290T2JqPUFQUC5QcmljZUxpc3RNb2R1bGU7XHJcbiAgICAgICAgICAgIGxldCBub2RlID0gJChldmVudFswXS5jdXJyZW50VGFyZ2V0KTtcclxuICAgICAgICAgICAgbGV0IHJvdyA9ICQocm9vdE9iai5PcHRzLmRhdGFUYWJsZS5DU1NTZWxlY3RvcikuRGF0YVRhYmxlKCkucm93KG5vZGUucGFyZW50cygndHInKSk7XHJcbiAgICAgICAgICAgIGxldCByb3dEYXRhID0gcm93LmRhdGEoKTtcclxuICAgICAgICAgICAgbGV0IGFjdGlvbk5hbWUgPSAnZGF0YXRhYmxlUm93QWN0aW9uJyArIG5vZGUuZGF0YSgnYnV0dG9udHlwZScpLmNhcGl0YWxpemUoKTtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiByb290T2JqW2FjdGlvbk5hbWVdID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiByb290T2JqW2FjdGlvbk5hbWVdKHJvd0RhdGEsIG5vZGUpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaW5pdFZpZXdMaXN0KG9wdGlvbnM9e30pIHtcclxuICAgICAgICAgICAgZGVidWcoJ2xpc3R2aWV3IGluaWNpYWxpemF0aW9uJyk7XHJcbiAgICAgICAgICAgIGxldCBkYXRhVGFibGVDU1NTZWxlY3Rvcj10aGlzLk9wdHMuQ1NTU2VsZWN0b3JDb250YWluZXIrJyAuZGF0YVRhYmxlJzsgLy9cclxuICAgICAgICAgICAgbGV0IGNvbE51bT0kKGRhdGFUYWJsZUNTU1NlbGVjdG9yKycgdGhlYWQgdGgnKS5sZW5ndGg7IC8vYnV0dG9ucyBpbnNlcnQgcG9zaXRpb24gbmVlZFxyXG4gICAgICAgICAgICBBUFAuc2V0T3B0cyh7XHJcbiAgICAgICAgICAgICAgICAvL2RhdGF0YWJsZVJvd0FjdGlvbkJ1dHRvbkNsaWNrQ2FsbEJhY2s6dGhpcy5kYXRhdGFibGVSb3dBY3Rpb25CdXR0b25DbGljayxcclxuICAgICAgICAgICAgICAgIGRhdGF0YWJsZVJvd0FjdGlvbkJ1dHRvbkNsaWNrQ2FsbEJhY2s6dGhpcy5kYXRhdGFibGVSb3dBY3Rpb25CdXR0b25DbGljayxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgbGV0IG9yZGVyRGlyZWN0aXZlPXRoaXMuT3B0cy5kYXRhVGFibGUub3JkZXJEaXJlY3RpdmU7XHJcblxyXG4gICAgICAgICAgICBpZih0eXBlb2Ygb3B0aW9uc1snb3JkZXJEaXJlY3RpdmUnXSE9J3VuZGVmaW5lZCcpe1xyXG4gICAgICAgICAgICAgICAgb3JkZXJEaXJlY3RpdmU9b3B0aW9uc1snb3JkZXJEaXJlY3RpdmUnXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvL2xldCBhamF4VXJsPXRoaXMuT3B0cy5VUkwuZ2V0RGF0YVRhYmxlQ29udGVudDtcclxuICAgICAgICAgICAgJChkYXRhVGFibGVDU1NTZWxlY3RvcikuRGF0YVRhYmxlKCB7XHJcbiAgICAgICAgICAgICAgICBsYW5ndWFnZToge1xyXG4gICAgICAgICAgICAgICAgICAgIHVybDogJy8vY2RuLmRhdGF0YWJsZXMubmV0L3BsdWctaW5zLzEuMTAuMjQvaTE4bi9IdW5nYXJpYW4uanNvbidcclxuICAgICAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAgICAgLy9cImFqYXhcIjogXCJ7e2Fzc2V0KCdleGFwbWxlMi5qc29uJyl9fVwiLFxyXG4gICAgICAgICAgICAgICAgXCJhamF4XCI6IHtcclxuICAgICAgICAgICAgICAgICAgICB1cmw6dGhpcy5PcHRzLlVSTC5nZXREYXRhVGFibGVDb250ZW50LFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6ZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLypcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5zZWFyY2hTdHI9ZGF0YVRhYmxlU2VhcmNoU3RyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmdyb3VwSWQ9c2VsZWN0ZWRQcm9kdWN0R3JvdXA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuc3VwcGxpZXJJZD1PcmRlci5zdXBwbGllcklkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmRlbGl2ZXJ5RGF0ZT1PcmRlci5kZWxpdmVyeURhdGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIFwiY29sdW1uRGVmc1wiOiBbXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcInRhcmdldHNcIjogY29sTnVtLTEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwicmVuZGVyXCI6IGZ1bmN0aW9uICggZGF0YSwgdHlwZSwgcm93ICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYocm93LmZpbGVVcmwpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBidXR0b25zPUFQUC5kYXRhdGFibGVBZGRSb3dBdHRhY2htZW50QnV0dG9uKDAsYXJndW1lbnRzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYnV0dG9ucztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgLyoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcInRhcmdldHNcIjogMSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJyZW5kZXJcIjogZnVuY3Rpb24gKCBkYXRhLCB0eXBlLCByb3cgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3c9bnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0eXBlID09PSBcInNvcnRcIiA/IGRhdGEubGF0aW5pc2UoKSA6IGRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgfSwqL1xyXG4gICAgICAgICAgICAgICAgICAgIC8veyBcInZpc2libGVcIjogZmFsc2UsICBcInRhcmdldHNcIjogWyAwIF0gfVxyXG4gICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICAgIGJ1dHRvbnM6e1xyXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFtcclxuICAgICAgICAgICAgICAgICAgLyogICAgICAnZXhjZWwnLCdwZGYnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlbmQ6ICdwcmludCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3RleHQ6ICdQcmludCBjdXJyZW50IHBhZ2UnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RpdGxlJzogJ3RpdGxlIGN1c3RvbSB0ZXh0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtZXNzYWdlVG9wJzogJ01lc3NhZ2UgT24gVG9wJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9QcmludDogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAqLyAgICAgIC8qKi9cclxuICAgICAgICAgICAgICAgICAgICBdXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgXCJjb2x1bW5zXCI6IFtcclxuICAgICAgICAgICAgICAgICAgICB7IFwiZGF0YVwiOiBcImlkXCIgfSxcclxuICAgICAgICAgICAgICAgICAgICB7IFwiZGF0YVwiOiBcInN1cHBsaWVyTmFtZVwiIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgeyBcImRhdGFcIjogXCJhdmFpbGFibGVcIiB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgXCJkYXRhXCI6IFwiY3JlYXRlZF9hdFwiIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgeyBcImRhdGFcIjogXCJub3RlXCIgfSxcclxuICAgICAgICAgICAgICAgICAgICBudWxsLFxyXG4gICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICAgIFwib3JkZXJcIjogb3JkZXJEaXJlY3RpdmUsXHJcbiAgICAgICAgICAgICAgICAvL1wic3RhdGVTYXZlXCI6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBcImRyYXdDYWxsYmFja1wiOiBmdW5jdGlvbiggc2V0dGluZ3MgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3M9bnVsbDtcclxuICAgICAgICAgICAgICAgICAgICBBUFAuZGF0YXRhYmxlQWRkUm93QWN0aW9uKGRhdGFUYWJsZUNTU1NlbGVjdG9yKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSApO1xyXG4gICAgICAgICAgICBkZWJ1ZygnbGlzdHZpZXcgZW5kJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH07XHJcbiAgICB3aW5kb3cuUHJpY2VMaXN0TW9kdWxlPVByaWNlTGlzdE1vZHVsZTtcclxufTtcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBRyxPQUFPQSxNQUFNLENBQUNDLGVBQWUsS0FBSSxXQUFXLEVBQUU7RUFBQSxJQUN2Q0EsZUFBZSwwQkFBQUMsV0FBQTtJQUFBLFNBQUFELGdCQUFBO01BQUFFLGVBQUEsT0FBQUYsZUFBQTtNQUFBLE9BQUFHLFVBQUEsT0FBQUgsZUFBQSxFQUFBSSxTQUFBO0lBQUE7SUFBQUMsU0FBQSxDQUFBTCxlQUFBLEVBQUFDLFdBQUE7SUFBQSxPQUFBSyxZQUFBLENBQUFOLGVBQUE7TUFBQU8sR0FBQTtNQUFBQyxLQUFBLEVBRWpCLFNBQUFDLDRCQUE0QkEsQ0FBQ0MsT0FBTyxFQUFDQyxJQUFJLEVBQUU7UUFDdkNDLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQztRQUMxQ0MsYUFBQSxDQUFBYixlQUFBLDRDQUFtQ1UsT0FBTyxFQUFDQyxJQUFJLEVBQUM7VUFBQ0csZUFBZSxFQUFDO1FBQWEsQ0FBQztNQUNuRjtJQUFDO01BQUFQLEdBQUE7TUFBQUMsS0FBQSxFQUNELFNBQUFPLHNCQUFzQkEsQ0FBQ0wsT0FBTyxFQUFDQyxJQUFJLEVBQUU7UUFDakNDLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQztNQUN4QztJQUFDO01BQUFMLEdBQUE7TUFBQUMsS0FBQSxFQUVELFNBQUFRLDZCQUE2QkEsQ0FBQ0MsS0FBSyxFQUFFO1FBQ2pDTCxLQUFLLENBQUMsK0JBQStCLENBQUM7UUFDdEMsSUFBSU0sT0FBTyxHQUFDQyxHQUFHLENBQUNuQixlQUFlO1FBQy9CLElBQUlXLElBQUksR0FBR1MsQ0FBQyxDQUFDSCxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUNJLGFBQWEsQ0FBQztRQUNwQyxJQUFJQyxHQUFHLEdBQUdGLENBQUMsQ0FBQ0YsT0FBTyxDQUFDSyxJQUFJLENBQUNDLFNBQVMsQ0FBQ0MsV0FBVyxDQUFDLENBQUNDLFNBQVMsQ0FBQyxDQUFDLENBQUNKLEdBQUcsQ0FBQ1gsSUFBSSxDQUFDZ0IsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25GLElBQUlqQixPQUFPLEdBQUdZLEdBQUcsQ0FBQ00sSUFBSSxDQUFDLENBQUM7UUFDeEIsSUFBSUMsVUFBVSxHQUFHLG9CQUFvQixHQUFHbEIsSUFBSSxDQUFDaUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDRSxVQUFVLENBQUMsQ0FBQztRQUM1RSxJQUFJLE9BQU9aLE9BQU8sQ0FBQ1csVUFBVSxDQUFDLEtBQUssVUFBVSxFQUFFO1VBQzNDLE9BQU9YLE9BQU8sQ0FBQ1csVUFBVSxDQUFDLENBQUNuQixPQUFPLEVBQUVDLElBQUksQ0FBQztRQUM3QztNQUNKO0lBQUM7TUFBQUosR0FBQTtNQUFBQyxLQUFBLEVBQ0QsU0FBQXVCLFlBQVlBLENBQUEsRUFBYTtRQUFBLElBQVpDLE9BQU8sR0FBQTVCLFNBQUEsQ0FBQTZCLE1BQUEsUUFBQTdCLFNBQUEsUUFBQThCLFNBQUEsR0FBQTlCLFNBQUEsTUFBQyxDQUFDLENBQUM7UUFDbkJRLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQztRQUNoQyxJQUFJdUIsb0JBQW9CLEdBQUMsSUFBSSxDQUFDWixJQUFJLENBQUNhLG9CQUFvQixHQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3ZFLElBQUlDLE1BQU0sR0FBQ2pCLENBQUMsQ0FBQ2Usb0JBQW9CLEdBQUMsV0FBVyxDQUFDLENBQUNGLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZEZCxHQUFHLENBQUNtQixPQUFPLENBQUM7VUFDUjtVQUNBQyxxQ0FBcUMsRUFBQyxJQUFJLENBQUN2QjtRQUMvQyxDQUFDLENBQUM7UUFDRixJQUFJd0IsY0FBYyxHQUFDLElBQUksQ0FBQ2pCLElBQUksQ0FBQ0MsU0FBUyxDQUFDZ0IsY0FBYztRQUVyRCxJQUFHLE9BQU9SLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFFLFdBQVcsRUFBQztVQUM3Q1EsY0FBYyxHQUFDUixPQUFPLENBQUMsZ0JBQWdCLENBQUM7UUFDNUM7UUFDQTtRQUNBWixDQUFDLENBQUNlLG9CQUFvQixDQUFDLENBQUNULFNBQVMsQ0FBRTtVQUMvQmUsUUFBUSxFQUFFO1lBQ05DLEdBQUcsRUFBRTtVQUNULENBQUM7VUFFRDtVQUNBLE1BQU0sRUFBRTtZQUNKQSxHQUFHLEVBQUMsSUFBSSxDQUFDbkIsSUFBSSxDQUFDb0IsR0FBRyxDQUFDQyxtQkFBbUI7WUFDckNoQixJQUFJLEVBQUMsU0FBTEEsSUFBSUEsQ0FBV0EsS0FBSSxFQUFFO2NBQ2pCO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7WUFMd0I7VUFPUixDQUFDO1VBQ0QsWUFBWSxFQUFFLENBQ1Y7WUFDSSxTQUFTLEVBQUVTLE1BQU0sR0FBQyxDQUFDO1lBQ25CLFFBQVEsRUFBRSxTQUFWUSxNQUFRQSxDQUFhakIsSUFBSSxFQUFFa0IsSUFBSSxFQUFFeEIsR0FBRyxFQUFHO2NBQ25DLElBQUdBLEdBQUcsQ0FBQ3lCLE9BQU8sRUFBQztnQkFDWCxJQUFJQyxPQUFPLEdBQUM3QixHQUFHLENBQUM4QiwrQkFBK0IsQ0FBQyxDQUFDLEVBQUM3QyxTQUFTLENBQUM7Z0JBQzVELE9BQU80QyxPQUFPO2NBQ2xCLENBQUMsTUFBSTtnQkFDRCxPQUFPLEVBQUU7Y0FDYjtZQUNKO1VBQ0o7VUFDRDtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7VUFDb0I7VUFBQSxDQUNIO1VBQ0RBLE9BQU8sRUFBQztZQUNKQSxPQUFPLEVBQUU7Y0FDWDtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQVJrQixDQVFRO1lBQUE7VUFFVixDQUFDO1VBQ0QsU0FBUyxFQUFFLENBQ1A7WUFBRSxNQUFNLEVBQUU7VUFBSyxDQUFDLEVBQ2hCO1lBQUUsTUFBTSxFQUFFO1VBQWUsQ0FBQyxFQUMxQjtZQUFFLE1BQU0sRUFBRTtVQUFZLENBQUMsRUFDdkI7WUFBRSxNQUFNLEVBQUU7VUFBYSxDQUFDLEVBQ3hCO1lBQUUsTUFBTSxFQUFFO1VBQU8sQ0FBQyxFQUNsQixJQUFJLENBQ1A7VUFDRCxPQUFPLEVBQUVSLGNBQWM7VUFDdkI7VUFDQSxjQUFjLEVBQUUsU0FBaEJVLFlBQWNBLENBQVlDLFFBQVEsRUFBRztZQUNqQ0EsUUFBUSxHQUFDLElBQUk7WUFDYmhDLEdBQUcsQ0FBQ2lDLHFCQUFxQixDQUFDakIsb0JBQW9CLENBQUM7VUFDbkQ7UUFDSixDQUFFLENBQUM7UUFDSHZCLEtBQUssQ0FBQyxjQUFjLENBQUM7TUFDekI7SUFBQztFQUFBLEVBdEd5QnlDLFVBQVU7RUF3R3ZDO0VBQ0R0RCxNQUFNLENBQUNDLGVBQWUsR0FBQ0EsZUFBZTtBQUMxQztBQUFDIiwiaWdub3JlTGlzdCI6W10sImZpbGUiOiIuL3Jlc291cmNlcy9qcy9tb2R1bGVKcy9wcmljZUxpc3QuanMiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./resources/js/moduleJs/priceList.js\n\n}");
/***/ },
/***/ "./resources/js/moduleJs/supplier.js"
/*!*******************************************!*\
!*** ./resources/js/moduleJs/supplier.js ***!
\*******************************************/
() {
eval("{function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\nfunction _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _get(_getPrototypeOf(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\nfunction _get() { return _get = \"undefined\" != typeof Reflect && Reflect.get ? Reflect.get.bind() : function (e, t, r) { var p = _superPropBase(e, t); if (p) { var n = Object.getOwnPropertyDescriptor(p, t); return n.get ? n.get.call(arguments.length < 3 ? e : r) : n.value; } }, _get.apply(null, arguments); }\nfunction _superPropBase(t, o) { for (; !{}.hasOwnProperty.call(t, o) && null !== (t = _getPrototypeOf(t));); return t; }\nfunction _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\nfunction _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\nfunction _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\nif (typeof window.SupplierModule === \"undefined\") {\n var SupplierModule = /*#__PURE__*/function (_ModuleBase) {\n function SupplierModule() {\n _classCallCheck(this, SupplierModule);\n return _callSuper(this, SupplierModule, arguments);\n }\n _inherits(SupplierModule, _ModuleBase);\n return _createClass(SupplierModule, [{\n key: \"datatableRowActionAttachment\",\n value: function datatableRowActionAttachment(rowData, node) {\n debug('call datatableRowActionAttachment');\n _superPropGet(SupplierModule, \"datatableRowActionAttachment\", this, 3)([rowData, node, {\n defaultFileName: \"arlista.xls\"\n }]);\n }\n }, {\n key: \"datatableRowActionView\",\n value: function datatableRowActionView(rowData, node) {\n debug('call datatableRowActionView');\n _superPropGet(SupplierModule, \"datatableRowActionView\", this, 3)([rowData, node, APP.SupplierModule]);\n }\n }, {\n key: \"datatableRowActionButtonClick\",\n value: function datatableRowActionButtonClick(event) {\n debug('datatableRowActionButtonClick');\n var rootObj = APP.SupplierModule;\n var node = $(event[0].currentTarget);\n var row = $(rootObj.Opts.dataTable.CSSSelector).DataTable().row(node.parents('tr'));\n var rowData = row.data();\n var actionName = 'datatableRowAction' + node.data('buttontype').capitalize();\n if (typeof rootObj[actionName] === \"function\") {\n return rootObj[actionName](rowData, node);\n }\n }\n }, {\n key: \"initViewShow\",\n value: function initViewShow() {\n $('.productCategorySelect').select2({\n disabled: true\n });\n $('.serviceSelect').select2({\n disabled: true\n });\n APP.SupplierModule.renderContact();\n }\n }, {\n key: \"initViewList\",\n value: function initViewList() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n debug('listview inicialization');\n var dataTableCSSSelector = this.Opts.CSSSelectorContainer + ' .dataTable'; //\n var colNum = $(dataTableCSSSelector + ' thead th').length; //buttons insert position need\n APP.setOpts({\n //datatableRowActionButtonClickCallBack:this.datatableRowActionButtonClick,\n datatableRowActionButtonClickCallBack: this.datatableRowActionButtonClick\n });\n var orderDirective = this.Opts.dataTable.orderDirective;\n if (typeof options['orderDirective'] != 'undefined') {\n orderDirective = options['orderDirective'];\n }\n //let ajaxUrl=this.Opts.URL.getDataTableContent;\n $(dataTableCSSSelector).DataTable({\n language: {\n url: '//cdn.datatables.net/plug-ins/1.10.24/i18n/Hungarian.json'\n },\n \"ajax\": {\n url: this.Opts.URL.getDataTableContent,\n data: function data(_data) {}\n },\n \"columnDefs\": [{\n \"targets\": colNum - 1,\n \"render\": function render(data, type, row) {\n var buttons = APP.datatableAddRowViewButton(0, arguments);\n return buttons;\n }\n }],\n buttons: {\n buttons: []\n },\n \"columns\": [{\n \"data\": \"name\"\n }, {\n \"data\": \"product_group\"\n }, {\n \"data\": \"service\"\n },\n /*\r\n { \"data\": \"hooreycaId\" },\r\n { \"data\": \"nameId\" },\r\n { \"data\": \"created_at\" },\r\n */\n null],\n \"order\": orderDirective,\n //\"stateSave\": true,\n \"drawCallback\": function drawCallback(settings) {\n settings = null;\n APP.datatableAddRowAction(dataTableCSSSelector);\n }\n });\n debug('listview end');\n }\n }, {\n key: \"renderContact\",\n value: function renderContact() {\n var rowNum = 1;\n console.log('renderingContacts');\n $.each(APP.Supplier.getData('contact'), function () {\n var contactData = this;\n contactData.rowNum = rowNum;\n //console.log(contactData);\n var template = $('template[data-name=\"supplierContactTableRow\"]').html();\n var render = Mustache.render(template, contactData);\n $('.contactTable tbody').append(render);\n rowNum++;\n });\n }\n }]);\n }(ModuleBase);\n ;\n window.SupplierModule = SupplierModule;\n}\n;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ3aW5kb3ciLCJTdXBwbGllck1vZHVsZSIsIl9Nb2R1bGVCYXNlIiwiX2NsYXNzQ2FsbENoZWNrIiwiX2NhbGxTdXBlciIsImFyZ3VtZW50cyIsIl9pbmhlcml0cyIsIl9jcmVhdGVDbGFzcyIsImtleSIsInZhbHVlIiwiZGF0YXRhYmxlUm93QWN0aW9uQXR0YWNobWVudCIsInJvd0RhdGEiLCJub2RlIiwiZGVidWciLCJfc3VwZXJQcm9wR2V0IiwiZGVmYXVsdEZpbGVOYW1lIiwiZGF0YXRhYmxlUm93QWN0aW9uVmlldyIsIkFQUCIsImRhdGF0YWJsZVJvd0FjdGlvbkJ1dHRvbkNsaWNrIiwiZXZlbnQiLCJyb290T2JqIiwiJCIsImN1cnJlbnRUYXJnZXQiLCJyb3ciLCJPcHRzIiwiZGF0YVRhYmxlIiwiQ1NTU2VsZWN0b3IiLCJEYXRhVGFibGUiLCJwYXJlbnRzIiwiZGF0YSIsImFjdGlvbk5hbWUiLCJjYXBpdGFsaXplIiwiaW5pdFZpZXdTaG93Iiwic2VsZWN0MiIsImRpc2FibGVkIiwicmVuZGVyQ29udGFjdCIsImluaXRWaWV3TGlzdCIsIm9wdGlvbnMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJkYXRhVGFibGVDU1NTZWxlY3RvciIsIkNTU1NlbGVjdG9yQ29udGFpbmVyIiwiY29sTnVtIiwic2V0T3B0cyIsImRhdGF0YWJsZVJvd0FjdGlvbkJ1dHRvbkNsaWNrQ2FsbEJhY2siLCJvcmRlckRpcmVjdGl2ZSIsImxhbmd1YWdlIiwidXJsIiwiVVJMIiwiZ2V0RGF0YVRhYmxlQ29udGVudCIsInJlbmRlciIsInR5cGUiLCJidXR0b25zIiwiZGF0YXRhYmxlQWRkUm93Vmlld0J1dHRvbiIsImRyYXdDYWxsYmFjayIsInNldHRpbmdzIiwiZGF0YXRhYmxlQWRkUm93QWN0aW9uIiwicm93TnVtIiwiY29uc29sZSIsImxvZyIsImVhY2giLCJTdXBwbGllciIsImdldERhdGEiLCJjb250YWN0RGF0YSIsInRlbXBsYXRlIiwiaHRtbCIsIk11c3RhY2hlIiwiYXBwZW5kIiwiTW9kdWxlQmFzZSJdLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvbW9kdWxlSnMvc3VwcGxpZXIuanM/ZmY2NCJdLCJzb3VyY2VzQ29udGVudCI6WyJpZih0eXBlb2Ygd2luZG93LlN1cHBsaWVyTW9kdWxlID09PVwidW5kZWZpbmVkXCIpIHtcclxuICAgIGNsYXNzIFN1cHBsaWVyTW9kdWxlIGV4dGVuZHMgTW9kdWxlQmFzZXtcclxuXHJcbiAgICAgICAgZGF0YXRhYmxlUm93QWN0aW9uQXR0YWNobWVudChyb3dEYXRhLG5vZGUpIHtcclxuICAgICAgICAgICAgZGVidWcoJ2NhbGwgZGF0YXRhYmxlUm93QWN0aW9uQXR0YWNobWVudCcpO1xyXG4gICAgICAgICAgICBzdXBlci5kYXRhdGFibGVSb3dBY3Rpb25BdHRhY2htZW50KHJvd0RhdGEsbm9kZSx7ZGVmYXVsdEZpbGVOYW1lOlwiYXJsaXN0YS54bHNcIn0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBkYXRhdGFibGVSb3dBY3Rpb25WaWV3KHJvd0RhdGEsbm9kZSkge1xyXG4gICAgICAgICAgICBkZWJ1ZygnY2FsbCBkYXRhdGFibGVSb3dBY3Rpb25WaWV3Jyk7XHJcbiAgICAgICAgICAgIHN1cGVyLmRhdGF0YWJsZVJvd0FjdGlvblZpZXcocm93RGF0YSxub2RlLEFQUC5TdXBwbGllck1vZHVsZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBkYXRhdGFibGVSb3dBY3Rpb25CdXR0b25DbGljayhldmVudCkge1xyXG4gICAgICAgICAgICBkZWJ1ZygnZGF0YXRhYmxlUm93QWN0aW9uQnV0dG9uQ2xpY2snKTtcclxuICAgICAgICAgICAgbGV0IHJvb3RPYmo9QVBQLlN1cHBsaWVyTW9kdWxlO1xyXG4gICAgICAgICAgICBsZXQgbm9kZSA9ICQoZXZlbnRbMF0uY3VycmVudFRhcmdldCk7XHJcbiAgICAgICAgICAgIGxldCByb3cgPSAkKHJvb3RPYmouT3B0cy5kYXRhVGFibGUuQ1NTU2VsZWN0b3IpLkRhdGFUYWJsZSgpLnJvdyhub2RlLnBhcmVudHMoJ3RyJykpO1xyXG4gICAgICAgICAgICBsZXQgcm93RGF0YSA9IHJvdy5kYXRhKCk7XHJcbiAgICAgICAgICAgIGxldCBhY3Rpb25OYW1lID0gJ2RhdGF0YWJsZVJvd0FjdGlvbicgKyBub2RlLmRhdGEoJ2J1dHRvbnR5cGUnKS5jYXBpdGFsaXplKCk7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygcm9vdE9ialthY3Rpb25OYW1lXSA9PT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcm9vdE9ialthY3Rpb25OYW1lXShyb3dEYXRhLCBub2RlKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGluaXRWaWV3U2hvdygpe1xyXG4gICAgICAgICAgICAkKCcucHJvZHVjdENhdGVnb3J5U2VsZWN0Jykuc2VsZWN0MihcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDp0cnVlLFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAkKCcuc2VydmljZVNlbGVjdCcpLnNlbGVjdDIoXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6dHJ1ZSxcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgIEFQUC5TdXBwbGllck1vZHVsZS5yZW5kZXJDb250YWN0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGluaXRWaWV3TGlzdChvcHRpb25zPXt9KSB7XHJcbiAgICAgICAgICAgIGRlYnVnKCdsaXN0dmlldyBpbmljaWFsaXphdGlvbicpO1xyXG4gICAgICAgICAgICBsZXQgZGF0YVRhYmxlQ1NTU2VsZWN0b3I9dGhpcy5PcHRzLkNTU1NlbGVjdG9yQ29udGFpbmVyKycgLmRhdGFUYWJsZSc7IC8vXHJcbiAgICAgICAgICAgIGxldCBjb2xOdW09JChkYXRhVGFibGVDU1NTZWxlY3RvcisnIHRoZWFkIHRoJykubGVuZ3RoOyAvL2J1dHRvbnMgaW5zZXJ0IHBvc2l0aW9uIG5lZWRcclxuICAgICAgICAgICAgQVBQLnNldE9wdHMoe1xyXG4gICAgICAgICAgICAgICAgLy9kYXRhdGFibGVSb3dBY3Rpb25CdXR0b25DbGlja0NhbGxCYWNrOnRoaXMuZGF0YXRhYmxlUm93QWN0aW9uQnV0dG9uQ2xpY2ssXHJcbiAgICAgICAgICAgICAgICBkYXRhdGFibGVSb3dBY3Rpb25CdXR0b25DbGlja0NhbGxCYWNrOnRoaXMuZGF0YXRhYmxlUm93QWN0aW9uQnV0dG9uQ2xpY2ssXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIGxldCBvcmRlckRpcmVjdGl2ZT10aGlzLk9wdHMuZGF0YVRhYmxlLm9yZGVyRGlyZWN0aXZlO1xyXG5cclxuICAgICAgICAgICAgaWYodHlwZW9mIG9wdGlvbnNbJ29yZGVyRGlyZWN0aXZlJ10hPSd1bmRlZmluZWQnKXtcclxuICAgICAgICAgICAgICAgIG9yZGVyRGlyZWN0aXZlPW9wdGlvbnNbJ29yZGVyRGlyZWN0aXZlJ107XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy9sZXQgYWpheFVybD10aGlzLk9wdHMuVVJMLmdldERhdGFUYWJsZUNvbnRlbnQ7XHJcbiAgICAgICAgICAgICQoZGF0YVRhYmxlQ1NTU2VsZWN0b3IpLkRhdGFUYWJsZSgge1xyXG4gICAgICAgICAgICAgICAgbGFuZ3VhZ2U6IHtcclxuICAgICAgICAgICAgICAgICAgICB1cmw6ICcvL2Nkbi5kYXRhdGFibGVzLm5ldC9wbHVnLWlucy8xLjEwLjI0L2kxOG4vSHVuZ2FyaWFuLmpzb24nXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgXCJhamF4XCI6IHtcclxuICAgICAgICAgICAgICAgICAgICB1cmw6dGhpcy5PcHRzLlVSTC5nZXREYXRhVGFibGVDb250ZW50LFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6ZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgXCJjb2x1bW5EZWZzXCI6IFtcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidGFyZ2V0c1wiOiBjb2xOdW0tMSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJyZW5kZXJcIjogZnVuY3Rpb24gKCBkYXRhLCB0eXBlLCByb3cgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYnV0dG9ucz1BUFAuZGF0YXRhYmxlQWRkUm93Vmlld0J1dHRvbigwLGFyZ3VtZW50cyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYnV0dG9ucztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICAgIGJ1dHRvbnM6e1xyXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFtcclxuICAgICAgICAgICAgICAgICAgICBdXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgXCJjb2x1bW5zXCI6IFtcclxuICAgICAgICAgICAgICAgICAgICB7IFwiZGF0YVwiOiBcIm5hbWVcIiB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgXCJkYXRhXCI6IFwicHJvZHVjdF9ncm91cFwiIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgeyBcImRhdGFcIjogXCJzZXJ2aWNlXCIgfSxcclxuICAgICAgICAgICAgICAgICAgICAvKlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgXCJkYXRhXCI6IFwiaG9vcmV5Y2FJZFwiIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBcImRhdGFcIjogXCJuYW1lSWRcIiB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgXCJkYXRhXCI6IFwiY3JlYXRlZF9hdFwiIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCxcclxuICAgICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgICBcIm9yZGVyXCI6IG9yZGVyRGlyZWN0aXZlLFxyXG4gICAgICAgICAgICAgICAgLy9cInN0YXRlU2F2ZVwiOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgXCJkcmF3Q2FsbGJhY2tcIjogZnVuY3Rpb24oIHNldHRpbmdzICkge1xyXG4gICAgICAgICAgICAgICAgICAgIHNldHRpbmdzPW51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgQVBQLmRhdGF0YWJsZUFkZFJvd0FjdGlvbihkYXRhVGFibGVDU1NTZWxlY3Rvcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gKTtcclxuICAgICAgICAgICAgZGVidWcoJ2xpc3R2aWV3IGVuZCcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZW5kZXJDb250YWN0KCl7XHJcbiAgICAgICAgICAgIGxldCByb3dOdW09MTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ3JlbmRlcmluZ0NvbnRhY3RzJyk7XHJcbiAgICAgICAgICAgICQuZWFjaChBUFAuU3VwcGxpZXIuZ2V0RGF0YSgnY29udGFjdCcpLGZ1bmN0aW9uICgpe1xyXG4gICAgICAgICAgICAgICAgbGV0IGNvbnRhY3REYXRhPXRoaXM7XHJcbiAgICAgICAgICAgICAgICBjb250YWN0RGF0YS5yb3dOdW09cm93TnVtO1xyXG4gICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhjb250YWN0RGF0YSk7XHJcbiAgICAgICAgICAgICAgICBsZXQgdGVtcGxhdGU9JCgndGVtcGxhdGVbZGF0YS1uYW1lPVwic3VwcGxpZXJDb250YWN0VGFibGVSb3dcIl0nKS5odG1sKClcclxuICAgICAgICAgICAgICAgIGxldCByZW5kZXI9TXVzdGFjaGUucmVuZGVyKHRlbXBsYXRlLGNvbnRhY3REYXRhKTtcclxuICAgICAgICAgICAgICAgICQoJy5jb250YWN0VGFibGUgdGJvZHknKS5hcHBlbmQocmVuZGVyKTtcclxuICAgICAgICAgICAgICAgIHJvd051bSsrO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgfTtcclxuICAgIHdpbmRvdy5TdXBwbGllck1vZHVsZT1TdXBwbGllck1vZHVsZTtcclxufTtcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBRyxPQUFPQSxNQUFNLENBQUNDLGNBQWMsS0FBSSxXQUFXLEVBQUU7RUFBQSxJQUN0Q0EsY0FBYywwQkFBQUMsV0FBQTtJQUFBLFNBQUFELGVBQUE7TUFBQUUsZUFBQSxPQUFBRixjQUFBO01BQUEsT0FBQUcsVUFBQSxPQUFBSCxjQUFBLEVBQUFJLFNBQUE7SUFBQTtJQUFBQyxTQUFBLENBQUFMLGNBQUEsRUFBQUMsV0FBQTtJQUFBLE9BQUFLLFlBQUEsQ0FBQU4sY0FBQTtNQUFBTyxHQUFBO01BQUFDLEtBQUEsRUFFaEIsU0FBQUMsNEJBQTRCQSxDQUFDQyxPQUFPLEVBQUNDLElBQUksRUFBRTtRQUN2Q0MsS0FBSyxDQUFDLG1DQUFtQyxDQUFDO1FBQzFDQyxhQUFBLENBQUFiLGNBQUEsNENBQW1DVSxPQUFPLEVBQUNDLElBQUksRUFBQztVQUFDRyxlQUFlLEVBQUM7UUFBYSxDQUFDO01BQ25GO0lBQUM7TUFBQVAsR0FBQTtNQUFBQyxLQUFBLEVBQ0QsU0FBQU8sc0JBQXNCQSxDQUFDTCxPQUFPLEVBQUNDLElBQUksRUFBRTtRQUNqQ0MsS0FBSyxDQUFDLDZCQUE2QixDQUFDO1FBQ3BDQyxhQUFBLENBQUFiLGNBQUEsc0NBQTZCVSxPQUFPLEVBQUNDLElBQUksRUFBQ0ssR0FBRyxDQUFDaEIsY0FBYztNQUNoRTtJQUFDO01BQUFPLEdBQUE7TUFBQUMsS0FBQSxFQUVELFNBQUFTLDZCQUE2QkEsQ0FBQ0MsS0FBSyxFQUFFO1FBQ2pDTixLQUFLLENBQUMsK0JBQStCLENBQUM7UUFDdEMsSUFBSU8sT0FBTyxHQUFDSCxHQUFHLENBQUNoQixjQUFjO1FBQzlCLElBQUlXLElBQUksR0FBR1MsQ0FBQyxDQUFDRixLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUNHLGFBQWEsQ0FBQztRQUNwQyxJQUFJQyxHQUFHLEdBQUdGLENBQUMsQ0FBQ0QsT0FBTyxDQUFDSSxJQUFJLENBQUNDLFNBQVMsQ0FBQ0MsV0FBVyxDQUFDLENBQUNDLFNBQVMsQ0FBQyxDQUFDLENBQUNKLEdBQUcsQ0FBQ1gsSUFBSSxDQUFDZ0IsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25GLElBQUlqQixPQUFPLEdBQUdZLEdBQUcsQ0FBQ00sSUFBSSxDQUFDLENBQUM7UUFDeEIsSUFBSUMsVUFBVSxHQUFHLG9CQUFvQixHQUFHbEIsSUFBSSxDQUFDaUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDRSxVQUFVLENBQUMsQ0FBQztRQUM1RSxJQUFJLE9BQU9YLE9BQU8sQ0FBQ1UsVUFBVSxDQUFDLEtBQUssVUFBVSxFQUFFO1VBQzNDLE9BQU9WLE9BQU8sQ0FBQ1UsVUFBVSxDQUFDLENBQUNuQixPQUFPLEVBQUVDLElBQUksQ0FBQztRQUM3QztNQUNKO0lBQUM7TUFBQUosR0FBQTtNQUFBQyxLQUFBLEVBQ0QsU0FBQXVCLFlBQVlBLENBQUEsRUFBRTtRQUNWWCxDQUFDLENBQUMsd0JBQXdCLENBQUMsQ0FBQ1ksT0FBTyxDQUMvQjtVQUNJQyxRQUFRLEVBQUM7UUFDYixDQUNKLENBQUM7UUFDRGIsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUNZLE9BQU8sQ0FDdkI7VUFDSUMsUUFBUSxFQUFDO1FBQ2IsQ0FDSixDQUFDO1FBRURqQixHQUFHLENBQUNoQixjQUFjLENBQUNrQyxhQUFhLENBQUMsQ0FBQztNQUN0QztJQUFDO01BQUEzQixHQUFBO01BQUFDLEtBQUEsRUFDRCxTQUFBMkIsWUFBWUEsQ0FBQSxFQUFhO1FBQUEsSUFBWkMsT0FBTyxHQUFBaEMsU0FBQSxDQUFBaUMsTUFBQSxRQUFBakMsU0FBQSxRQUFBa0MsU0FBQSxHQUFBbEMsU0FBQSxNQUFDLENBQUMsQ0FBQztRQUNuQlEsS0FBSyxDQUFDLHlCQUF5QixDQUFDO1FBQ2hDLElBQUkyQixvQkFBb0IsR0FBQyxJQUFJLENBQUNoQixJQUFJLENBQUNpQixvQkFBb0IsR0FBQyxhQUFhLENBQUMsQ0FBQztRQUN2RSxJQUFJQyxNQUFNLEdBQUNyQixDQUFDLENBQUNtQixvQkFBb0IsR0FBQyxXQUFXLENBQUMsQ0FBQ0YsTUFBTSxDQUFDLENBQUM7UUFDdkRyQixHQUFHLENBQUMwQixPQUFPLENBQUM7VUFDUjtVQUNBQyxxQ0FBcUMsRUFBQyxJQUFJLENBQUMxQjtRQUMvQyxDQUFDLENBQUM7UUFDRixJQUFJMkIsY0FBYyxHQUFDLElBQUksQ0FBQ3JCLElBQUksQ0FBQ0MsU0FBUyxDQUFDb0IsY0FBYztRQUVyRCxJQUFHLE9BQU9SLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFFLFdBQVcsRUFBQztVQUM3Q1EsY0FBYyxHQUFDUixPQUFPLENBQUMsZ0JBQWdCLENBQUM7UUFDNUM7UUFDQTtRQUNBaEIsQ0FBQyxDQUFDbUIsb0JBQW9CLENBQUMsQ0FBQ2IsU0FBUyxDQUFFO1VBQy9CbUIsUUFBUSxFQUFFO1lBQ05DLEdBQUcsRUFBRTtVQUNULENBQUM7VUFDRCxNQUFNLEVBQUU7WUFDSkEsR0FBRyxFQUFDLElBQUksQ0FBQ3ZCLElBQUksQ0FBQ3dCLEdBQUcsQ0FBQ0MsbUJBQW1CO1lBQ3JDcEIsSUFBSSxFQUFDLFNBQUxBLElBQUlBLENBQVdBLEtBQUksRUFBRSxDQUNyQjtVQUNKLENBQUM7VUFDRCxZQUFZLEVBQUUsQ0FDVjtZQUNJLFNBQVMsRUFBRWEsTUFBTSxHQUFDLENBQUM7WUFDbkIsUUFBUSxFQUFFLFNBQVZRLE1BQVFBLENBQWFyQixJQUFJLEVBQUVzQixJQUFJLEVBQUU1QixHQUFHLEVBQUc7Y0FDbkMsSUFBSTZCLE9BQU8sR0FBQ25DLEdBQUcsQ0FBQ29DLHlCQUF5QixDQUFDLENBQUMsRUFBQ2hELFNBQVMsQ0FBQztjQUN0RCxPQUFPK0MsT0FBTztZQUNsQjtVQUNKLENBQUMsQ0FDSjtVQUNEQSxPQUFPLEVBQUM7WUFDSkEsT0FBTyxFQUFFO1VBRWIsQ0FBQztVQUNELFNBQVMsRUFBRSxDQUNQO1lBQUUsTUFBTSxFQUFFO1VBQU8sQ0FBQyxFQUNsQjtZQUFFLE1BQU0sRUFBRTtVQUFnQixDQUFDLEVBQzNCO1lBQUUsTUFBTSxFQUFFO1VBQVUsQ0FBQztVQUNyQjtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtVQUN3QixJQUFJLENBQ1g7VUFDRCxPQUFPLEVBQUVQLGNBQWM7VUFDdkI7VUFDQSxjQUFjLEVBQUUsU0FBaEJTLFlBQWNBLENBQVlDLFFBQVEsRUFBRztZQUNqQ0EsUUFBUSxHQUFDLElBQUk7WUFDYnRDLEdBQUcsQ0FBQ3VDLHFCQUFxQixDQUFDaEIsb0JBQW9CLENBQUM7VUFDbkQ7UUFDSixDQUFFLENBQUM7UUFDSDNCLEtBQUssQ0FBQyxjQUFjLENBQUM7TUFDekI7SUFBQztNQUFBTCxHQUFBO01BQUFDLEtBQUEsRUFDRCxTQUFBMEIsYUFBYUEsQ0FBQSxFQUFFO1FBQ1gsSUFBSXNCLE1BQU0sR0FBQyxDQUFDO1FBQ1pDLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDLG1CQUFtQixDQUFDO1FBQ2hDdEMsQ0FBQyxDQUFDdUMsSUFBSSxDQUFDM0MsR0FBRyxDQUFDNEMsUUFBUSxDQUFDQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUMsWUFBVztVQUM5QyxJQUFJQyxXQUFXLEdBQUMsSUFBSTtVQUNwQkEsV0FBVyxDQUFDTixNQUFNLEdBQUNBLE1BQU07VUFDekI7VUFDQSxJQUFJTyxRQUFRLEdBQUMzQyxDQUFDLENBQUMsK0NBQStDLENBQUMsQ0FBQzRDLElBQUksQ0FBQyxDQUFDO1VBQ3RFLElBQUlmLE1BQU0sR0FBQ2dCLFFBQVEsQ0FBQ2hCLE1BQU0sQ0FBQ2MsUUFBUSxFQUFDRCxXQUFXLENBQUM7VUFDaEQxQyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQzhDLE1BQU0sQ0FBQ2pCLE1BQU0sQ0FBQztVQUN2Q08sTUFBTSxFQUFFO1FBQ1osQ0FBQyxDQUFDO01BQ047SUFBQztFQUFBLEVBeEd3QlcsVUFBVTtFQTBHdEM7RUFDRHBFLE1BQU0sQ0FBQ0MsY0FBYyxHQUFDQSxjQUFjO0FBQ3hDO0FBQUMiLCJpZ25vcmVMaXN0IjpbXSwiZmlsZSI6Ii4vcmVzb3VyY2VzL2pzL21vZHVsZUpzL3N1cHBsaWVyLmpzIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./resources/js/moduleJs/supplier.js\n\n}");
/***/ }
/******/ });
/************************************************************************/
/******/
/******/ // startup
/******/ // Load entry module and return exports
/******/ // This entry module can't be inlined because the eval-source-map devtool is used.
/******/ __webpack_modules__["./resources/js/moduleJs/moduleBase.js"]();
/******/ __webpack_modules__["./resources/js/moduleJs/order.js"]();
/******/ __webpack_modules__["./resources/js/moduleJs/orderArchive.js"]();
/******/ __webpack_modules__["./resources/js/moduleJs/priceList.js"]();
/******/ var __webpack_exports__ = {};
/******/ __webpack_modules__["./resources/js/moduleJs/supplier.js"]();
/******/
/******/ })()
;