76 lines
341 KiB
JavaScript
76 lines
341 KiB
JavaScript
/*
|
||
* 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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar ModuleBase = /*#__PURE__*/function () {\n function ModuleBase(options, data) {\n _classCallCheck(this, ModuleBase);\n\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\n _defineProperty(this, \"data\", null);\n\n _defineProperty(this, \"root\", this);\n\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\n if (data !== \"undefined\" || data != null) {\n this.data = data;\n }\n\n if (options != null) {\n $.extend(this.Opts, options);\n }\n }\n\n _createClass(ModuleBase, [{\n key: \"init\",\n value: function init(options, data) {\n if (data !== \"undefined\" || data != null) {\n this.data = data;\n }\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\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\n if (typeof options.defaultFileName !== \"undefined\") {\n fileName = options.defaultFileName;\n }\n\n if (rowData.fileUrl) {\n if (rowData.fileName) {\n fileName = rowData.fileName;\n }\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 /*\n console.log(Opts.URL);\n */\n\n console.log(ajaxUrl);\n APP.loadMainContent(ajaxUrl, rootObj.initViewShow);\n console.log('ModuleBase.datatableRowActionEdit End');\n }\n }]);\n\n return ModuleBase;\n}();\n\nwindow.ModuleBase = ModuleBase;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvbW9kdWxlSnMvbW9kdWxlQmFzZS5qcz82ZGVhIl0sIm5hbWVzIjpbIk1vZHVsZUJhc2UiLCJvcHRpb25zIiwiZGF0YSIsInRlc3RNb2RlIiwiQ1NTU2VsZWN0b3JDb250YWluZXIiLCJDU1NTZWxlY3RvckZvcm0iLCJ0b2tlbiIsIlVSTCIsImdldERhdGFUYWJsZUNvbnRlbnQiLCJjaGVja1JlYWR5VG9TZW5kIiwiaW5kZXgiLCJzaG93IiwiZWRpdCIsImNyZWF0ZSIsInN0b3JlIiwidXBkYXRlIiwiZGVzdHJveSIsImRhdGFUYWJsZSIsIm9yZGVyRGlyZWN0aXZlIiwiQ1NTU2VsZWN0b3IiLCJhZHZhbmNlU2VhcmNoUGFyYW1ldGVyIiwiT3B0cyIsImNvbnN0cnVjdG9yIiwibmFtZSIsInJvb3QiLCIkIiwiZXh0ZW5kIiwiZXZlbnQiLCJyb290T2JqIiwiZGVidWciLCJub2RlIiwiY3VycmVudFRhcmdldCIsInJvdyIsIkRhdGFUYWJsZSIsInBhcmVudHMiLCJyb3dEYXRhIiwiYWN0aW9uTmFtZSIsImNhcGl0YWxpemUiLCJmaWxlTmFtZSIsImRlZmF1bHRGaWxlTmFtZSIsImZpbGVVcmwiLCJhamF4IiwidXJsIiwibWV0aG9kIiwieGhyRmllbGRzIiwicmVzcG9uc2VUeXBlIiwic3VjY2VzcyIsImEiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJ3aW5kb3ciLCJjcmVhdGVPYmplY3RVUkwiLCJocmVmIiwiZG93bmxvYWQiLCJib2R5IiwiYXBwZW5kIiwiY2xpY2siLCJyZW1vdmUiLCJyZXZva2VPYmplY3RVUkwiLCJUb2FzdCIsIlRPQVNUX1NUQVRVUyIsIkRBTkdFUiIsImFqYXhVcmwiLCJyZXBsYWNlIiwiaWQiLCJjb25zb2xlIiwibG9nIiwiQVBQIiwibG9hZE1haW5Db250ZW50IiwiaW5pdFZpZXdTaG93Il0sIm1hcHBpbmdzIjoiOzs7Ozs7OztJQUFNQSxVO0FBMEJGLHNCQUFZQyxPQUFaLEVB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VSxNQUFGO0FBQ0FQLFlBQUFBLE1BQU0sQ0FBQzNDLEdBQVAsQ0FBV21ELGVBQVgsQ0FBMkJoQixHQUEzQjtBQUNIO0FBZkUsU0FBUDtBQWtCSCxPQXRCRCxNQXNCSztBQUNEaUIsUUFBQUEsS0FBSyxDQUFDOUMsTUFBTixDQUFhLE9BQWIsRUFBc0IscUJBQXRCLEVBQTZDK0MsWUFBWSxDQUFDQyxNQUExRCxFQUFrRSxLQUFsRTtBQUNIO0FBRUo7OztXQUVELGdDQUF1QjFCLE9BQXZCLEVBQStCTCxJQUEvQixFQUFvQ0YsT0FBcEMsRUFBNEMzQixPQUE1QyxFQUFxRDtBQUNqRDRCLE1BQUFBLEtBQUssQ0FBQyx3Q0FBRCxDQUFMO0FBQ0EsVUFBSWlDLE9BQU8sR0FBR2xDLE9BQU8sQ0FBQ1AsSUFBUixDQUFhZCxHQUFiLENBQWlCSSxJQUFqQixDQUFzQm9ELE9BQXRCLENBQThCLE1BQTlCLEVBQXNDNUIsT0FBTyxDQUFDNkIsRUFBOUMsQ0FBZDtBQUNBO0FBQ1I7QUFDQTs7QUFDUUMsTUFBQUEsT0FBTyxDQUFDQyxHQUFSLENBQVlKLE9BQVo7QUFDQUssTUFBQUEsR0FBRyxDQUFDQyxlQUFKLENBQW9CTixPQUFwQixFQUE2QmxDLE9BQU8sQ0FBQ3lDLFlBQXJDO0FBQ0FKLE1BQUFBLE9BQU8sQ0FBQ0MsR0FBUixDQUFZLHVDQUFaO0FBQ0g7Ozs7OztBQUdMaEIsTUFBTSxDQUFDbEQsVUFBUCxHQUFrQkEsVUFBbEIiLCJzb3VyY2VzQ29udGVudCI6WyJjbGFzcyBNb2R1bGVCYXNlIHtcbiAgICBPcHRzID0ge1xuICAgICAgICB0ZXN0TW9kZTogZmFsc2UsXG4gICAgICAgIENTU1NlbGVjdG9yQ29udGFpbmVyOiAnJyxcbiAgICAgICAgQ1NTU2VsZWN0b3JGb3JtOiAnJyxcbiAgICAgICAgdG9rZW46IG51bGwsXG4gICAgICAgIFVSTDoge1xuICAgICAgICAgICAgZ2V0RGF0YVRhYmxlQ29udGVudDogbnVsbCxcbiAgICAgICAgICAgIGNoZWNrUmVhZHlUb1NlbmQ6IG51bGwsXG4gICAgICAgICAgICBpbmRleDogbnVsbCxcbiAgICAgICAgICAgIHNob3c6IG51bGwsXG4gICAgICAgICAgICBlZGl0OiBudWxsLFxuICAgICAgICAgICAgY3JlYXRlOiBudWxsLFxuICAgICAgICAgICAgc3RvcmU6IG51bGwsXG4gICAgICAgICAgICB1cGRhdGU6IG51bGwsXG4gICAgICAgICAgICBkZXN0cm95OiBudWxsLFxuICAgICAgICB9LFxuICAgICAgICBkYXRhVGFibGU6IHtcbiAgICAgICAgICAgIG9yZGVyRGlyZWN0aXZlOiBbMSwgJ2FzYyddLFxuICAgICAgICAgICAgQ1NTU2VsZWN0b3I6IG51bGwsXG4gICAgICAgICAgICBhZHZhbmNlU2VhcmNoUGFyYW1ldGVyOnt9XG4gICAgICAgIH0sXG4gICAgfTtcbiAgICBkYXRhID0gbnVsbDtcbiAgICByb290ID0gdGhpcztcblxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMsIGRhdGEpIHtcbiAgICAgICAgdGhpcy5PcHRzLkNTU1NlbGVjdG9yQ29udGFpbmVyID0gJy5jb250YWluZXInICsgdGhpcy5jb25zdHJ1Y3Rvci5uYW1lO1xuICAgICAgICB0aGlzLk9wdHMuQ1NTU2VsZWN0b3JGb3JtID0gJy4nICsgdGhpcy5jb25zdHJ1Y3Rvci5uYW1lICsgJ0Zvcm0nO1xuICAgICAgICB0aGlzLk9wdHMuZGF0YVRhYmxlLkNTU1NlbGVjdG9yID0gdGhpcy5PcHRzLkNTU1NlbGVjdG9yQ29udGFpbmVyICsgJyAuZGF0YVRhYmxlJztcbiAgICAgICAgdGhpcy5yb290ID0gdGhpcztcbiAgICAgICAgaWYgKGRhdGEgIT09IFwidW5kZWZpbmVkXCIgfHwgZGF0YSAhPSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGEgPSBkYXRhO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zICE9IG51bGwpIHtcbiAgICAgICAgICAgICQuZXh0ZW5kKHRoaXMuT3B0cywgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpbml0KG9wdGlvbnMsIGRhdGEpIHtcbiAgICAgICAgaWYgKGRhdGEgIT09IFwidW5kZWZpbmVkXCIgfHwgZGF0YSAhPSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGEgPSBkYXRhO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zICE9IG51bGwpIHtcbiAgICAgICAgICAgICQuZXh0ZW5kKHRoaXMuT3B0cywgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkYXRhdGFibGVSb3dBY3Rpb25CdXR0b25DbGljayhldmVudCxyb290T2JqLG9wdGlvbnMpIHtcbiAgICAgICAgZGVidWcoJ2NhbGwgTW9kdWxlQmFzZS5kYXRhdGFibGVSb3dBY3Rpb25CdXR0b25DbGljaycpO1xuICAgICAgICBkZWJ1Zyhyb290T2JqKTtcbiAgICAgICAgbGV0IG5vZGUgPSAkKGV2ZW50WzBdLmN1cnJlbnRUYXJnZXQpO1xuICAgICAgICBsZXQgcm93ID0gJChyb290T2JqLk9wdHMuZGF0YVRhYmxlLkNTU1NlbGVjdG9yKS5EYXRhVGFibGUoKS5yb3cobm9kZS5wYXJlbnRzKCd0cicpKTtcbiAgICAgICAgbGV0IHJvd0RhdGEgPSByb3cuZGF0YSgpO1xuICAgICAgICBsZXQgYWN0aW9uTmFtZSA9ICdkYXRhdGFibGVSb3dBY3Rpb24nICsgbm9kZS5kYXRhKCdidXR0b250eXBlJykuY2FwaXRhbGl6ZSgpO1xuICAgICAgICBpZiAodHlwZW9mIHJvb3RPYmpbYWN0aW9uTmFtZV0gPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgcmV0dXJuIHJvb3RPYmpbYWN0aW9uTmFtZV0ocm93RGF0YSwgbm9kZSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRhdGF0YWJsZVJvd0FjdGlvbkF0dGFjaG1lbnQocm93RGF0YSxub2RlLG9wdGlvbnMpIHtcbiAgICAgICAgZGVidWcoJ2NhbGwgTW9kdWxlQmFzZS5kYXRhdGFibGVSb3dBY3Rpb25BdHRhY2htZW50ICcpO1xuICAgICAgICBsZXQgZmlsZU5hbWU9J2Rvd25sb2FkZWRGaWxlJztcbiAgICAgICAgaWYodHlwZW9mIG9wdGlvbnMuZGVmYXVsdEZpbGVOYW1lIT09IFwidW5kZWZpbmVkXCIpe1xuICAgICAgICAgICAgZmlsZU5hbWU9b3B0aW9ucy5kZWZhdWx0RmlsZU5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYocm93RGF0YS5maWxlVXJsKXtcbiAgICAgICAgICAgIGlmKHJvd0RhdGEuZmlsZU5hbWUpe1xuICAgICAgICAgICAgICAgIGZpbGVOYW1lPXJvd0RhdGEuZmlsZU5hbWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAkLmFqYXgoe1xuICAgICAgICAgICAgICAgIHVybDogcm93RGF0YS5maWxlVXJsLFxuICAgICAgICAgICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgICAgICAgICAgeGhyRmllbGRzOiB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICBhLmhyZWYgPSB1cmw7XG4gICAgICAgICAgICAgICAgICAgIGEuZG93bmxvYWQgPSBmaWxlTmFtZTtcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmQoYSk7XG4gICAgICAgICAgICAgICAgICAgIGEuY2xpY2soKTtcbiAgICAgICAgICAgICAgICAgICAgYS5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgIFRvYXN0LmNyZWF0ZShcIkhpYmEhXCIsICdOaW5jcyBjc2F0b2x0IGbDoWpsIScsIFRPQVNUX1NUQVRVUy5EQU5HRVIsIDEwMDAwKTtcbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgZGF0YXRhYmxlUm93QWN0aW9uVmlldyhyb3dEYXRhLG5vZGUscm9vdE9iaixvcHRpb25zKSB7XG4gICAgICAgIGRlYnVnKCdjYWxsIE1vZHVsZUJhc2UuZGF0YXRhYmxlUm93QWN0aW9uVmlldycpO1xuICAgICAgICBsZXQgYWpheFVybCA9IHJvb3RPYmouT3B0cy5VUkwuc2hvdy5yZXBsYWNlKCclaWQlJywgcm93RGF0YS5pZCk7XG4gICAgICAgIC8qXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coT3B0cy5VUkwpO1xuICAgICAgICAqL1xuICAgICAgICBjb25zb2xlLmxvZyhhamF4VXJsKTtcbiAgICAgICAgQVBQLmxvYWRNYWluQ29udGVudChhamF4VXJsLCByb290T2JqLmluaXRWaWV3U2hvdyk7XG4gICAgICAgIGNvbnNvbGUubG9nKCdNb2R1bGVCYXNlLmRhdGF0YWJsZVJvd0FjdGlvbkVkaXQgRW5kJyk7XG4gICAgfVxuXG59XG53aW5kb3cuTW9kdWxlQmFzZT1Nb2R1bGVCYXNlO1xuIl0sImZpbGUiOiIuL3Jlc291cmNlcy9qcy9tb2R1bGVKcy9tb2R1bGVCYXNlLmpzLmpzIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./resources/js/moduleJs/moduleBase.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./resources/js/moduleJs/order.js":
|
||
/*!****************************************!*\
|
||
!*** ./resources/js/moduleJs/order.js ***!
|
||
\****************************************/
|
||
/***/ (() => {
|
||
|
||
eval("function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, 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 normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nwindow.OrderModulDefault = {\n actionFunction: function actionFunction() {}\n};\n\nvar DataModelOrder = /*#__PURE__*/function (_DataModel) {\n _inherits(DataModelOrder, _DataModel);\n\n var _super = _createSuper(DataModelOrder);\n\n /*\r\n * Constructor\r\n */\n function DataModelOrder(data, options) {\n var _this;\n\n _classCallCheck(this, DataModelOrder);\n\n _this = _super.call(this, data, options);\n\n if (typeof _this.productSelected === \"undefined\") {\n _this.productSelected = {};\n }\n\n if (typeof _this.productComment === \"undefined\") {\n _this.productComment = {};\n }\n\n console.log(_this.constructor.name + ' constructor called');\n return _this;\n }\n\n return DataModelOrder;\n}(DataModel);\n\n;\nwindow.DataModelOrder = DataModelOrder;\n\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\n this.construct = function (options) {\n $.extend(Opts, options);\n };\n\n this.getOpts = function () {\n return Opts;\n };\n\n this.setOpts = function (options) {\n $.extend(Opts, options);\n };\n\n this.init = function (options) {\n $.extend(Opts, options);\n debug(Opts);\n $('.step').each(function () {\n var stepName = $(this).data('stepname');\n\n if (Opts.complete.includes(stepName)) {\n root.setCompleted(stepName);\n }\n\n if (Opts.enable.includes(stepName)) {\n root.setEnabled(stepName);\n }\n\n if (Opts.load.includes(stepName)) {\n root.loadStepContent(stepName);\n }\n\n if (Opts.active === stepName) {\n root.setActive(stepName);\n }\n });\n root.bindClickAction();\n };\n\n this.bindClickAction = function () {\n var stepClickButtons = $('.stepClick');\n stepClickButtons.off('click');\n stepClickButtons.on('click', root.stepClick);\n };\n\n this.setCompleted = function (stepName) {\n console.log(stepName + ' completed');\n $('.step[data-stepName=\"' + stepName + '\"]').addClass('completed');\n };\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\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\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(); //$('.stepClick').click(root.stepClick);\n };\n\n this.addEnabled = function (stepName) {\n if (!Opts.enable.includes(stepName)) {\n Opts.enable.push(stepName);\n }\n\n root.setEnabled(stepName);\n };\n\n this.addCompleted = function (stepName) {\n if (!Opts.complete.includes(stepName)) {\n Opts.complete.push(stepName);\n }\n\n root.setCompleted(stepName);\n root.bindClickAction();\n };\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\n if ($.inArray(stepName, Opts.excludeLoaded) == -1) {\n Opts.loaded.push(stepName);\n } else {\n console.log('excluded View');\n }\n\n container.html(result);\n\n if (Opts.nowLoaded) {\n Opts.nowLoaded(stepName);\n }\n\n Opts.onAfterLoad();\n }\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\n this.setActiveFinish = function (stepName) {\n var container = $('.SC' + stepName.capitalize());\n\n if (stepName === 'productSelect') {\n $('.containerStepper').addClass('activeSideBar');\n } else {\n $('.containerStepper').removeClass('activeSideBar');\n }\n\n debug('setActiveFinish show:' + stepName);\n container.show();\n Opts.nowLoaded = false;\n root.active = stepName;\n Opts.onAfterActivate();\n\n if (typeof Opts.autoCallback[stepName] !== 'undefined') {\n Opts.autoCallback[stepName].onAfterActivate();\n }\n };\n\n this.setActive = function (stepName) {\n $('.stepContainer').hide();\n\n if (!Opts.loaded.includes(stepName)) {\n root.loadStepContent(stepName);\n Opts.nowLoaded = this.setActiveFinish;\n } else {\n this.setActiveFinish(stepName);\n }\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};\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\n this.setOpts = function (options) {\n $.extend(Opts, options);\n };\n\n this.getOpts = function () {\n return Opts;\n };\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\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\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 //error:ajaxErrorHandler\n\n });\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\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\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\n var stepOnAfterActivate = function stepOnAfterActivate() {};\n\n var avalaibleSteps = root.Stepper.getOpts()['available'];\n var stepUrlData = false;\n var stepAutoCallback = [];\n\n var _iterator = _createForOfIteratorHelper(avalaibleSteps),\n _step;\n\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\n debug(stepAutoCallback);\n debug(Order.getData()['id']);\n\n if (Order.getData()['id'] > 0) {\n debug('hajra');\n debug(Order.getData());\n\n if (Order.getData()['deliveryDate']) {\n root.setDeliveryDate(Order.getData()['deliveryDate']);\n /*\r\n @todo: weekly-t beallitani\r\n */\n }\n\n if (Order.getData()['supplierName']) {\n root.setSupplier(Order.getData()['supplierName']);\n }\n\n stepUrlData = {\n 'supplierId': Order.supplierId,\n id: Order.id\n };\n\n var _iterator2 = _createForOfIteratorHelper(avalaibleSteps),\n _step2;\n\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\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\n break;\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\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\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 };\n\n this.initOrder = function (data) {\n Order = new DataModelOrder(data);\n };\n\n this.init = function (options) {\n debug('OrderModul init called');\n $.extend(Opts, window.OrderModulDefault, options);\n Order = new DataModelOrder();\n\n if (Opts.needStepper) {\n if (typeof this.Stepper == 'undefined') {\n this.Stepper = new Stepper();\n }\n }\n\n if (Opts.testMode) {\n return root.testMode();\n }\n };\n\n this.setSupplier = function (supplierName, supplierId) {\n if (supplierName) {\n $('.supplierNamePlace').text(supplierName);\n }\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\n this.setDeliveryDate = function (dateText, dateTextTo) {\n var dateTextHuman = dateText.replaceAll('-', '.') + '.';\n\n if (dateTextHuman.length < 5) {\n $('.deliveryDatePlace').text(dateText);\n return;\n }\n\n if (dateTextTo) {\n dateTextHuman += ' - ' + dateTextTo.replaceAll('-', '.') + '.';\n }\n\n $(Opts.CSSSelectorForm + ' .selectedDateText').text(dateTextHuman);\n $('.deliveryDatePlace').text(dateTextHuman);\n $(Opts.CSSSelectorForm + ' input[name=\"deliveryDate\"]').val(dateText);\n };\n\n this.getData = function () {\n return Order;\n };\n\n this.setSupplierCompleted = function () {\n console.log('bingo');\n root.initViewParameter();\n };\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 }); //root.Stepper.setOpts({onAfterLoad:root.setSupplierCompleted})\n\n root.Stepper.setEnabled('parameter');\n root.Stepper.addCompleted('parameter');\n root.Stepper.setCompleted('parameter');\n root.Stepper.setActive('parameter');\n };\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\n if (typeof Order.supplierId == 'undefined') {\n //new order\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 }); //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(); //Order.setData({supplierId:supplierId});\n }\n }\n\n return;\n console.log('-----------');\n console.log(root.Stepper.getOpts());\n console.log('-----------'); //$('.supplierNamePlace').text(supplierName);\n\n root.setSupplier(supplierName, supplierId);\n console.log(supplierName); //@todo:ide kell egy mentes!\n //@todo:mentes eredemenyekeppen lehet valtani\n\n event.preventDefault();\n root.Stepper.setOpts({\n onAfterLoad: root.setSupplierCompleted\n });\n root.Stepper.setEnabled('parameter');\n root.Stepper.addCompleted('parameter');\n root.Stepper.setCompleted('parameter');\n root.Stepper.setActive('parameter');\n });\n };\n\n this.checkContactNameField = function () {\n var CSSSelectorForm = '.orderParameterForm';\n var node = $(CSSSelectorForm + ' input[name=contactName]');\n\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\n this.sendOrderDataToServer = function (updateType, callback, errorCallback) {\n var ajaxData = {};\n var ajaxUrl = Opts.URL.store;\n var ajaxMethod = \"POST\";\n\n if (Order.id) {\n ajaxUrl = Opts.URL.update.replace('%id%', Order.id); //ajaxMethod=\"PUT\";\n //ajaxData=new FormData($(CSSSelectorForm)[0]);\n\n ajaxData._method = 'PUT';\n }\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\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\n if (typeof errorCallback != 'undefined') {\n errorCallback(xhr.responseJSON);\n }\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 }); //root.Stepper.setOpts({onAfterLoad:root.setParameterCompleted})\n\n root.Stepper.setEnabled('productSelect');\n root.Stepper.addCompleted('productSelect');\n root.Stepper.setCompleted('productSelect');\n root.Stepper.setActive('productSelect');\n };\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\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\n this.weekHoverSlow = function () {\n console.error('weekHoverSlow');\n\n if ($('.ui-datepicker-calendar tr').length < 1) {\n setTimeout(root.weekHoverSlow, 1);\n return;\n }\n\n root.weekHover();\n };\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\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); //root.weekHoverSlow();\n\n console.groupEnd();\n },\n beforeShowDay: function beforeShowDay(date) {\n console.group('beforeShowDay');\n console.log(date.toLocaleDateString('hu-Hu'));\n var cssClass = '';\n\n if (date >= startDate && date <= endDate) {\n console.error(date.toLocaleDateString('hu-Hu'));\n cssClass = 'ui-datepicker-current-selected-weekday'; //cssClass = 'ui-state-active';\n }\n\n console.log(cssClass);\n console.groupEnd();\n return [true, cssClass];\n },\n onChangeMonthYear: function onChangeMonthYear(year, month, inst) {//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\n this.callChangeOrderType = function () {\n console.log(this);\n console.log(this.value);\n root.initDatePicker(this.value); //enum('daily', 'weekly')\n\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\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\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\n root.initDatePicker('daily');\n }\n\n if (Order.getData()['contactName']) {\n $(CSSSelectorForm + ' input[name=contactName]').val(Order.getData()['contactName']);\n }\n\n if (Order.getData()['note']) {\n $(CSSSelectorForm + ' textarea[name=note]').val(Order.getData()['note']);\n }\n\n if (Order.getData()['deliveryAddressId']) {\n console.log($(CSSSelectorForm + ' select[name=deliveryAddressId]'));\n $(CSSSelectorForm + ' select[name=deliveryAddressId]').val(Order.getData()['deliveryAddressId']);\n }\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\n $(CSSSelectorForm + ' .orderParameterDeliveryAddress').select2({}).show();\n $(CSSSelectorForm + ' .orderParameterCustomNotificationEmail').select2({}).show();\n $(CSSSelectorForm).submit(function (event) {\n event.preventDefault();\n\n if ($(CSSSelectorForm)[0].checkValidity() === false) {\n debug('validaton false');\n event.stopPropagation();\n return;\n } else {\n debug('validaton ok'); //do your ajax submition here\n }\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\n this.blank = function () {};\n\n this.setParameterCompleted = function () {\n console.log('setParameterCompleted called');\n root.Stepper.setOpts({\n onAfterLoad: function onAfterLoad() {}\n }); //root.initViewProductSelect()\n };\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\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\n if (productComment !== null) {\n if (typeof productComment[productId] == 'undefined' && comment.length === 0) {\n return;\n }\n\n if (productComment[productId] === comment) {\n return;\n }\n }\n\n productComment[productId] = comment;\n\n if (comment.length === 0) {\n delete Order.productComment[productId];\n }\n\n Order.productComment = productComment;\n queueAjax.push(Date.now());\n root.syncOrderDataToServer();\n });\n };\n\n this.productSelectDatatablesRowFormatter = function (d) {\n // `d` is the original data object for the row\n\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 = ''; // debug(Order);\n\n if (Order.productComment && Order.productComment !== null) {\n debug(_typeof(Order.productComment[d.id]));\n\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\n\n if (d.favorites === true) {\n templateData.btnFavoritesClass = 'btn-warning';\n } else {\n templateData.btnFavoritesClass = 'btn-light';\n }\n\n var template = $('template[data-name=\"orderProductSelectDetails\"]').html();\n templateData.weekly = false;\n\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\n var productSelected = Order.getData('productSelected');\n\n if (typeof productSelected[d.id] != 'undefined') {\n templateData.itemQuantity = productSelected[d.id];\n }\n\n console.log(['templateData', templateData]);\n var oldTags = Mustache.tags;\n Mustache.tags = [\"~!\", \"!~\"];\n\n if (templateData['specification'] == 'false' || templateData['specification'] == false) {\n templateData.specificationClass = 'd-none';\n }\n\n templateData.pictureImg = '';\n\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\n console.log('templateData', templateData); //templateData['aa_specification']=false;\n\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\n this.setDatatableHeaderText = function (text) {\n $('.tableHeaderText').text(text);\n };\n\n this.getTreePathName = function (node) {\n var res = '';\n var items = $(node).parents('li').toArray();\n items.shift();\n items.reverse();\n\n for (var item in items) {\n console.log($(items[item]).children('a.categoryItem'));\n\n if ($(items[item]).children('a.categoryItem').length > 0) {\n res += $(items[item]).children('a.categoryItem').text() + '/';\n }\n }\n\n res += $(node).text();\n console.log(res);\n return res;\n };\n\n var selectedProductGroup = null;\n var dataTableSearchStr = null;\n var dataTableSearchKrel = false;\n\n this.searchProductByString = function (filterStr) {\n if (filterStr.length > 0) {\n root.setDatatableHeaderText('Termékek szűrve:' + filterStr);\n } else {\n root.setDatatableHeaderText('');\n }\n\n dataTableSearchStr = filterStr;\n $('.dataTableOrderProductSelect').DataTable().ajax.reload();\n };\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\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\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\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\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\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\n this.clickKrelProduct = function () {\n debug('clickKrelProduct'); //root.setDatatableHeaderText('Termékek szűrve: Heti termékek');\n //dataTableSearchStr='**weekly**';\n //$('.dataTableOrderProductSelect').DataTable().ajax.reload();\n\n $(this).parent().toggleClass('krelActive');\n dataTableSearchKrel = !dataTableSearchKrel;\n $('.dataTableOrderProductSelect').DataTable().ajax.reload();\n };\n\n this.productSelectDataTableColumnDefs = function () {\n return [{\n \"width\": \"10px\",\n \"targets\": 0\n }, {\n \"className\": \"dt-left\",\n \"targets\": 1\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\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\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 }\n\n columnData.push(actionColumn);\n return columnData;\n };\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\n this.productSelectDataTableDrawDT = function (e) {\n //debug( 'Table draw complete: '+new Date().getTime() );\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\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>' + //'<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\n root.bindWeakUserHelper();\n /*\r\n ----------------------------------------------------------\r\n change order quantity\r\n */\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\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\n if (typeof quantityCurrent != 'string') {\n quantityCurrent += '';\n }\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\n this.initViewProductSelect = function () {\n var functionName = 'initViewProductSelect';\n console.log(functionName + ' called');\n\n if (viewInicialized.includes(functionName)) {\n return;\n } //debug(Object.getOwnPropertyNames(root));\n\n\n root.setDatatableHeaderText('');\n root.Stepper.setOpts({\n onAfterActivate: function onAfterActivate() {}\n }); //@note: be kell kapcsolni az elonezetet\n\n root.Stepper.addCompleted('invoice');\n root.Stepper.addEnabled('invoice');\n var CSSSelectorForm = '.orderParameterForm'; //console.log(Opts.URL.getDataTableContentProductList);change\n\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\n if ($(this).val().length >= 2) {\n root.searchProductByString($(this).val() + event.key);\n }\n });\n $('.sidebar-search input[name=searchValue]').off('keyup ');\n $('.sidebar-search input[name=searchValue]').on('keyup ', function (event) {\n if ($(this).val().length == 0) {\n root.searchProductByString($(this).val());\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\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\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(); //$('.dataTableOrderProductSelect').on( 'draw.dt', ).dataTable();\n\n $('.dataTableOrderProductSelect').on('xhr.dt', function () {\n debug('Table xhr complete: ' + new Date().getTime());\n }).dataTable(); //$(\"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\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\n this.bindProductDetailsAction = function () {\n root.bindRowDescriptionAction();\n root.bindRowFavoritesAction();\n\n if (Order.getData()['orderType'] == 'weekly') {\n root.bindOrderItemWeekQuantity();\n }\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\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\n return false;\n }\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')); // root.orderItemsChange\n //orderItemsChange\n //quantity[1683][1]\n });\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 } //console.log('remaining left '+queueAjax.length);\n\n\n setTimeout(function () {\n syncDoing = false;\n root.syncOrderDataToServer();\n }, Opts.dataSyncPauseTime);\n };\n\n var queueAjax = [];\n var syncDoing = false;\n\n this.syncOrderDataToServer = function () {\n //debug(queueAjax);\n if (syncDoing) {\n //debug('sync in progress....');\n return false;\n }\n\n if (queueAjax.length < 1) {\n return;\n }\n\n syncDoing = true;\n root.sendOrderDataToServer('productSelect', root.afterSyncOrderDataToServer);\n return;\n };\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\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\n if (quantity == 0) {\n console.error('quantity==0');\n\n if (typeof productSelectedItem == 'undefined') {\n console.error('itt lep1');\n console.groupEnd();\n return;\n }\n\n if (dayIndex) {\n console.log('van dayIndex');\n\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\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\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\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\n console.log(['productSelected', productSelected]);\n Order.productSelected = productSelected;\n console.groupEnd();\n queueAjax.push(Date.now());\n root.syncOrderDataToServer();\n return;\n\n if (productSelected[ItemData.id] == quantity) {\n debug('itt lep12');\n console.groupEnd();\n return;\n }\n\n productSelected[ItemData.id] = quantity;\n\n if (quantity == 0) {\n delete Order.productSelected[ItemData.id];\n }\n\n Order.productSelected = productSelected;\n console.groupEnd();\n return;\n queueAjax.push(Date.now());\n root.syncOrderDataToServer();\n /*\r\n debug(Order.getData('productSelected'));\r\n debug('*******************');\r\n */\n };\n\n this.initViewInvoice = function () {\n root.Stepper.setOpts({\n onAfterLoad: function onAfterLoad() {}\n });\n\n if (Object.keys(Order.productSelected).length > 0) {\n root.Stepper.addCompleted('send');\n root.Stepper.addEnabled('send');\n }\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 var newWin = window.open(\"\");\n newWin.document.write(styleStr);\n var print = $('table.invoice').clone();\n print.find('button.printButton').remove(); // newWin.document.write($('table.invoice').prop('outerHTML'));\n\n newWin.document.write(print.prop('outerHTML'));\n newWin.print();\n newWin.close();\n });\n };\n\n this.resetOrder = function () {\n root.init();\n root.setDeliveryDate('-');\n root.setSupplier('-');\n };\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); //root.resetOrder();\n };\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\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'); //@todo: datasynchere and callback\n\n $('.buttonOrderSend').toggleClass('d-none');\n $('.buttonOrderSending').toggleClass('d-none');\n /**\r\n * PM158\r\n */\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\n root.sendOrderDataToServer('send', root.afterOrderSendOk, root.afterOrderSendError);\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\n this.testModeSend = function () {};\n\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('*******************'); //root.Stepper.setOpts({'UrlData':{'supplierId':supplierId}});\n\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\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\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\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\n root.Stepper.unsetEnabled('send');\n }\n }\n\n console.log(data);\n }\n });\n };\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvbW9kdWxlSnMvb3JkZXIuanM/MzkxNSJdLCJuYW1lcyI6WyJ3aW5kb3ciLCJPcmRlck1vZHVsRGVmYXVsdCIsImFjdGlvbkZ1bmN0aW9uIiwiRGF0YU1vZGVsT3JkZXIiLCJkYXRhIiwib3B0aW9ucyIsInByb2R1Y3RTZWxlY3RlZCIsInByb2R1Y3RDb21tZW50IiwiY29uc29sZSIsImxvZyIsImNvbnN0cnVjdG9yIiwibmFtZSIsIkRhdGFNb2RlbCIsIlN0ZXBwZXIiLCJPcHRzIiwiY29tcGxldGUiLCJhdmFpbGFibGUiLCJlbmFibGUiLCJsb2FkIiwiZXhjbHVkZUxvYWRlZCIsImxvYWRlZCIsImFjdGl2ZSIsIlVSTCIsImNyZWF0ZSIsIlVybERhdGEiLCJvbkFmdGVyTG9hZCIsIm9uQWZ0ZXJBY3RpdmF0ZSIsImF1dG9DYWxsYmFjayIsIm5vd0xvYWRlZCIsInJvb3QiLCJjb25zdHJ1Y3QiLCIkIiwiZXh0ZW5kIiwiZ2V0T3B0cyIsInNldE9wdHMiLCJpbml0IiwiZGVidWciLCJlYWNoIiwic3RlcE5hbWUiLCJpbmNsdWRlcyIsInNldENvbXBsZXRlZCIsInNldEVuYWJsZWQiLCJsb2FkU3RlcENvbnRlbnQiLCJzZXRBY3RpdmUiLCJiaW5kQ2xpY2tBY3Rpb24iLCJzdGVwQ2xpY2tCdXR0b25zIiwib2ZmIiwib24iLCJzdGVwQ2xpY2siLCJhZGRDbGFzcyIsInVuc2V0Q29tcGxldGVkIiwicmVtb3ZlQ2xhc3MiLCJhcnJheVJlbW92ZSIsInVuc2V0RW5hYmxlZCIsImNvbnRlbnRzIiwidW53cmFwIiwic3RlcEl0ZW0iLCJodG1sIiwiYWRkRW5hYmxlZCIsInB1c2giLCJhZGRDb21wbGV0ZWQiLCJhamF4IiwiYXN5bmMiLCJ0eXBlIiwidXJsIiwiY2FjaGUiLCJzdWNjZXNzIiwicmVzdWx0IiwiY29udGFpbmVyIiwiY2FwaXRhbGl6ZSIsImluQXJyYXkiLCJjbGVhckxvYWRlZCIsImNsYXNzTGlzdCIsImNvbnRhaW5zIiwic2V0QWN0aXZlRmluaXNoIiwic2hvdyIsImhpZGUiLCJldmVudCIsInByZXZlbnREZWZhdWx0IiwiY3VycmVudFRhcmdldCIsIk9yZGVyTW9kdWxlIiwidGVzdE1vZGUiLCJuZWVkU3RlcHBlciIsIkNTU1NlbGVjdG9yRm9ybSIsImRlZmF1bHREZWxpdmVyeURhdGUiLCJkYXRhU3luY1BhdXNlVGltZSIsInRva2VuIiwiZ2V0RGF0YVRhYmxlQ29udGVudFByb2R1Y3RMaXN0IiwiY2hlY2tSZWFkeVRvU2VuZCIsImluZGV4IiwiZWRpdCIsInN0b3JlIiwidXBkYXRlIiwiZGVzdHJveSIsInRvZ2dsZUZhdm9yaXRlcyIsIlB1YmxpY1ZhciIsIlB1YmxpY1ZhcjIiLCJBcGlUb2tlbiIsIk9yZGVyIiwidmlld0luaWNpYWxpemVkIiwiY2xpY2tPcmRlckVkaXQiLCJhamF4VXJsIiwicmVwbGFjZSIsImlkIiwiQVBQIiwibG9hZE1haW5Db250ZW50IiwiYWZ0ZXJPcmRlckRlbGV0ZWQiLCJUb2FzdCIsIlRPQVNUX1NUQVRVUyIsIkRBTkdFUiIsImNsaWNrT3JkZXJEZWxldGVDb25maXJtZWQiLCJtb2RhbCIsImFqYXhEYXRhIiwiX3Rva2VuIiwibWV0aG9kIiwiaW5pdFZpZXdPcmRlclNlbGVjdCIsImFjdGlvbiIsIm9yZGVySWQiLCJjbG9zZXN0IiwiZmluZCIsInRleHQiLCJpbml0U3RlcHBlciIsImdldERhdGEiLCJzZXREZWxpdmVyeURhdGUiLCJzZXRTdXBwbGllciIsInVuRW5hYmxlZCIsInZhbHVlIiwic3RlcEFjdGl2ZSIsInN0ZXBDb21wbGV0ZSIsInN0ZXBFbmFibGUiLCJzdGVwT25BZnRlckFjdGl2YXRlIiwiYXZhbGFpYmxlU3RlcHMiLCJzdGVwVXJsRGF0YSIsInN0ZXBBdXRvQ2FsbGJhY2siLCJpdGVtIiwic3VwcGxpZXJJZCIsImluaXRPcmRlciIsInN1cHBsaWVyTmFtZSIsInNldERhdGEiLCJkYXRlVGV4dCIsImRhdGVUZXh0VG8iLCJkYXRlVGV4dEh1bWFuIiwicmVwbGFjZUFsbCIsImxlbmd0aCIsInZhbCIsInNldFN1cHBsaWVyQ29tcGxldGVkIiwiaW5pdFZpZXdQYXJhbWV0ZXIiLCJhZnRlck9yZGVyU2V0U3VwcGxpZXJPayIsInN1cHBsaWVyIiwiSU5GTyIsImluaXRWaWV3U3VwcGxpZXIiLCJzdG9yZVR5cGUiLCJXQVJOSU5HIiwiY2hlY2tDb250YWN0TmFtZUZpZWxkIiwibm9kZSIsInNlbmRPcmRlckRhdGFUb1NlcnZlciIsInVwZGF0ZVR5cGUiLCJjYWxsYmFjayIsImVycm9yQ2FsbGJhY2siLCJhamF4TWV0aG9kIiwiX21ldGhvZCIsImpzb25Ub0Zvcm1EYXRhIiwiY29udGVudFR5cGUiLCJwcm9jZXNzRGF0YSIsImVycm9yIiwieGhyIiwiYWpheE9wdGlvbnMiLCJ0aHJvd25FcnJvciIsImFqYXhFcnJvckhhbmRsZXIiLCJyZXNwb25zZUpTT04iLCJhZnRlck9yZGVyU2V0UGFyYW1ldGVyT2siLCJzZWxlY3RDdXJyZW50V2VlayIsIndlZWtIb3ZlciIsIndlZWtIb3ZlclNsb3ciLCJzZXRUaW1lb3V0IiwiaW5pdERhdGVQaWNrZXIiLCJzdGFydERhdGUiLCJEYXRlIiwiZW5kRGF0ZSIsImRhdGVwaWNrZXIiLCJzaG93T3RoZXJNb250aHMiLCJzZWxlY3RPdGhlck1vbnRocyIsInNob3dXZWVrIiwiZGF0ZUZvcm1hdCIsImZpcnN0RGF5IiwibWluRGF0ZSIsImFmdGVyU2hvdyIsImluc3QiLCJvblNlbGVjdCIsImRhdGUiLCJnZXRNb25kYXkiLCJnZXRGdWxsWWVhciIsImdldE1vbnRoIiwiZ2V0RGF0ZSIsImdldERheSIsImZvcm1hdERhdGUiLCJiZWZvcmVTaG93IiwiZ3JvdXAiLCJncm91cEVuZCIsImJlZm9yZVNob3dEYXkiLCJ0b0xvY2FsZURhdGVTdHJpbmciLCJjc3NDbGFzcyIsIm9uQ2hhbmdlTW9udGhZZWFyIiwieWVhciIsIm1vbnRoIiwiY2FsbENoYW5nZU9yZGVyVHlwZSIsImNsaWNrIiwic2VsZWN0MiIsInByb3AiLCJzZXREYXRlIiwic3VibWl0IiwiY2hlY2tWYWxpZGl0eSIsInN0b3BQcm9wYWdhdGlvbiIsImNvbnRhY3ROYW1lIiwibm90ZSIsIm9yZGVyVHlwZSIsImRlbGl2ZXJ5RGF0ZSIsImRlbGl2ZXJ5QWRkcmVzc0lkIiwiZGVsaXZlcnlBZGRyZXNzIiwiY3VzdG9tTm90aWZpY2F0aW9uRW1haWwiLCJibGFuayIsInNldFBhcmFtZXRlckNvbXBsZXRlZCIsImJpbmRSb3dGYXZvcml0ZXNBY3Rpb24iLCJwcm9kdWN0SWQiLCJidXR0b24iLCJyZXNwb25zZSIsInN0YXR1cyIsImJpbmRSb3dEZXNjcmlwdGlvbkFjdGlvbiIsImNvbW1lbnQiLCJxdWV1ZUFqYXgiLCJub3ciLCJzeW5jT3JkZXJEYXRhVG9TZXJ2ZXIiLCJwcm9kdWN0U2VsZWN0RGF0YXRhYmxlc1Jvd0Zvcm1hdHRlciIsImQiLCJ0ZW1wbGF0ZURhdGEiLCJmYXZvcml0ZXMiLCJidG5GYXZvcml0ZXNDbGFzcyIsInRlbXBsYXRlIiwid2Vla2x5IiwiaXRlbVF1YW50aXR5Iiwib2xkVGFncyIsIk11c3RhY2hlIiwidGFncyIsInNwZWNpZmljYXRpb25DbGFzcyIsInBpY3R1cmVJbWciLCJwaWN0dXJlQ2xhc3MiLCJyZW5kZXIiLCJzZXREYXRhdGFibGVIZWFkZXJUZXh0IiwiZ2V0VHJlZVBhdGhOYW1lIiwicmVzIiwiaXRlbXMiLCJwYXJlbnRzIiwidG9BcnJheSIsInNoaWZ0IiwicmV2ZXJzZSIsImNoaWxkcmVuIiwic2VsZWN0ZWRQcm9kdWN0R3JvdXAiLCJkYXRhVGFibGVTZWFyY2hTdHIiLCJkYXRhVGFibGVTZWFyY2hLcmVsIiwic2VhcmNoUHJvZHVjdEJ5U3RyaW5nIiwiZmlsdGVyU3RyIiwiRGF0YVRhYmxlIiwicmVsb2FkIiwiY2xpY2tTZWFyY2hQcm9kdWN0IiwiY2xpY2tGYXZvcml0ZXNQcm9kdWN0IiwiY2xpY2tPZnRlblByb2R1Y3QiLCJjbGlja1NwZWNpYWxPZmZlciIsImNsaWNrTGFzdFByb2R1Y3QiLCJjbGlja1dlZWtseVByb2R1Y3QiLCJjbGlja0tyZWxQcm9kdWN0IiwicGFyZW50IiwidG9nZ2xlQ2xhc3MiLCJwcm9kdWN0U2VsZWN0RGF0YVRhYmxlQ29sdW1uRGVmcyIsInByb2R1Y3RTZWxlY3REYXRhVGFibGVDb2x1bW4iLCJjb2x1bW5EYXRhIiwiYWN0aW9uQ29sdW1uIiwiZGVmYXVsdENvbnRlbnQiLCJnZXREYXRhdGFibGVzIiwidGFibGUiLCJsYW5ndWFnZSIsInNlYXJjaFN0ciIsImtyZWwiLCJncm91cElkIiwiYnV0dG9ucyIsInByb2R1Y3RTZWxlY3REYXRhVGFibGVEcmF3RFQiLCJlIiwiZmlsdGVyIiwiaW5wdXRTcGlubmVyIiwiYnV0dG9uc1dpZHRoIiwiZ3JvdXBDbGFzcyIsImJ1dHRvbnNDbGFzcyIsImJpbmRXZWFrVXNlckhlbHBlciIsInF1YW50aXR5IiwicGFyc2VGbG9hdCIsInJvd0RhdGEiLCJyb3ciLCJvcmRlckl0ZW1zQ2hhbmdlIiwicXVhbnRpdHlDdXJyZW50IiwidHJpZ2dlciIsImluaXRWaWV3UHJvZHVjdFNlbGVjdCIsImZ1bmN0aW9uTmFtZSIsIndoaWNoIiwia2V5IiwiZ2V0VGltZSIsImRhdGFUYWJsZSIsInRyIiwiY2hpbGQiLCJpc1Nob3duIiwiYmluZFByb2R1Y3REZXRhaWxzQWN0aW9uIiwiYmluZE9yZGVySXRlbVdlZWtRdWFudGl0eSIsImFjdHVhbEl0ZW0iLCJmb2N1cyIsInJvd05vZGUiLCJwcmV2IiwiYWZ0ZXJTeW5jT3JkZXJEYXRhVG9TZXJ2ZXIiLCJpIiwic3luY0RvaW5nIiwiSXRlbURhdGEiLCJkYXlJbmRleCIsImlzTmFOIiwicHJvZHVjdFNlbGVjdGVkSXRlbSIsImluaXRWaWV3SW52b2ljZSIsIk9iamVjdCIsImtleXMiLCJzdHlsZVN0ciIsInByaW50IiwibmV3V2luIiwib3BlbiIsImRvY3VtZW50Iiwid3JpdGUiLCJjbG9uZSIsInJlbW92ZSIsImNsb3NlIiwicmVzZXRPcmRlciIsImFmdGVyT3JkZXJTZW5kT2siLCJyZXRIVE1MIiwiYWZ0ZXJPcmRlclNlbmRFcnJvciIsImluaXRWaWV3U2VuZCIsInRlc3RNb2RlU2VuZCIsImludm9pY2UiLCJzZW5kIiwidG9nZ2xlRW5hYmxlU2VuZCIsInJlYWR5VG9TZW5kIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQUEsTUFBTSxDQUFDQyxpQkFBUCxHQUF5QjtBQUNyQkMsRUFBQUEsY0FBYyxFQUFFLDBCQUFZLENBQUU7QUFEVCxDQUF6Qjs7SUFHTUMsYzs7Ozs7QUFFRjtBQUNKO0FBQ0E7QUFDSSwwQkFBYUMsSUFBYixFQUFrQkMsT0FBbEIsRUFBMkI7QUFBQTs7QUFBQTs7QUFDdkIsOEJBQU1ELElBQU4sRUFBV0MsT0FBWDs7QUFDQSxRQUFHLE9BQU8sTUFBS0MsZUFBWixLQUErQixXQUFsQyxFQUE4QztBQUMxQyxZQUFLQSxlQUFMLEdBQXFCLEVBQXJCO0FBQ0g7O0FBQ0QsUUFBRyxPQUFPLE1BQUtDLGNBQVosS0FBOEIsV0FBakMsRUFBNkM7QUFDekMsWUFBS0EsY0FBTCxHQUFvQixFQUFwQjtBQUNIOztBQUNEQyxJQUFBQSxPQUFPLENBQUNDLEdBQVIsQ0FBWSxNQUFLQyxXQUFMLENBQWlCQyxJQUFqQixHQUFzQixxQkFBbEM7QUFSdUI7QUFTMUI7OztFQWR3QkMsUzs7QUFlNUI7QUFDRFosTUFBTSxDQUFDRyxjQUFQLEdBQXNCQSxjQUF0Qjs7QUFFQUgsTUFBTSxDQUFDYSxPQUFQLEdBQWUsWUFBWTtBQUV2QjtBQUNKO0FBQ0E7QUFDQTtBQUNJLE1BQUlDLElBQUksR0FBRztBQUNQQyxJQUFBQSxRQUFRLEVBQUUsQ0FBQyxVQUFELENBREg7QUFFUEMsSUFBQUEsU0FBUyxFQUFFLENBQUMsVUFBRCxFQUFhLFdBQWIsRUFBMEIsZUFBMUIsRUFBMkMsU0FBM0MsRUFBc0QsTUFBdEQsQ0FGSjtBQUdQQyxJQUFBQSxNQUFNLEVBQUUsQ0FBQyxVQUFELEVBQWEsU0FBYixDQUhEO0FBSVBDLElBQUFBLElBQUksRUFBRSxFQUpDO0FBS1BDLElBQUFBLGFBQWEsRUFBQyxDQUFDLFNBQUQsRUFBVyxNQUFYLENB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QXhFLElBQUFBLENBQUMsQ0FBQzhCLElBQUYsQ0FBTztBQUNIRyxNQUFBQSxHQUFHLEVBQUNxQyxPQUREO0FBRUhuQyxNQUFBQSxPQUFPLEVBQUMsaUJBQVU5RCxJQUFWLEVBQWdCO0FBQ3BCLFlBQUdBLElBQUksQ0FBQzhELE9BQVIsRUFBZ0I7QUFDWixjQUFHOUQsSUFBSSxDQUFDa1YsV0FBUixFQUFvQjtBQUNoQnpULFlBQUFBLElBQUksQ0FBQ2hCLE9BQUwsQ0FBYStDLFlBQWIsQ0FBMEIsTUFBMUI7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7O0FBQ3dCL0IsWUFBQUEsSUFBSSxDQUFDaEIsT0FBTCxDQUFhNkMsVUFBYixDQUF3QixNQUF4QjtBQUNILFdBUEQsTUFPSztBQUNEN0IsWUFBQUEsSUFBSSxDQUFDaEIsT0FBTCxDQUFhcUMsY0FBYixDQUE0QixNQUE1QjtBQUN4QjtBQUNBO0FBQ0E7QUFDQTs7QUFDd0JyQixZQUFBQSxJQUFJLENBQUNoQixPQUFMLENBQWF3QyxZQUFiLENBQTBCLE1BQTFCO0FBQ0g7QUFDSjs7QUFDRDdDLFFBQUFBLE9BQU8sQ0FBQ0MsR0FBUixDQUFZTCxJQUFaO0FBQ0g7QUFyQkUsS0FBUDtBQXVCSCxHQTFCRDtBQTRCSCxDQTNoREQiLCJzb3VyY2VzQ29udGVudCI6WyJ3aW5kb3cuT3JkZXJNb2R1bERlZmF1bHQ9e1xyXG4gICAgYWN0aW9uRnVuY3Rpb246IGZ1bmN0aW9uICgpIHt9LFxyXG59XHJcbmNsYXNzIERhdGFNb2RlbE9yZGVyIGV4dGVuZHMgRGF0YU1vZGVse1xyXG5cclxuICAgIC8qXHJcbiAgICAgKiBDb25zdHJ1Y3RvclxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvciAoZGF0YSxvcHRpb25zKSB7XHJcbiAgICAgICAgc3VwZXIoZGF0YSxvcHRpb25zKVxyXG4gICAgICAgIGlmKHR5cGVvZiB0aGlzLnByb2R1Y3RTZWxlY3RlZCA9PT1cInVuZGVmaW5lZFwiKXtcclxuICAgICAgICAgICAgdGhpcy5wcm9kdWN0U2VsZWN0ZWQ9e307XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKHR5cGVvZiB0aGlzLnByb2R1Y3RDb21tZW50ID09PVwidW5kZWZpbmVkXCIpe1xyXG4gICAgICAgICAgICB0aGlzLnByb2R1Y3RDb21tZW50PXt9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zb2xlLmxvZyh0aGlzLmNvbnN0cnVjdG9yLm5hbWUrJyBjb25zdHJ1Y3RvciBjYWxsZWQnKTtcclxuICAgIH07XHJcbn07XHJcbndpbmRvdy5EYXRhTW9kZWxPcmRlcj1EYXRhTW9kZWxPcmRlcjtcclxuXHJcbndpbmRvdy5TdGVwcGVyPWZ1bmN0aW9uICgpIHtcclxuXHJcbiAgICAvKlxyXG4gICAgICogVmFyaWFibGVzIGFjY2Vzc2libGVcclxuICAgICAqIGluIHRoZSBjbGFzc1xyXG4gICAgICovXHJcbiAgICBsZXQgT3B0cyA9IHtcclxuICAgICAgICBjb21wbGV0ZTogWydzdXBwbGllciddLFxyXG4gICAgICAgIGF2YWlsYWJsZTogWydzdXBwbGllcicsICdwYXJhbWV0ZXInLCAncHJvZHVjdFNlbGVjdCcsICdpbnZvaWNlJywgJ3NlbmQnXSxcclxuICAgICAgICBlbmFibGU6IFsnc3VwcGxpZXInLCAnaW52b2ljZSddLFxyXG4gICAgICAgIGxvYWQ6IFtdLFxyXG4gICAgICAgIGV4Y2x1ZGVMb2FkZWQ6WydpbnZvaWNlJywnc2VuZCddLFxyXG4gICAgICAgIGxvYWRlZDogW10sXHJcbiAgICAgICAgYWN0aXZlOiBmYWxzZSxcclxuICAgICAgICBVUkw6IHtcclxuICAgICAgICAgICAgY3JlYXRlOiAnJyxcclxuICAgICAgICB9LFxyXG4gICAgICAgIFVybERhdGE6ZmFsc2UsXHJcbiAgICAgICAgb25BZnRlckxvYWQ6ZnVuY3Rpb24gKCkge30sXHJcbiAgICAgICAgb25BZnRlckFjdGl2YXRlOmZ1bmN0aW9uICgpIHt9LFxyXG4gICAgICAgIGF1dG9DYWxsYmFjazp7XHJcbiAgICAgICAgICAgICdpbnZvaWNlJzp7XHJcbiAgICAgICAgICAgICAgICBvbkFmdGVyQWN0aXZhdGU6ZnVuY3Rpb24gKCkge30sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICdzZW5kJzp7XHJcbiAgICAgICAgICAgICAgICBvbkFmdGVyQWN0aXZhdGU6ZnVuY3Rpb24gKCkge30sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICBub3dMb2FkZWQ6ZmFsc2UsXHJcblxyXG4gICAgfTtcclxuXHJcbiAgICBsZXQgcm9vdD10aGlzO1xyXG4gICAgLypcclxuICAgICAqIENvbnN0cnVjdG9yXHJcbiAgICAgKi9cclxuICAgIHRoaXMuY29uc3RydWN0ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcclxuICAgICAgICAkLmV4dGVuZChPcHRzLCBvcHRpb25zKTtcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5nZXRPcHRzPWZ1bmN0aW9uKCl7XHJcbiAgICAgICAgcmV0dXJuIE9wdHM7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldE9wdHM9ZnVuY3Rpb24ob3B0aW9ucyl7XHJcbiAgICAgICAgJC5leHRlbmQoT3B0cywgb3B0aW9ucyk7XHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICB0aGlzLmluaXQ9ZnVuY3Rpb24gKG9wdGlvbnMpe1xyXG4gICAgICAgICQuZXh0ZW5kKE9wdHMsIG9wdGlvbnMpO1xyXG5cclxuICAgICAgICBkZWJ1ZyhPcHRzKTtcclxuICAgICAgICAkKCcuc3RlcCcpLmVhY2goZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgbGV0IHN0ZXBOYW1lPSQodGhpcykuZGF0YSgnc3RlcG5hbWUnKTtcclxuICAgICAgICAgICAgaWYoT3B0cy5jb21wbGV0ZS5pbmNsdWRlcyhzdGVwTmFtZSkpe1xyXG4gICAgICAgICAgICAgICAgcm9vdC5zZXRDb21wbGV0ZWQoc3RlcE5hbWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKE9wdHMuZW5hYmxlLmluY2x1ZGVzKHN0ZXBOYW1lKSl7XHJcbiAgICAgICAgICAgICAgICByb290LnNldEVuYWJsZWQoc3RlcE5hbWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKE9wdHMubG9hZC5pbmNsdWRlcyhzdGVwTmFtZSkpe1xyXG4gICAgICAgICAgICAgICAgcm9vdC5sb2FkU3RlcENvbnRlbnQoc3RlcE5hbWUpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZihPcHRzLmFjdGl2ZT09PXN0ZXBOYW1lKXtcclxuICAgICAgICAgICAgICAgIHJvb3Quc2V0QWN0aXZlKHN0ZXBOYW1lKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJvb3QuYmluZENsaWNrQWN0aW9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5iaW5kQ2xpY2tBY3Rpb249ZnVuY3Rpb24gKCl7XHJcbiAgICAgICAgbGV0IHN0ZXBDbGlja0J1dHRvbnM9JCgnLnN0ZXBDbGljaycpO1xyXG4gICAgICAgIHN0ZXBDbGlja0J1dHRvbnMub2ZmKCdjbGljaycpO1xyXG4gICAgICAgIHN0ZXBDbGlja0J1dHRvbnMub24oJ2NsaWNrJyxyb290LnN0ZXBDbGljayk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2V0Q29tcGxldGVkPWZ1bmN0aW9uIChzdGVwTmFtZSl7XHJcbiAgICAgICAgY29uc29sZS5sb2coc3RlcE5hbWUrJyBjb21wbGV0ZWQnKTtcclxuICAgICAgICAkKCcuc3RlcFtkYXRhLXN0ZXBOYW1lPVwiJytzdGVwTmFtZSsnXCJdJykuYWRkQ2xhc3MoJ2NvbXBsZXRlZCcpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudW5zZXRDb21wbGV0ZWQ9ZnVuY3Rpb24gKHN0ZXBOYW1lKXtcclxuICAgICAgICBjb25zb2xlLmxvZyhzdGVwTmFtZSsnIFVuY29tcGxldGVkJyk7XHJcbiAgICAgICAgJCgnLnN0ZXBbZGF0YS1zdGVwTmFtZT1cIicrc3RlcE5hbWUrJ1wiXScpLnJlbW92ZUNsYXNzKCdjb21wbGV0ZWQnKTtcclxuICAgICAgICBPcHRzLmNvbXBsZXRlPWFycmF5UmVtb3ZlKE9wdHMuY29tcGxldGUsc3RlcE5hbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudW5zZXRFbmFibGVkPWZ1bmN0aW9uIChzdGVwTmFtZSl7XHJcbiAgICAgICAgY29uc29sZS5sb2coc3RlcE5hbWUrJyBVbiBlbmFibGVkJyk7XHJcbiAgICAgICAgJCgnLmNsaWNrJytzdGVwTmFtZSkuY29udGVudHMoKS51bndyYXAoKTtcclxuICAgICAgICBPcHRzLmVuYWJsZT1hcnJheVJlbW92ZShPcHRzLmVuYWJsZSxzdGVwTmFtZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldEVuYWJsZWQ9ZnVuY3Rpb24gKHN0ZXBOYW1lKXtcclxuICAgICAgICBjb25zb2xlLmxvZyhzdGVwTmFtZSsnIGVuYWJsZWQnKTtcclxuICAgICAgICBsZXQgc3RlcEl0ZW09JCgnLnN0ZXBbZGF0YS1zdGVwTmFtZT1cIicrc3RlcE5hbWUrJ1wiXScpO1xyXG4gICAgICAgIHN0ZXBJdGVtLmh0bWwoJzxhIGNsYXNzPVwic3RlcENsaWNrIGNsaWNrJytzdGVwTmFtZSsnXCIgZGF0YS1zdGVwTmFtZT1cIicrc3RlcE5hbWUrJ1wiIGhyZWY9XCIjXCI+JytzdGVwSXRlbS5odG1sKCkrJzwvYT4nKTtcclxuICAgICAgICByb290LmJpbmRDbGlja0FjdGlvbigpO1xyXG4gICAgICAgIC8vJCgnLnN0ZXBDbGljaycpLmNsaWNrKHJvb3Quc3RlcENsaWNrKTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hZGRFbmFibGVkPWZ1bmN0aW9uKHN0ZXBOYW1lKXtcclxuICAgICAgICBpZighT3B0cy5lbmFibGUuaW5jbHVkZXMoc3RlcE5hbWUpKXtcclxuICAgICAgICAgICAgT3B0cy5lbmFibGUucHVzaChzdGVwTmFtZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJvb3Quc2V0RW5hYmxlZChzdGVwTmFtZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hZGRDb21wbGV0ZWQ9ZnVuY3Rpb24oc3RlcE5hbWUpe1xyXG4gICAgICAgIGlmKCFPcHRzLmNvbXBsZXRlLmluY2x1ZGVzKHN0ZXBOYW1lKSl7XHJcbiAgICAgICAgICAgIE9wdHMuY29tcGxldGUucHVzaChzdGVwTmFtZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJvb3Quc2V0Q29tcGxldGVkKHN0ZXBOYW1lKTtcclxuICAgICAgICByb290LmJpbmRDbGlja0FjdGlvbigpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICB0aGlzLmxvYWRTdGVwQ29udGVudD1mdW5jdGlvbiAoc3RlcE5hbWUpe1xyXG4gICAgICAgIGxldCBkYXRhPXsndHlwZSc6c3RlcE5hbWV9O1xyXG4gICAgICAgICQuZXh0ZW5kKGRhdGEsIE9wdHMuVXJsRGF0YSk7XHJcblxyXG4gICAgICAgICQuYWpheCh7XHJcbiAgICAgICAgICAgIGFzeW5jOiB0cnVlLFxyXG4gICAgICAgICAgICB0eXBlOiBcIkdFVFwiLFxyXG4gICAgICAgICAgICB1cmw6IE9wdHMuVVJMLmNyZWF0ZSxcclxuICAgICAgICAgICAgZGF0YTogZGF0YSxcclxuICAgICAgICAgICAgY2FjaGU6IGZhbHNlLFxyXG4gICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbihyZXN1bHQpXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGxldCBjb250YWluZXI9JCgnLlNDJytzdGVwTmFtZS5jYXBpdGFsaXplKCkpO1xyXG4gICAgICAgICAgICAgICAgaWYoJC5pbkFycmF5KHN0ZXBOYW1lLE9wdHMuZXhjbHVkZUxvYWRlZCk9PS0xKXtcclxuICAgICAgICAgICAgICAgICAgICBPcHRzLmxvYWRlZC5wdXNoKHN0ZXBOYW1lKTtcclxuICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdleGNsdWRlZCBWaWV3Jyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb250YWluZXIuaHRtbChyZXN1bHQpO1xyXG4gICAgICAgICAgICAgICAgaWYoT3B0cy5ub3dMb2FkZWQpe1xyXG4gICAgICAgICAgICAgICAgICAgIE9wdHMubm93TG9hZGVkKHN0ZXBOYW1lKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIE9wdHMub25BZnRlckxvYWQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2xlYXJMb2FkZWQ9ZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIE9wdHMubG9hZGVkPVsnc3VwcGxpZXInXTtcclxuICAgICAgICAkKCcuc3RlcENvbnRhaW5lcicpLmVhY2goZnVuY3Rpb24oKXtcclxuLypcclxuICAgICAgICAgICAgY29uc29sZS5sb2codGhpcy5jbGFzc0xpc3QpO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLmNsYXNzTGlzdC5jb250YWlucygnU0NTdXBwbGllcicpKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJCh0aGlzKS5hdHRyKCdjbGFzcycpKTtcclxuKi9cclxuICAgICAgICAgICAgaWYoIXRoaXMuY2xhc3NMaXN0LmNvbnRhaW5zKCdTQ1N1cHBsaWVyJykpe1xyXG4gICAgICAgICAgICAgICAgJCh0aGlzKS5odG1sKCcnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2V0QWN0aXZlRmluaXNoPWZ1bmN0aW9uKHN0ZXBOYW1lKXtcclxuICAgICAgICBsZXQgY29udGFpbmVyPSQoJy5TQycrc3RlcE5hbWUuY2FwaXRhbGl6ZSgpKTtcclxuICAgICAgICBpZihzdGVwTmFtZT09PSdwcm9kdWN0U2VsZWN0Jyl7XHJcbiAgICAgICAgICAgICQoJy5jb250YWluZXJTdGVwcGVyJykuYWRkQ2xhc3MoJ2FjdGl2ZVNpZGVCYXInKTtcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgJCgnLmNvbnRhaW5lclN0ZXBwZXInKS5yZW1vdmVDbGFzcygnYWN0aXZlU2lkZUJhcicpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBkZWJ1Zygnc2V0QWN0aXZlRmluaXNoIHNob3c6JytzdGVwTmFtZSk7XHJcbiAgICAgICAgY29udGFpbmVyLnNob3coKTtcclxuICAgICAgICBPcHRzLm5vd0xvYWRlZD1mYWxzZTtcclxuICAgICAgICByb290LmFjdGl2ZT1zdGVwTmFtZTtcclxuICAgICAgICBPcHRzLm9uQWZ0ZXJBY3RpdmF0ZSgpO1xyXG4gICAgICAgIGlmKHR5cGVvZiBPcHRzLmF1dG9DYWxsYmFja1tzdGVwTmFtZV0hPT0ndW5kZWZpbmVkJyApe1xyXG4gICAgICAgICAgICBPcHRzLmF1dG9DYWxsYmFja1tzdGVwTmFtZV0ub25BZnRlckFjdGl2YXRlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRBY3RpdmU9ZnVuY3Rpb24oc3RlcE5hbWUpe1xyXG4gICAgICAgICQoJy5zdGVwQ29udGFpbmVyJykuaGlkZSgpO1xyXG4gICAgICAgIGlmKCFPcHRzLmxvYWRlZC5pbmNsdWRlcyhzdGVwTmFtZSkpe1xyXG4gICAgICAgICAgICByb290LmxvYWRTdGVwQ29udGVudChzdGVwTmFtZSk7XHJcbiAgICAgICAgICAgIE9wdHMubm93TG9hZGVkPXRoaXMuc2V0QWN0aXZlRmluaXNoO1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICB0aGlzLnNldEFjdGl2ZUZpbmlzaChzdGVwTmFtZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc3RlcENsaWNrPWZ1bmN0aW9uKGV2ZW50KXtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGxldCBzdGVwTmFtZT0kKGV2ZW50LmN1cnJlbnRUYXJnZXQpLmRhdGEoJ3N0ZXBuYW1lJyk7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ3NldEFjdGl2ZTonK3N0ZXBOYW1lKTtcclxuICAgICAgICByb290LnNldEFjdGl2ZShzdGVwTmFtZSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbndpbmRvdy5PcmRlck1vZHVsZSA9IGZ1bmN0aW9uICgpIHtcclxuXHJcbiAgICAvKlxyXG4gICAgICogVmFyaWFibGVzIGFjY2Vzc2libGVcclxuICAgICAqIGluIHRoZSBjbGFzc1xyXG4gICAgICovXHJcbiAgICBsZXQgT3B0cyA9IHtcclxuICAgICAgICB0ZXN0TW9kZTogZmFsc2UsXHJcbiAgICAgICAgbmVlZFN0ZXBwZXI6dHJ1ZSxcclxuICAgICAgICBDU1NTZWxlY3RvckZvcm06Jy5vcmRlclBhcmFtZXRlckZvcm0nLFxyXG4gICAgICAgIGRlZmF1bHREZWxpdmVyeURhdGU6JycsXHJcbiAgICAgICAgZGF0YVN5bmNQYXVzZVRpbWU6NTAwLFxyXG4gICAgICAgIHRva2VuOm51bGwsXHJcbiAgICAgICAgVVJMOiB7XHJcbiAgICAgICAgICAgIHJvb3Q6bnVsbCxcclxuICAgICAgICAgICAgZ2V0RGF0YVRhYmxlQ29udGVudFByb2R1Y3RMaXN0Om51bGwsXHJcbiAgICAgICAgICAgIGNoZWNrUmVhZHlUb1NlbmQ6bnVsbCxcclxuICAgICAgICAgICAgaW5kZXg6bnVsbCxcclxuICAgICAgICAgICAgc2hvdzpudWxsLFxyXG4gICAgICAgICAgICBlZGl0Om51bGwsXHJcbiAgICAgICAgICAgIGNyZWF0ZTogbnVsbCxcclxuICAgICAgICAgICAgc3RvcmU6IG51bGwsXHJcbiAgICAgICAgICAgIHVwZGF0ZTpudWxsLFxyXG4gICAgICAgICAgICBkZXN0cm95Om51bGwsXHJcbiAgICAgICAgICAgIHRvZ2dsZUZhdm9yaXRlczpudWxsLFxyXG4gICAgICAgIH0sXHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IFB1YmxpY1ZhciA9IHt9O1xyXG4gICAgbGV0IFB1YmxpY1ZhcjIgPSB7J2FzZCc6ICcyMSd9O1xyXG4gICAgbGV0IEFwaVRva2VuID0gbnVsbDtcclxuICAgIGxldCBPcmRlcj1udWxsO1xyXG4gICAgbGV0IHJvb3QgPSB0aGlzO1xyXG4gICAgbGV0IHZpZXdJbmljaWFsaXplZD1bXTtcclxuXHJcbiAgICB0aGlzLnNldE9wdHMgPSBmdW5jdGlvbiAob3B0aW9ucykge1xyXG4gICAgICAgICQuZXh0ZW5kKE9wdHMsIG9wdGlvbnMpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZ2V0T3B0cyA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gT3B0cztcclxuICAgIH1cclxuICAgIHRoaXMuY2xpY2tPcmRlckVkaXQ9ZnVuY3Rpb24gKGRhdGEpe1xyXG4gICAgICAgIGRlYnVnKCdjbGlja0VkaXQnKTtcclxuICAgICAgICBkZWJ1ZyhkYXRhKTtcclxuICAgICAgICBsZXQgYWpheFVybD1PcHRzLlVSTC5lZGl0LnJlcGxhY2UoJyVpZCUnLGRhdGEuaWQpO1xyXG4gICAgICAgIEFQUC5sb2FkTWFpbkNvbnRlbnQoYWpheFVybCk7XHJcbi8qICAgICAgICBsZXQgYWpheERhdGE9e307XHJcbiAgICAgICAgYWpheERhdGEuX3Rva2VuPU9wdHMudG9rZW47XHJcbiAgICAgICAgJC5leHRlbmQoYWpheERhdGEsT3JkZXIpO1xyXG4gICAgICAgIGxldCBhamF4VXJsPU9wdHMuVVJMLmVkaXQucmVwbGFjZSgnJWlkJScsZGF0YS5pZCk7XHJcbiAgICAgICAgJC5hamF4KHtcclxuICAgICAgICAgICAgdXJsOiBhamF4VXJsLFxyXG4gICAgICAgICAgICBtZXRob2Q6J0dFVCcsXHJcbiAgICAgICAgICAgIGRhdGE6YWpheERhdGEsXHJcbiAgICAgICAgICAgIHN1Y2Nlc3M6ZnVuY3Rpb24gKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5zdWNjZXNzKXtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgb3JkZXJEYXRhPXJlc3BvbnNlLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgb3JkZXJEYXRhLnN1cHBsaWVySWQ9b3JkZXJEYXRhLnN1cHBsaWVyX2lkO1xyXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZShvcmRlckRhdGEuc3VwcGxpZXJfaWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJvb3QuaW5pdE9yZGVyKG9yZGVyRGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcm9vdC5pbml0U3RlcHBlcigpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vcm9vdC5hZnRlck9yZGVyU2V0U3VwcGxpZXJPayhkYXRhLmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7Ki9cclxuXHJcblxyXG4gICAgfVxyXG4gICAgdGhpcy5hZnRlck9yZGVyRGVsZXRlZD1mdW5jdGlvbiAoZGF0YSl7XHJcbiAgICAgICAgaWYoZGF0YS5zdWNjZXNzPT10cnVlKXtcclxuICAgICAgICAgICAgZGVidWcoJ09yZGVyIGRlbGV0ZSBzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgIEFQUC5sb2FkTWFpbkNvbnRlbnQoT3B0cy5VUkwuaW5kZXgpO1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICBUb2FzdC5jcmVhdGUoXCJFcnJvciBkZWxldGVkICFcIiwnJywgVE9BU1RfU1RBVFVTLkRBTkdFUiw1MDAwKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmNsaWNrT3JkZXJEZWxldGVDb25maXJtZWQ9ZnVuY3Rpb24gKGV2ZW50KXtcclxuICAgICAgICBkZWJ1ZygnY2xpY2tPcmRlckRlbGV0ZUNvbmZpcm1lZCcpO1xyXG4gICAgICAgIGRlYnVnKGV2ZW50KTtcclxuICAgICAgICBkZWJ1ZyhldmVudC5kYXRhKTtcclxuICAgICAgICAkKCcjZGlhbG9nTW9kYWwnKS5tb2RhbCgnaGlkZScpO1xyXG4gICAgICAgIGxldCBhamF4RGF0YT17fTtcclxuICAgICAgICBhamF4RGF0YS5fdG9rZW49T3B0cy50b2tlbjtcclxuICAgICAgICBsZXQgYWpheFVybD1PcHRzLlVSTC5kZXN0cm95LnJlcGxhY2UoJyVpZCUnLGV2ZW50LmRhdGEuaWQpO1xyXG4gICAgICAgICQuYWpheCh7XHJcbiAgICAgICAgICAgIHVybDphamF4VXJsLFxyXG4gICAgICAgICAgICBkYXRhOmFqYXhEYXRhLFxyXG4gICAgICAgICAgICBtZXRob2Q6XCJERUxFVEVcIixcclxuICAgICAgICAgICAgc3VjY2Vzczpyb290LmFmdGVyT3JkZXJEZWxldGVkLFxyXG4gICAgICAgICAgICAvL2Vycm9yOmFqYXhFcnJvckhhbmRsZXJcclxuICAgICAgICB9KTtcclxuXHJcbiAgICB9XHJcbiAgICB0aGlzLmluaXRWaWV3T3JkZXJTZWxlY3Q9ZnVuY3Rpb24gKCl7XHJcbiAgICAgICAgZGVidWcoJ2NhbGxlZCBpbml0Vmlld09yZGVyU2VsZWN0ICcpO1xyXG4gICAgICAgICQoJy5vcmRlcnNTZWxlY3RUYWJsZSBidXR0b24nKS5vZmYoJ2NsaWNrJyk7XHJcbiAgICAgICAgJCgnLm9yZGVyc1NlbGVjdFRhYmxlIGJ1dHRvbicpLm9uKCdjbGljaycsZnVuY3Rpb24gKCl7XHJcbiAgICAgICAgICAgIGxldCBhY3Rpb249JCh0aGlzKS5kYXRhKCdhY3Rpb24nKTtcclxuICAgICAgICAgICAgbGV0IG9yZGVySWQ9JCgkKHRoaXMpLmNsb3Nlc3QoJ3RyJylbMF0pLmRhdGEoJ29yZGVyaWQnKTtcclxuICAgICAgICAgICAgZGVidWcoYWN0aW9uKTtcclxuICAgICAgICAgICAgZGVidWcob3JkZXJJZCk7XHJcblxyXG4gICAgICAgICAgICBpZihhY3Rpb249PSdkZWxldGUnKXtcclxuICAgICAgICAgICAgICAgICQoJyNkaWFsb2dNb2RhbCcpLm9uKCdzaG93LmJzLm1vZGFsJywgZnVuY3Rpb24gKGV2ZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgbmVjZXNzYXJ5LCB5b3UgY291bGQgaW5pdGlhdGUgYW4gQUpBWCByZXF1ZXN0IGhlcmUgKGFuZCB0aGVuIGRvIHRoZSB1cGRhdGluZyBpbiBhIGNhbGxiYWNrKS5cclxuICAgICAgICAgICAgICAgICAgICAvLyBVcGRhdGUgdGhlIG1vZGFsJ3MgY29udGVudC4gV2UnbGwgdXNlIGpRdWVyeSBoZXJlLCBidXQgeW91IGNvdWxkIHVzZSBhIGRhdGEgYmluZGluZyBsaWJyYXJ5IG9yIG90aGVyIG1ldGhvZHMgaW5zdGVhZC5cclxuICAgICAgICAgICAgICAgICAgICB2YXIgbW9kYWwgPSAkKHRoaXMpO1xyXG4gICAgICAgICAgICAgICAgICAgIG1vZGFsLmZpbmQoJy5tb2RhbC10aXRsZScpLnRleHQoJ01lZ2VyxZFzw610w6lzICcpO1xyXG4gICAgICAgICAgICAgICAgICAgIG1vZGFsLmZpbmQoJy5tb2RhbC1ib2R5JykudGV4dCgnQml6dG9zYW4gdMO2cmxpIGEgbWVncmVuZGVsw6lzdD8nKTtcclxuICAgICAgICAgICAgICAgICAgICBtb2RhbC5maW5kKCcuYnV0dG9uWWVzJykub2ZmKCdjbGljaycpO1xyXG4gICAgICAgICAgICAgICAgICAgIG1vZGFsLmZpbmQoJy5idXR0b25ZZXMnKS5vbignY2xpY2snLHtpZDpvcmRlcklkfSxyb290LmNsaWNrT3JkZXJEZWxldGVDb25maXJtZWQpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAkKCcjZGlhbG9nTW9kYWwnKS5tb2RhbCgnc2hvdycpO1xyXG4gICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgIHJvb3QuY2xpY2tPcmRlckVkaXQoe2lkOm9yZGVySWR9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgICQoJy5idXR0b25OZXcnKS5vZmYoJ2NsaWNrJyk7XHJcbiAgICAgICAgJCgnLmJ1dHRvbk5ldycpLm9uKCdjbGljaycsZnVuY3Rpb24gKCl7XHJcbiAgICAgICAgICAgIEFQUC5sb2FkTWFpbkNvbnRlbnQoT3B0cy5VUkwuaW5kZXgsJ2ZvcmNlPXRydWUnKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICB9XHJcbiAgICB0aGlzLmluaXRTdGVwcGVyPWZ1bmN0aW9uICgpe1xyXG4gICAgICAgIGRlYnVnKE9yZGVyLmdldERhdGEoKSk7XHJcbiAgICAgICAgdmlld0luaWNpYWxpemVkPVtdO1xyXG4gICAgICAgICQoJy5zdGF0dXNOYW1lUGxhY2UnKS50ZXh0KCdOaW5jcyBlbGvDvGxkdmUnKTtcclxuICAgICAgICAkKCcuc3RhdHVzTmFtZVBsYWNlJykuYWRkQ2xhc3MoJ3N0YXR1c0JsaW5rJyk7XHJcbiAgICAgICAgcm9vdC5zZXREZWxpdmVyeURhdGUoJy0nKTtcclxuICAgICAgICByb290LnNldFN1cHBsaWVyKCctJyk7XHJcblxyXG4gICAgICAgIGxldCB1bkVuYWJsZWQ9WydwYXJhbWV0ZXInLCAncHJvZHVjdFNlbGVjdCcsICdpbnZvaWNlJywgJ3NlbmQnXTtcclxuICAgICAgICAkLmVhY2godW5FbmFibGVkLGZ1bmN0aW9uIChpbmRleCx2YWx1ZSkge1xyXG4gICAgICAgICAgICByb290LlN0ZXBwZXIudW5zZXRFbmFibGVkKHZhbHVlKTtcclxuICAgICAgICAgICAgcm9vdC5TdGVwcGVyLnVuc2V0Q29tcGxldGVkKHZhbHVlKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgZGVidWcocm9vdC5TdGVwcGVyLmdldE9wdHMoKVsnYXZhaWxhYmxlJ10pO1xyXG4gICAgICAgIGRlYnVnKE9yZGVyLmdldERhdGEoKVsnb3JkZXJTdGF0dXMnXSk7XHJcblxyXG4gICAgICAgIGxldCBzdGVwQWN0aXZlPSdzdXBwbGllcic7XHJcbiAgICAgICAgbGV0IHN0ZXBDb21wbGV0ZT1bJ3N1cHBsaWVyJ107XHJcbiAgICAgICAgbGV0IHN0ZXBFbmFibGU9W107XHJcbiAgICAgICAgbGV0IHN0ZXBPbkFmdGVyQWN0aXZhdGU9ZnVuY3Rpb24gKCl7fTtcclxuXHJcbiAgICAgICAgbGV0IGF2YWxhaWJsZVN0ZXBzPXJvb3QuU3RlcHBlci5nZXRPcHRzKClbJ2F2YWlsYWJsZSddO1xyXG4gICAgICAgIGxldCBzdGVwVXJsRGF0YT1mYWxzZTtcclxuICAgICAgICBsZXQgc3RlcEF1dG9DYWxsYmFjaz1bXTtcclxuICAgICAgICBmb3IgKGxldCBzdGVwTmFtZSBvZiBhdmFsYWlibGVTdGVwcykge1xyXG4gICAgICAgICAgICBzdGVwT25BZnRlckFjdGl2YXRlPXRoaXNbJ2luaXRWaWV3JytzdGVwTmFtZS5jYXBpdGFsaXplKCldO1xyXG4gICAgICAgICAgICBsZXQgaXRlbT17fTtcclxuICAgICAgICAgICAgaXRlbVsnb25BZnRlckFjdGl2YXRlJ109c3RlcE9uQWZ0ZXJBY3RpdmF0ZTtcclxuICAgICAgICAgICAgc3RlcEF1dG9DYWxsYmFja1tzdGVwTmFtZV09aXRlbTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZGVidWcoc3RlcEF1dG9DYWxsYmFjayk7XHJcbiAgICAgICAgZGVidWcoT3JkZXIuZ2V0RGF0YSgpWydpZCddKTtcclxuICAgICAgICBpZihPcmRlci5nZXREYXRhKClbJ2lkJ10+MCl7XHJcbiAgICAgICAgICAgIGRlYnVnKCdoYWpyYScpO1xyXG4gICAgICAgICAgICBkZWJ1ZyhPcmRlci5nZXREYXRhKCkpO1xyXG4gICAgICAgICAgICBpZihPcmRlci5nZXREYXRhKClbJ2RlbGl2ZXJ5RGF0ZSddKXtcclxuICAgICAgICAgICAgICAgIHJvb3Quc2V0RGVsaXZlcnlEYXRlKE9yZGVyLmdldERhdGEoKVsnZGVsaXZlcnlEYXRlJ10pO1xyXG4gICAgICAgICAgICAgICAgLypcclxuICAgICAgICAgICAgICAgIEB0b2RvOiB3ZWVrbHktdCBiZWFsbGl0YW5pXHJcbiAgICAgICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZihPcmRlci5nZXREYXRhKClbJ3N1cHBsaWVyTmFtZSddKXtcclxuICAgICAgICAgICAgICAgIHJvb3Quc2V0U3VwcGxpZXIoT3JkZXIuZ2V0RGF0YSgpWydzdXBwbGllck5hbWUnXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgc3RlcFVybERhdGE9eydzdXBwbGllcklkJzpPcmRlci5zdXBwbGllcklkLGlkOk9yZGVyLmlkfTtcclxuICAgICAgICAgICAgZm9yIChsZXQgc3RlcE5hbWUgb2YgYXZhbGFpYmxlU3RlcHMpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHN0ZXBOYW1lKTtcclxuICAgICAgICAgICAgICAgIHN0ZXBDb21wbGV0ZS5wdXNoKHN0ZXBOYW1lKTtcclxuICAgICAgICAgICAgICAgIHN0ZXBFbmFibGUucHVzaChzdGVwTmFtZSk7XHJcbiAgICAgICAgICAgICAgICBpZihPcmRlci5nZXREYXRhKClbJ29yZGVyU3RhdHVzJ109PXN0ZXBOYW1lKXtcclxuICAgICAgICAgICAgICAgICAgICBzdGVwQWN0aXZlPXN0ZXBOYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgIC8qXHJcbiAgICAgICAgICAgICAgICAgICAgZGVidWcoJ2luaXRWaWV3JytzdGVwTmFtZS5jYXBpdGFsaXplKCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHN0ZXBOYW1lIT09J2ludm9pY2UnICYmIHN0ZXBOYW1lIT09J3NlbmQnKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RlcE9uQWZ0ZXJBY3RpdmF0ZT10aGlzWydpbml0Vmlldycrc3RlcE5hbWUuY2FwaXRhbGl6ZSgpXTtcclxuICAgICAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RlcE9uQWZ0ZXJBY3RpdmF0ZT1mdW5jdGlvbiAoKXt9O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4vKlxyXG4gICAgICAgICAgICAvL3JlZmFjdG9yZWQgZm9yIGxvb3BcclxuICAgICAgICAgICAgdmFyIEJyZWFrRXhjZXB0aW9uID0ge307XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBhdmFsYWlibGVTdGVwcy5mb3JFYWNoKGZ1bmN0aW9uKHN0ZXBOYW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coc3RlcE5hbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHN0ZXBDb21wbGV0ZS5wdXNoKHN0ZXBOYW1lKTtcclxuICAgICAgICAgICAgICAgICAgICBzdGVwRW5hYmxlLnB1c2goc3RlcE5hbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKE9yZGVyLmdldERhdGEoKVsnb3JkZXJTdGF0dXMnXT09c3RlcE5hbWUpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGVwQWN0aXZlPXN0ZXBOYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBCcmVha0V4Y2VwdGlvbjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIGlmIChlICE9PSBCcmVha0V4Y2VwdGlvbikgdGhyb3cgZTtcclxuICAgICAgICAgICAgfSovXHJcblxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcm9vdC5TdGVwcGVyLmluaXQoe1xyXG4gICAgICAgICAgICBjb21wbGV0ZTpzdGVwQ29tcGxldGUsXHJcbiAgICAgICAgICAgIGVuYWJsZTpzdGVwRW5hYmxlLFxyXG4gICAgICAgICAgICBsb2FkZWQ6W10sXHJcbiAgICAgICAgICAgIGFjdGl2ZTogc3RlcEFjdGl2ZSxcclxuICAgICAgICAgICAgVVJMOiB7XHJcbiAgICAgICAgICAgICAgICBjcmVhdGU6IE9wdHMuVVJMLmNyZWF0ZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgVXJsRGF0YTpzdGVwVXJsRGF0YSxcclxuICAgICAgICAgICAgb25BZnRlckFjdGl2YXRlOnN0ZXBPbkFmdGVyQWN0aXZhdGUsXHJcbiAgICAgICAgICAgIGF1dG9DYWxsYmFjazogc3RlcEF1dG9DYWxsYmFjayxcclxuICAgICAgICAgICAgLyp7XHJcbiAgICAgICAgICAgICAgICBpbnZvaWNlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgb25BZnRlckFjdGl2YXRlOnJvb3QuaW5pdFZpZXdJbnZvaWNlXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgc2VuZDoge1xyXG4gICAgICAgICAgICAgICAgICAgIG9uQWZ0ZXJBY3RpdmF0ZTpyb290LmluaXRWaWV3U2VuZFxyXG4gICAgICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICAgIH0qL1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaW5pdE9yZGVyPWZ1bmN0aW9uIChkYXRhKXtcclxuICAgICAgICBPcmRlcj1uZXcgRGF0YU1vZGVsT3JkZXIoZGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pbml0ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcclxuICAgICAgICBkZWJ1ZygnT3JkZXJNb2R1bCBpbml0IGNhbGxlZCcpO1xyXG4gICAgICAgICQuZXh0ZW5kKE9wdHMsIHdpbmRvdy5PcmRlck1vZHVsRGVmYXVsdCwgb3B0aW9ucyk7XHJcbiAgICAgICAgT3JkZXI9bmV3IERhdGFNb2RlbE9yZGVyKCk7XHJcbiAgICAgICAgaWYoT3B0cy5uZWVkU3RlcHBlcil7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5TdGVwcGVyID09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLlN0ZXBwZXI9bmV3IFN0ZXBwZXIoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZihPcHRzLnRlc3RNb2RlKXtcclxuICAgICAgICAgICAgcmV0dXJuIHJvb3QudGVzdE1vZGUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZXRTdXBwbGllcj1mdW5jdGlvbiAoc3VwcGxpZXJOYW1lLHN1cHBsaWVySWQpe1xyXG4gICAgICAgaWYoc3VwcGxpZXJOYW1lKXtcclxuICAgICAgICAgICAkKCcuc3VwcGxpZXJOYW1lUGxhY2UnKS50ZXh0KHN1cHBsaWVyTmFtZSk7XHJcbiAgICAgICB9XHJcbiAgICAgICBpZihzdXBwbGllcklkKXtcclxuICAgICAgICAgICBPcmRlci5zZXREYXRhKHtzdXBwbGllcklkOnN1cHBsaWVySWR9KTtcclxuICAgICAgICAgICByb290LlN0ZXBwZXIuc2V0T3B0cyh7J1VybERhdGEnOnsnc3VwcGxpZXJJZCc6c3VwcGxpZXJJZH19KTtcclxuICAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuc2V0RGVsaXZlcnlEYXRlPWZ1bmN0aW9uIChkYXRlVGV4dCxkYXRlVGV4dFRvKXtcclxuICAgICAgICBsZXQgZGF0ZVRleHRIdW1hbj1kYXRlVGV4dC5yZXBsYWNlQWxsKCctJywnLicpKycuJztcclxuICAgICAgICBpZihkYXRlVGV4dEh1bWFuLmxlbmd0aDw1KXtcclxuICAgICAgICAgICAgJCgnLmRlbGl2ZXJ5RGF0ZVBsYWNlJykudGV4dChkYXRlVGV4dCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYoZGF0ZVRleHRUbyl7XHJcbiAgICAgICAgICAgIGRhdGVUZXh0SHVtYW4rPScgLSAnK2RhdGVUZXh0VG8ucmVwbGFjZUFsbCgnLScsJy4nKSsnLic7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAkKE9wdHMuQ1NTU2VsZWN0b3JGb3JtKycgLnNlbGVjdGVkRGF0ZVRleHQnKS50ZXh0KGRhdGVUZXh0SHVtYW4pO1xyXG4gICAgICAgICQoJy5kZWxpdmVyeURhdGVQbGFjZScpLnRleHQoZGF0ZVRleHRIdW1hbik7XHJcbiAgICAgICAgJChPcHRzLkNTU1NlbGVjdG9yRm9ybSsnIGlucHV0W25hbWU9XCJkZWxpdmVyeURhdGVcIl0nKS52YWwoZGF0ZVRleHQpO1xyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgdGhpcy5nZXREYXRhPWZ1bmN0aW9uICgpe1xyXG4gICAgICAgIHJldHVybiBPcmRlcjtcclxuICAgIH1cclxuXHJcblxyXG4gICAgdGhpcy5zZXRTdXBwbGllckNvbXBsZXRlZD1mdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ2JpbmdvJyk7XHJcbiAgICAgICAgcm9vdC5pbml0Vmlld1BhcmFtZXRlcigpXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hZnRlck9yZGVyU2V0U3VwcGxpZXJPaz1mdW5jdGlvbiAoZGF0YSkge1xyXG4gICAgICAgIFRvYXN0LmNyZWF0ZShcIlN1cHBsaWVyIHNlbGVjdGVkICFcIixkYXRhLnN1cHBsaWVyLm5hbWUgLCBUT0FTVF9TVEFUVVMuSU5GTyw1MDAwKTtcclxuICAgICAgICByb290LnNldFN1cHBsaWVyKGRhdGEuc3VwcGxpZXIubmFtZSxkYXRhLnN1cHBsaWVyLmlkKTtcclxuICAgICAgICBPcmRlci5zZXREYXRhKHtpZDpkYXRhLmlkfSk7XHJcbiAgICAgICAgcm9vdC5TdGVwcGVyLnNldE9wdHMoeydVcmxEYXRhJzp7J3N1cHBsaWVySWQnOk9yZGVyLnN1cHBsaWVySWQsaWQ6T3JkZXIuaWR9fSk7XHJcbiAgICAgICAgLy9yb290LlN0ZXBwZXIuc2V0T3B0cyh7b25BZnRlckxvYWQ6cm9vdC5zZXRTdXBwbGllckNvbXBsZXRlZH0pXHJcbiAgICAgICAgcm9vdC5TdGVwcGVyLnNldEVuYWJsZWQoJ3BhcmFtZXRlcicpO1xyXG4gICAgICAgIHJvb3QuU3RlcHBlci5hZGRDb21wbGV0ZWQoJ3BhcmFtZXRlcicpO1xyXG4gICAgICAgIHJvb3QuU3RlcHBlci5zZXRDb21wbGV0ZWQoJ3BhcmFtZXRlcicpO1xyXG4gICAgICAgIHJvb3QuU3RlcHBlci5zZXRBY3RpdmUoJ3BhcmFtZXRlcicpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICB0aGlzLmluaXRWaWV3U3VwcGxpZXI9ZnVuY3Rpb24gKCl7XHJcbiAgICAgICAgZGVidWcoJ2NhbGwgaW5pdFZpZXdTdXBwbGllcicpO1xyXG4gICAgICAgIHJvb3QuU3RlcHBlci5zZXRPcHRzKHtvbkFmdGVyTG9hZDpmdW5jdGlvbiAoKXt9fSk7XHJcbiAgICAgICAgJCgnLnN1cHBsaWVySXRlbScpLm9mZignY2xpY2snKTtcclxuICAgICAgICAkKCcuc3VwcGxpZXJJdGVtJykub24oJ2NsaWNrJyxmdW5jdGlvbihldmVudCl7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKE9yZGVyLmdldERhdGEoKSk7XHJcblxyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBsZXQgc3VwcGxpZXJJZD0kKGV2ZW50LmN1cnJlbnRUYXJnZXQpLmRhdGEoJ2lkJyk7XHJcbiAgICAgICAgICAgIGxldCBzdXBwbGllck5hbWU9JChldmVudC5jdXJyZW50VGFyZ2V0KS5maW5kKCdoNS5jYXJkLXRpdGxlJykudGV4dCgpO1xyXG4gICAgICAgICAgICBpZih0eXBlb2YgT3JkZXIuc3VwcGxpZXJJZD09J3VuZGVmaW5lZCcpe1xyXG4gICAgICAgICAgICAgICAgLy9uZXcgb3JkZXJcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgYWpheERhdGE9e307XHJcbiAgICAgICAgICAgICAgICBhamF4RGF0YS5fdG9rZW49T3B0cy50b2tlbjtcclxuICAgICAgICAgICAgICAgIGFqYXhEYXRhLnN1cHBsaWVySWQ9c3VwcGxpZXJJZDtcclxuICAgICAgICAgICAgICAgIGFqYXhEYXRhLnN0b3JlVHlwZT0nc3VwcGxpZXJTZWxlY3QnO1xyXG4gICAgICAgICAgICAgICAgJC5leHRlbmQoYWpheERhdGEsT3JkZXIpO1xyXG4gICAgICAgICAgICAgICAgJC5hamF4KHtcclxuICAgICAgICAgICAgICAgICAgICB1cmw6IE9wdHMuVVJMLnN0b3JlLFxyXG4gICAgICAgICAgICAgICAgICAgIG1ldGhvZDonUE9TVCcsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YTphamF4RGF0YSxcclxuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOmZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGRhdGEuc3VjY2Vzcyl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb290LmFmdGVyT3JkZXJTZXRTdXBwbGllck9rKGRhdGEuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIC8vT3JkZXIuc2V0RGF0YSh7c3VwcGxpZXJJZDpzdXBwbGllcklkfSk7XHJcbiAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgLy9pZGUga2VsbGVuZSBlZ3kgam8ga2lzIGtlcmRlc1xyXG4gICAgICAgICAgICAgICAgaWYoT3JkZXIuc3VwcGxpZXJJZCE9c3VwcGxpZXJJZCl7XHJcbiAgICAgICAgICAgICAgICAgICAgVG9hc3QuY3JlYXRlKFwiU3VwcGxpZXIgY2hhbmdlIHRvIVwiLCBzdXBwbGllck5hbWUsIFRPQVNUX1NUQVRVUy5XQVJOSU5HLDUwMDApO1xyXG4gICAgICAgICAgICAgICAgICAgIHJvb3QuU3RlcHBlci5jbGVhckxvYWRlZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIE9yZGVyPW5ldyBEYXRhTW9kZWxPcmRlcigpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vT3JkZXIuc2V0RGF0YSh7c3VwcGxpZXJJZDpzdXBwbGllcklkfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJy0tLS0tLS0tLS0tJyk7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKHJvb3QuU3RlcHBlci5nZXRPcHRzKCkpO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnLS0tLS0tLS0tLS0nKTtcclxuXHJcbiAgICAgICAgICAgIC8vJCgnLnN1cHBsaWVyTmFtZVBsYWNlJykudGV4dChzdXBwbGllck5hbWUpO1xyXG4gICAgICAgICAgICByb290LnNldFN1cHBsaWVyKHN1cHBsaWVyTmFtZSxzdXBwbGllcklkKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coc3VwcGxpZXJOYW1lKVxyXG4gICAgICAgICAgICAvL0B0b2RvOmlkZSBrZWxsIGVneSBtZW50ZXMhXHJcbiAgICAgICAgICAgIC8vQHRvZG86bWVudGVzIGVyZWRlbWVueWVrZXBwZW4gbGVoZXQgdmFsdGFuaVxyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICByb290LlN0ZXBwZXIuc2V0T3B0cyh7b25BZnRlckxvYWQ6cm9vdC5zZXRTdXBwbGllckNvbXBsZXRlZH0pXHJcbiAgICAgICAgICAgIHJvb3QuU3RlcHBlci5zZXRFbmFibGVkKCdwYXJhbWV0ZXInKTtcclxuICAgICAgICAgICAgcm9vdC5TdGVwcGVyLmFkZENvbXBsZXRlZCgncGFyYW1ldGVyJyk7XHJcbiAgICAgICAgICAgIHJvb3QuU3RlcHBlci5zZXRDb21wbGV0ZWQoJ3BhcmFtZXRlcicpO1xyXG4gICAgICAgICAgICByb290LlN0ZXBwZXIuc2V0QWN0aXZlKCdwYXJhbWV0ZXInKTtcclxuXHJcblxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2hlY2tDb250YWN0TmFtZUZpZWxkPWZ1bmN0aW9uICgpIHtcclxuICAgICAgICBsZXQgQ1NTU2VsZWN0b3JGb3JtPScub3JkZXJQYXJhbWV0ZXJGb3JtJztcclxuICAgICAgICBsZXQgbm9kZT0kKENTU1NlbGVjdG9yRm9ybSsnIGlucHV0W25hbWU9Y29udGFjdE5hbWVdJyk7XHJcbiAgICAgICAgaWYobm9kZS52YWwoKS5sZW5ndGg8Mil7XHJcbiAgICAgICAgICAgIG5vZGUucmVtb3ZlQ2xhc3MoJ2lzLXZhbGlkJyk7XHJcbiAgICAgICAgICAgIG5vZGUuYWRkQ2xhc3MoJ2lzLWludmFsaWQnKTtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICBub2RlLmFkZENsYXNzKCdpcy12YWxpZCcpO1xyXG4gICAgICAgICAgICBub2RlLnJlbW92ZUNsYXNzKCdpcy1pbnZhbGlkJyk7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIHRoaXMuc2VuZE9yZGVyRGF0YVRvU2VydmVyPWZ1bmN0aW9uICh1cGRhdGVUeXBlLGNhbGxiYWNrLGVycm9yQ2FsbGJhY2spIHtcclxuICAgICAgICBsZXQgYWpheERhdGE9IHt9O1xyXG4gICAgICAgIGxldCBhamF4VXJsPU9wdHMuVVJMLnN0b3JlO1xyXG4gICAgICAgIGxldCBhamF4TWV0aG9kPVwiUE9TVFwiO1xyXG4gICAgICAgIGlmKE9yZGVyLmlkKXtcclxuICAgICAgICAgICAgYWpheFVybD1PcHRzLlVSTC51cGRhdGUucmVwbGFjZSgnJWlkJScsT3JkZXIuaWQpO1xyXG4gICAgICAgICAgICAvL2FqYXhNZXRob2Q9XCJQVVRcIjtcclxuICAgICAgICAgICAgLy9hamF4RGF0YT1uZXcgRm9ybURhdGEoJChDU1NTZWxlY3RvckZvcm0pWzBdKTtcclxuICAgICAgICAgICAgYWpheERhdGEuX21ldGhvZD0nUFVUJztcclxuICAgICAgICB9XHJcbiAgICAgICAgYWpheERhdGEuX3Rva2VuPU9wdHMudG9rZW47XHJcbiAgICAgICAgYWpheERhdGEudXBkYXRlVHlwZT11cGRhdGVUeXBlO1xyXG4gICAgICAgICQuZXh0ZW5kKGFqYXhEYXRhLE9yZGVyKTtcclxuICAgICAgICBkZWJ1ZyhPcmRlcik7XHJcbiAgICAgICAgZGVidWcoYWpheERhdGEpO1xyXG4gICAgICAgIGRlYnVnKCdhamF4VXJsOicrYWpheFVybCk7XHJcbiAgICAgICAgYWpheERhdGE9anNvblRvRm9ybURhdGEoYWpheERhdGEpO1xyXG4gICAgICAgICQuYWpheCh7XHJcbiAgICAgICAgICAgIHVybDphamF4VXJsLFxyXG4gICAgICAgICAgICBkYXRhOmFqYXhEYXRhLFxyXG4gICAgICAgICAgICB0eXBlOmFqYXhNZXRob2QsXHJcbiAgICAgICAgICAgIGNvbnRlbnRUeXBlOmZhbHNlLFxyXG4gICAgICAgICAgICBwcm9jZXNzRGF0YTogZmFsc2UsXHJcbiAgICAgICAgICAgIHN1Y2Nlc3M6ZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgIGRlYnVnKCdhamF4IHJldHVybmVkIGRhdGEnKTtcclxuICAgICAgICAgICAgICAgIGRlYnVnKGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgaWYoZGF0YS5zdWNjZXNzKXtcclxuICAgICAgICAgICAgICAgICAgICAvL3Jvb3QuYWZ0ZXJPcmRlclNldFN1cHBsaWVyT2soZGF0YS5kYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhkYXRhKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uICh4aHIsIGFqYXhPcHRpb25zLCB0aHJvd25FcnJvcikge1xyXG4gICAgICAgICAgICAgICAgYWpheEVycm9ySGFuZGxlcih4aHIsIGFqYXhPcHRpb25zLCB0aHJvd25FcnJvcik7XHJcbiAgICAgICAgICAgICAgICBpZih0eXBlb2YgZXJyb3JDYWxsYmFjayE9J3VuZGVmaW5lZCcpe1xyXG4gICAgICAgICAgICAgICAgICAgIGVycm9yQ2FsbGJhY2soeGhyLnJlc3BvbnNlSlNPTik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgIH1cclxuICAgIHRoaXMuYWZ0ZXJPcmRlclNldFBhcmFtZXRlck9rPWZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgZGVidWcoJ2NhbGxlZCBhZnRlck9yZGVyU2V0UGFyYW1ldGVyT2snKTtcclxuICAgICAgICByb290LlN0ZXBwZXIuc2V0T3B0cyh7J1VybERhdGEnOnsnc3VwcGxpZXJJZCc6T3JkZXIuc3VwcGxpZXJJZCwnaWQnOk9yZGVyLmlkfX0pO1xyXG4gICAgICAgIC8vcm9vdC5TdGVwcGVyLnNldE9wdHMoe29uQWZ0ZXJMb2FkOnJvb3Quc2V0UGFyYW1ldGVyQ29tcGxldGVkfSlcclxuICAgICAgICByb290LlN0ZXBwZXIuc2V0RW5hYmxlZCgncHJvZHVjdFNlbGVjdCcpO1xyXG4gICAgICAgIHJvb3QuU3RlcHBlci5hZGRDb21wbGV0ZWQoJ3Byb2R1Y3RTZWxlY3QnKTtcclxuICAgICAgICByb290LlN0ZXBwZXIuc2V0Q29tcGxldGVkKCdwcm9kdWN0U2VsZWN0Jyk7XHJcbiAgICAgICAgcm9vdC5TdGVwcGVyLnNldEFjdGl2ZSgncHJvZHVjdFNlbGVjdCcpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZWxlY3RDdXJyZW50V2VlayA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ3NlbGVjdEN1cnJlbnRXZWVrJyk7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcigkKCcudWktZGF0ZXBpY2tlcicpLmZpbmQoJy51aS1kYXRlcGlja2VyLWN1cnJlbnQtZGF5IGEnKSk7XHJcbiAgICAgICAgJCgnLnVpLWRhdGVwaWNrZXInKS5maW5kKCcudWktZGF0ZXBpY2tlci1jdXJyZW50LXNlbGVjdGVkLXdlZWtkYXkgYScpLmFkZENsYXNzKCd1aS1zdGF0ZS1hY3RpdmUnKVxyXG4gICAgfVxyXG4gICAgdGhpcy53ZWVrSG92ZXIgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdob3ZlciBBY3RpdmUnKTtcclxuICAgICAgICAkKCcudWktZGF0ZXBpY2tlci1jYWxlbmRhciB0cicpLm9mZignbW91c2Vtb3ZlJyk7XHJcbiAgICAgICAgJCgnLnVpLWRhdGVwaWNrZXItY2FsZW5kYXIgdHInKS5vZmYoJ21vdXNlbGVhdmUnKTtcclxuXHJcbiAgICAgICAgJCgnLnVpLWRhdGVwaWNrZXItY2FsZW5kYXIgdHInKS5vbignbW91c2Vtb3ZlJywgZnVuY3Rpb24oKSB7ICQodGhpcykuZmluZCgndGQgYScpLmFkZENsYXNzKCd1aS1zdGF0ZS1ob3ZlcicpOyB9KTtcclxuICAgICAgICAkKCcudWktZGF0ZXBpY2tlci1jYWxlbmRhciB0cicpLm9uKCdtb3VzZWxlYXZlJywgZnVuY3Rpb24oKSB7ICQodGhpcykuZmluZCgndGQgYScpLnJlbW92ZUNsYXNzKCd1aS1zdGF0ZS1ob3ZlcicpOyB9KTtcclxuXHJcbiAgICB9XHJcbiAgICB0aGlzLndlZWtIb3ZlclNsb3cgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCd3ZWVrSG92ZXJTbG93Jyk7XHJcbiAgICAgICAgaWYoJCgnLnVpLWRhdGVwaWNrZXItY2FsZW5kYXIgdHInKS5sZW5ndGg8MSl7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQocm9vdC53ZWVrSG92ZXJTbG93LCAxKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICByb290LndlZWtIb3ZlcigpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pbml0RGF0ZVBpY2tlcj1mdW5jdGlvbiAodHlwZSkge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ2FzZGFzZGFkYWQnKTtcclxuICAgICAgICBjb25zb2xlLmxvZygndGlwdXMnICsgdHlwZSk7XHJcbiAgICAgICAgbGV0IENTU1NlbGVjdG9yRm9ybSA9ICcub3JkZXJQYXJhbWV0ZXJGb3JtJztcclxuICAgICAgICBsZXQgc3RhcnREYXRlPW5ldyBEYXRlKCcxOTAwLTAxLTAxJyk7XHJcbiAgICAgICAgbGV0IGVuZERhdGU9bmV3IERhdGUoJzE5MDAtMDEtMDInKTtcclxuXHJcbiAgICAgICAgJChDU1NTZWxlY3RvckZvcm0gKyAnIC5kYXRlUGlja2VyJykuZGF0ZXBpY2tlcihcImRlc3Ryb3lcIik7XHJcblxyXG4gICAgICAgIGlmICh0eXBlID09ICd3ZWVrbHknKSB7XHJcbiAgICAgICAgICAgICQoQ1NTU2VsZWN0b3JGb3JtICsgJyAuZGF0ZVBpY2tlcicpLmRhdGVwaWNrZXIoe1xyXG4gICAgICAgICAgICAgICAgc2hvd090aGVyTW9udGhzOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgc2VsZWN0T3RoZXJNb250aHM6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBzaG93V2VlazogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGRhdGVGb3JtYXQ6ICd5eS1tbS1kZCcsXHJcbiAgICAgICAgICAgICAgICBmaXJzdERheTogMSxcclxuICAgICAgICAgICAgICAgIG1pbkRhdGU6IG5ldyBEYXRlKCksXHJcbiAgICAgICAgICAgICAgICBhZnRlclNob3c6IGZ1bmN0aW9uIChkYXRlVGV4dCwgaW5zdCkge1xyXG4gICAgICAgICAgICAgICAgICByb290LndlZWtIb3ZlcigpO1xyXG4gICAgICAgICAgICAgICAgICByb290LnNlbGVjdEN1cnJlbnRXZWVrKCk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgb25TZWxlY3Q6IGZ1bmN0aW9uIChkYXRlVGV4dCwgaW5zdCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBkYXRlID0gJCh0aGlzKS5kYXRlcGlja2VyKCdnZXREYXRlJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RhcnREYXRlID0gbmV3IGdldE1vbmRheShkYXRlKTtcclxuICAgICAgICAgICAgICAgICAgICBlbmREYXRlID0gbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIGRhdGUuZ2V0RGF0ZSgpIC0gZGF0ZS5nZXREYXkoKSArIDcpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJvb3Quc2V0RGVsaXZlcnlEYXRlKCQuZGF0ZXBpY2tlci5mb3JtYXREYXRlKCAneXktbW0tZGQnLHN0YXJ0RGF0ZSksJC5kYXRlcGlja2VyLmZvcm1hdERhdGUoICd5eS1tbS1kZCcsZW5kRGF0ZSkpXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgYmVmb3JlU2hvdzogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZ3JvdXAoJ2JlZm9yZVNob3cnKVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHN0YXJ0RGF0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coZW5kRGF0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy9yb290LndlZWtIb3ZlclNsb3coKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmdyb3VwRW5kKCk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgYmVmb3JlU2hvd0RheTogZnVuY3Rpb24oZGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZ3JvdXAoJ2JlZm9yZVNob3dEYXknKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZygnaHUtSHUnKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNzc0NsYXNzID0gJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoZGF0ZSA+PSBzdGFydERhdGUgJiYgZGF0ZSA8PSBlbmREYXRlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZygnaHUtSHUnKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNzc0NsYXNzID0gJ3VpLWRhdGVwaWNrZXItY3VycmVudC1zZWxlY3RlZC13ZWVrZGF5JztcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy9jc3NDbGFzcyA9ICd1aS1zdGF0ZS1hY3RpdmUnO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhjc3NDbGFzcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5ncm91cEVuZCgpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gW3RydWUsIGNzc0NsYXNzXTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBvbkNoYW5nZU1vbnRoWWVhcjogZnVuY3Rpb24oeWVhciwgbW9udGgsIGluc3QpIHtcclxuICAgICAgICAgICAgICAgICAgICAvL3Jvb3Quc2VsZWN0Q3VycmVudFdlZWsoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICQoQ1NTU2VsZWN0b3JGb3JtICsgJyAuZGF0ZVBpY2tlcicpLmRhdGVwaWNrZXIoe1xyXG4gICAgICAgICAgICAgICAgZGF0ZUZvcm1hdDogJ3l5LW1tLWRkJyxcclxuICAgICAgICAgICAgICAgIG1pbkRhdGU6IG5ldyBEYXRlKCksXHJcbiAgICAgICAgICAgICAgICBvblNlbGVjdDogZnVuY3Rpb24gKGRhdGVUZXh0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgJChDU1NTZWxlY3RvckZvcm0gKyAnIC5zZWxlY3RlZERhdGVUZXh0JykudGV4dChkYXRlVGV4dCk7XHJcbiAgICAgICAgICAgICAgICAgICAgJCgnLmRlbGl2ZXJ5RGF0ZVBsYWNlJykudGV4dChkYXRlVGV4dC5yZXBsYWNlQWxsKCctJywgJy4nKSArICcuJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgJChDU1NTZWxlY3RvckZvcm0gKyAnIGlucHV0W25hbWU9XCJkZWxpdmVyeURhdGVcIl0nKS52YWwoZGF0ZVRleHQpO1xyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmNhbGxDaGFuZ2VPcmRlclR5cGU9ZnVuY3Rpb24oKXtcclxuICAgICAgICBjb25zb2xlLmxvZyh0aGlzKTtcclxuICAgICAgICBjb25zb2xlLmxvZyh0aGlzLnZhbHVlKTtcclxuICAgICAgICByb290LmluaXREYXRlUGlja2VyKHRoaXMudmFsdWUpO1xyXG4gICAgICAgIC8vZW51bSgnZGFpbHknLCAnd2Vla2x5JylcclxuICAgICAgICAvKmxldCBDU1NTZWxlY3RvckZvcm09Jy5vcmRlclBhcmFtZXRlckZvcm0nO1xyXG4gICAgICAgIGxldCBub2RlPSQoQ1NTU2VsZWN0b3JGb3JtKycgaW5wdXRbbmFtZT1jb250YWN0TmFtZV0nKTtcclxuICAgICAgICBpZihub2RlLnZhbCgpLmxlbmd0aDwyKXtcclxuICAgICAgICAgICAgbm9kZS5yZW1vdmVDbGFzcygnaXMtdmFsaWQnKTtcclxuICAgICAgICAgICAgbm9kZS5hZGRDbGFzcygnaXMtaW52YWxpZCcpO1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIG5vZGUuYWRkQ2xhc3MoJ2lzLXZhbGlkJyk7XHJcbiAgICAgICAgICAgIG5vZGUucmVtb3ZlQ2xhc3MoJ2lzLWludmFsaWQnKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgICovXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pbml0Vmlld1BhcmFtZXRlcj1mdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgZGVidWcoJ2NhbGwgaW5pdFZpZXdQYXJhbWV0ZXInKTtcclxuICAgICAgICByb290LlN0ZXBwZXIuc2V0T3B0cyh7b25BZnRlckxvYWQ6ZnVuY3Rpb24gKCl7fX0pO1xyXG4gICAgICAgIGxldCBDU1NTZWxlY3RvckZvcm09Jy5vcmRlclBhcmFtZXRlckZvcm0nO1xyXG4gICAgICAgICQoQ1NTU2VsZWN0b3JGb3JtKycgLmRhdGVQaWNrZXJDbGljaycpLmNsaWNrKGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICQoQ1NTU2VsZWN0b3JGb3JtKycgLmRhdGVQaWNrZXInKS5kYXRlcGlja2VyKCdzaG93Jyk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICQoQ1NTU2VsZWN0b3JGb3JtKycgLm9yZGVyUGFyYW1ldGVyRGVsaXZlcnlBZGRyZXNzJykuc2VsZWN0Mih7fSkuc2hvdygpO1xyXG4gICAgICAgICQoQ1NTU2VsZWN0b3JGb3JtKycgaW5wdXRbbmFtZT1jb250YWN0TmFtZV0nKS5vZmYoJ2JsdXInKTtcclxuICAgICAgICAkKENTU1NlbGVjdG9yRm9ybSsnIGlucHV0W25hbWU9Y29udGFjdE5hbWVdJykub2ZmKCdrZXl1cCcpO1xyXG4gICAgICAgICQoQ1NTU2VsZWN0b3JGb3JtKycgaW5wdXRbbmFtZT1jb250YWN0TmFtZV0nKS5vbignYmx1cicscm9vdC5jaGVja0NvbnRhY3ROYW1lRmllbGQpO1xyXG4gICAgICAgICQoQ1NTU2VsZWN0b3JGb3JtKycgaW5wdXRbbmFtZT1jb250YWN0TmFtZV0nKS5vbigna2V5dXAnLHJvb3QuY2hlY2tDb250YWN0TmFtZUZpZWxkKTtcclxuXHJcbiAgICAgICAgJChDU1NTZWxlY3RvckZvcm0rJyBpbnB1dFtuYW1lPW9yZGVyVHlwZV0nKS5vZmYoJ2NoYW5nZScpO1xyXG4gICAgICAgICQoQ1NTU2VsZWN0b3JGb3JtKycgaW5wdXRbbmFtZT1vcmRlclR5cGVdJykub24oJ2NoYW5nZScscm9vdC5jYWxsQ2hhbmdlT3JkZXJUeXBlKTtcclxuXHJcblxyXG4gICAgICAgICQoQ1NTU2VsZWN0b3JGb3JtKycgLm9yZGVyUGFyYW1ldGVyTmV4dEJ1dHRvbicpLm9mZignY2xpY2snKTtcclxuICAgICAgICBpZihPcmRlci5nZXREYXRhKClbJ2lkJ10+MCl7XHJcbiAgICAgICAgICAgIGlmKE9yZGVyLmdldERhdGEoKVsnb3JkZXJUeXBlJ109PSd3ZWVrbHknKXtcclxuICAgICAgICAgICAgICAgIHJvb3QuaW5pdERhdGVQaWNrZXIoT3JkZXIuZ2V0RGF0YSgpWydvcmRlclR5cGUnXSk7XHJcbiAgICAgICAgICAgICAgICAkKENTU1NlbGVjdG9yRm9ybStcIiBpbnB1dFtuYW1lPW9yZGVyVHlwZV1bdmFsdWU9XCIgKyBPcmRlci5nZXREYXRhKClbJ29yZGVyVHlwZSddICsgXCJdXCIpLnByb3AoJ2NoZWNrZWQnLCB0cnVlKTtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBlbmREYXRlID0gbmV3IERhdGUoT3JkZXIuZ2V0RGF0YSgpWydkZWxpdmVyeURhdGUnXSk7XHJcbiAgICAgICAgICAgICAgICBlbmREYXRlLnNldERhdGUoZW5kRGF0ZS5nZXREYXRlKCkgKyA2KTtcclxuICAgICAgICAgICAgICAgIHJvb3Quc2V0RGVsaXZlcnlEYXRlKE9yZGVyLmdldERhdGEoKVsnZGVsaXZlcnlEYXRlJ10sJC5kYXRlcGlja2VyLmZvcm1hdERhdGUoICd5eS1tbS1kZCcsZW5kRGF0ZSkpO1xyXG4gICAgICAgICAgICAgICAgcm9vdC5pbml0RGF0ZVBpY2tlcignd2Vla2x5Jyk7XHJcbiAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgaWYoT3JkZXIuZ2V0RGF0YSgpWydkZWxpdmVyeURhdGUnXSl7XHJcbiAgICAgICAgICAgICAgICAgICAgcm9vdC5zZXREZWxpdmVyeURhdGUoT3JkZXIuZ2V0RGF0YSgpWydkZWxpdmVyeURhdGUnXSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByb290LmluaXREYXRlUGlja2VyKCdkYWlseScpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG5cclxuXHJcbiAgICAgICAgICAgIGlmKE9yZGVyLmdldERhdGEoKVsnY29udGFjdE5hbWUnXSl7XHJcbiAgICAgICAgICAgICAgICAkKENTU1NlbGVjdG9yRm9ybSsnIGlucHV0W25hbWU9Y29udGFjdE5hbWVdJykudmFsKE9yZGVyLmdldERhdGEoKVsnY29udGFjdE5hbWUnXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYoT3JkZXIuZ2V0RGF0YSgpWydub3RlJ10pe1xyXG4gICAgICAgICAgICAgICAgJChDU1NTZWxlY3RvckZvcm0rJyB0ZXh0YXJlYVtuYW1lPW5vdGVdJykudmFsKE9yZGVyLmdldERhdGEoKVsnbm90ZSddKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZihPcmRlci5nZXREYXRhKClbJ2RlbGl2ZXJ5QWRkcmVzc0lkJ10pe1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJChDU1NTZWxlY3RvckZvcm0rJyBzZWxlY3RbbmFtZT1kZWxpdmVyeUFkZHJlc3NJZF0nKSk7XHJcbiAgICAgICAgICAgICAgICAkKENTU1NlbGVjdG9yRm9ybSsnIHNlbGVjdFtuYW1lPWRlbGl2ZXJ5QWRkcmVzc0lkXScpLnZhbChPcmRlci5nZXREYXRhKClbJ2RlbGl2ZXJ5QWRkcmVzc0lkJ10pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKE9yZGVyLmdldERhdGEoKVsnY3VzdG9tTm90aWZpY2F0aW9uRW1haWwnXSl7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygkKENTU1NlbGVjdG9yRm9ybSsnIHNlbGVjdFtuYW1lPWN1c3RvbU5vdGlmaWNhdGlvbkVtYWlsXScpKTtcclxuICAgICAgICAgICAgICAgICQoQ1NTU2VsZWN0b3JGb3JtKycgc2VsZWN0W25hbWU9Y3VzdG9tTm90aWZpY2F0aW9uRW1haWxdJykudmFsKE9yZGVyLmdldERhdGEoKVsnY3VzdG9tTm90aWZpY2F0aW9uRW1haWwnXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgcm9vdC5pbml0RGF0ZVBpY2tlcignZGFpbHknKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICQoQ1NTU2VsZWN0b3JGb3JtKycgLm9yZGVyUGFyYW1ldGVyRGVsaXZlcnlBZGRyZXNzJykuc2VsZWN0Mih7fSkuc2hvdygpO1xyXG4gICAgICAgICQoQ1NTU2VsZWN0b3JGb3JtKycgLm9yZGVyUGFyYW1ldGVyQ3VzdG9tTm90aWZpY2F0aW9uRW1haWwnKS5zZWxlY3QyKHt9KS5zaG93KCk7XHJcblxyXG4gICAgICAgICQoQ1NTU2VsZWN0b3JGb3JtKS5zdWJtaXQoZnVuY3Rpb24oZXZlbnQpe1xyXG5cclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgaWYgKCQoQ1NTU2VsZWN0b3JGb3JtKVswXS5jaGVja1ZhbGlkaXR5KCkgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICBkZWJ1ZygndmFsaWRhdG9uIGZhbHNlJyk7XHJcbiAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgZGVidWcoJ3ZhbGlkYXRvbiBvaycpO1xyXG4gICAgICAgICAgICAgICAgLy9kbyB5b3VyIGFqYXggc3VibWl0aW9uIGhlcmVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAkKCcuZGVsaXZlcnlEYXRlUGxhY2UnKS50ZXh0KCQoQ1NTU2VsZWN0b3JGb3JtKycgaW5wdXRbbmFtZT1kZWxpdmVyeURhdGVdJykudmFsKCkucmVwbGFjZUFsbCgnLScsJy4nKSsnLicpO1xyXG5cclxuICAgICAgICAgICAgT3JkZXIuc2V0RGF0YSh7XHJcbiAgICAgICAgICAgICAgICBjb250YWN0TmFtZTokKENTU1NlbGVjdG9yRm9ybSsnIGlucHV0W25hbWU9Y29udGFjdE5hbWVdJykudmFsKCksXHJcbiAgICAgICAgICAgICAgICBub3RlOiQoQ1NTU2VsZWN0b3JGb3JtKycgdGV4dGFyZWFbbmFtZT1ub3RlXScpLnZhbCgpLFxyXG4gICAgICAgICAgICAgICAgb3JkZXJUeXBlOiQoQ1NTU2VsZWN0b3JGb3JtKycgaW5wdXQ6Y2hlY2tlZFtuYW1lPW9yZGVyVHlwZV0nKS52YWwoKSxcclxuICAgICAgICAgICAgICAgIGRlbGl2ZXJ5RGF0ZTokKENTU1NlbGVjdG9yRm9ybSsnIGlucHV0W25hbWU9ZGVsaXZlcnlEYXRlXScpLnZhbCgpLFxyXG4gICAgICAgICAgICAgICAgZGVsaXZlcnlBZGRyZXNzSWQ6JChDU1NTZWxlY3RvckZvcm0rJyBzZWxlY3RbbmFtZT1kZWxpdmVyeUFkZHJlc3NJZF0nKS52YWwoKSxcclxuICAgICAgICAgICAgICAgIGRlbGl2ZXJ5QWRkcmVzczokKENTU1NlbGVjdG9yRm9ybSsnIHNlbGVjdFtuYW1lPWRlbGl2ZXJ5QWRkcmVzc10nKS52YWwoKSxcclxuICAgICAgICAgICAgICAgIGN1c3RvbU5vdGlmaWNhdGlvbkVtYWlsOiQoQ1NTU2VsZWN0b3JGb3JtKycgc2VsZWN0W25hbWU9Y3VzdG9tTm90aWZpY2F0aW9uRW1haWxdJykudmFsKCksXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBjb25zb2xlLmdyb3VwKCdwYXJhbWV0ZXIgZm9ybSBzdWJtaXQnKVxyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCQoQ1NTU2VsZWN0b3JGb3JtKycgaW5wdXQ6Y2hlY2tlZFtuYW1lPW9yZGVyVHlwZV0nKS52YWwoKSk7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJChDU1NTZWxlY3RvckZvcm0rJyBpbnB1dFtuYW1lPWRlbGl2ZXJ5RGF0ZV0nKS52YWwoKSk7XHJcbiAgICAgICAgICAgIGRlYnVnKE9yZGVyLmdldERhdGEoKSk7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZ3JvdXBFbmQoKTtcclxuICAgICAgICAgICAgcm9vdC5zZW5kT3JkZXJEYXRhVG9TZXJ2ZXIoJ3BhcmFtZXRlcicscm9vdC5hZnRlck9yZGVyU2V0UGFyYW1ldGVyT2spO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgIH1cclxuICAgIHRoaXMuYmxhbms9ZnVuY3Rpb24gKCl7fTtcclxuICAgIHRoaXMuc2V0UGFyYW1ldGVyQ29tcGxldGVkPWZ1bmN0aW9uICgpIHtcclxuICAgICAgICBjb25zb2xlLmxvZygnc2V0UGFyYW1ldGVyQ29tcGxldGVkIGNhbGxlZCcpO1xyXG4gICAgICAgIHJvb3QuU3RlcHBlci5zZXRPcHRzKHtvbkFmdGVyTG9hZDpmdW5jdGlvbiAoKXt9fSk7XHJcbiAgICAgICAgLy9yb290LmluaXRWaWV3UHJvZHVjdFNlbGVjdCgpXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5iaW5kUm93RmF2b3JpdGVzQWN0aW9uID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICQoJy5idXR0b25JdGVtRmF2b3JpdGVzJykub2ZmKCdjbGljaycpO1xyXG4gICAgICAgICQoJy5idXR0b25JdGVtRmF2b3JpdGVzJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBsZXQgcHJvZHVjdElkID0gJCh0aGlzKS5kYXRhKCdpZCcpO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhwcm9kdWN0SWQpO1xyXG5cclxuICAgICAgICAgICAgbGV0IGFqYXhVcmw9T3B0cy5VUkwudG9nZ2xlRmF2b3JpdGVzLnJlcGxhY2UoJyVpZCUnLHByb2R1Y3RJZCk7XHJcbiAgICAgICAgICAgIGxldCBhamF4RGF0YT17fTtcclxuICAgICAgICAgICAgYWpheERhdGEuX3Rva2VuPU9wdHMudG9rZW47XHJcbiAgICAgICAgICAgIGxldCBidXR0b249dGhpcztcclxuICAgICAgICAgICAgY29uc29sZS5sb2coYWpheFVybCk7XHJcbiAgICAgICAgICAgICQuYWpheCh7XHJcbiAgICAgICAgICAgICAgICB1cmw6IGFqYXhVcmwsXHJcbiAgICAgICAgICAgICAgICBtZXRob2Q6J1BPU1QnLFxyXG4gICAgICAgICAgICAgICAgZGF0YTphamF4RGF0YSxcclxuICAgICAgICAgICAgICAgIHN1Y2Nlc3M6ZnVuY3Rpb24gKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2Uuc3VjY2Vzcyl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlc3BvbnNlLnN0YXR1cyl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygndHJ1ZScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChidXR0b24pLmFkZENsYXNzKCdidG4td2FybmluZycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChidXR0b24pLnJlbW92ZUNsYXNzKCdidG4tbGlnaHQnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGJ1dHRvbikucmVtb3ZlQ2xhc3MoJ2J0bi13YXJuaW5nJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGJ1dHRvbikuYWRkQ2xhc3MoJ2J0bi1saWdodCcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2ZhbHNlJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAvKlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykudG9nZ2xlQ2xhc3MoJ2J0bi13YXJuaW5nJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS50b2dnbGVDbGFzcygnYnRuLWxpZ2h0Jyk7XHJcbiAgICAgICAgICAgICovXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5iaW5kUm93RGVzY3JpcHRpb25BY3Rpb249ZnVuY3Rpb24gKCl7XHJcbiAgICAgICAgJCgndGV4dGFyZWEub3JkZXJJdGVtQ29tbWVudCcpLm9uKCdjaGFuZ2UnLGZ1bmN0aW9uICgpe1xyXG4gICAgICAgICAgICBsZXQgY29tbWVudD0kKHRoaXMpLnZhbCgpO1xyXG4gICAgICAgICAgICBsZXQgcHJvZHVjdElkPSQodGhpcykuZGF0YSgnaWQnKTtcclxuICAgICAgICAgICAgbGV0IHByb2R1Y3RDb21tZW50PU9yZGVyLmdldERhdGEoJ3Byb2R1Y3RDb21tZW50Jyk7XHJcbiAgICAgICAgICAgIGlmKHByb2R1Y3RDb21tZW50IT09bnVsbCl7XHJcbiAgICAgICAgICAgICAgICBpZih0eXBlb2YgcHJvZHVjdENvbW1lbnRbcHJvZHVjdElkXT09J3VuZGVmaW5lZCcgJiYgY29tbWVudC5sZW5ndGg9PT0wKXtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZihwcm9kdWN0Q29tbWVudFtwcm9kdWN0SWRdPT09Y29tbWVudCl7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHByb2R1Y3RDb21tZW50W3Byb2R1Y3RJZF09Y29tbWVudDtcclxuICAgICAgICAgICAgaWYoY29tbWVudC5sZW5ndGg9PT0wKXtcclxuICAgICAgICAgICAgICAgIGRlbGV0ZSBPcmRlci5wcm9kdWN0Q29tbWVudFtwcm9kdWN0SWRdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIE9yZGVyLnByb2R1Y3RDb21tZW50PXByb2R1Y3RDb21tZW50O1xyXG4gICAgICAgICAgICBxdWV1ZUFqYXgucHVzaChEYXRlLm5vdygpKTtcclxuICAgICAgICAgICAgcm9vdC5zeW5jT3JkZXJEYXRhVG9TZXJ2ZXIoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnByb2R1Y3RTZWxlY3REYXRhdGFibGVzUm93Rm9ybWF0dGVyPWZ1bmN0aW9uIChkKSB7XHJcbiAgICAgICAgLy8gYGRgIGlzIHRoZSBvcmlnaW5hbCBkYXRhIG9iamVjdCBmb3IgdGhlIHJvd1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgIEB0b2RvOiBmZWxzemVkbmkgZXMgdXBkYXRlbG5pIGF6IGFkb3R0IHRlcm1layBtZW1vamF0IGF6IG9yZGVyYmFuXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgY29uc29sZS5ncm91cCgncHJvZHVjdFNlbGVjdERhdGF0YWJsZXNSb3dGb3JtYXR0ZXInKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhkKTtcclxuICAgICAgICBsZXQgdGVtcGxhdGVEYXRhPWQ7XHJcbiAgICAgICAgdGVtcGxhdGVEYXRhLmNvbW1lbnQ9Jyc7XHJcbi8vICAgICAgICBkZWJ1ZyhPcmRlcik7XHJcbiAgICAgICAgaWYoT3JkZXIucHJvZHVjdENvbW1lbnQgJiYgT3JkZXIucHJvZHVjdENvbW1lbnQhPT1udWxsKXtcclxuICAgICAgICAgICAgZGVidWcodHlwZW9mIE9yZGVyLnByb2R1Y3RDb21tZW50W2QuaWRdKTtcclxuICAgICAgICAgICAgaWYodHlwZW9mIE9yZGVyLnByb2R1Y3RDb21tZW50W2QuaWRdIT0ndW5kZWZpbmVkJyAmJiBPcmRlci5wcm9kdWN0Q29tbWVudFtkLmlkXS5sZW5ndGg+MCl7XHJcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZURhdGEuY29tbWVudD1PcmRlci5wcm9kdWN0Q29tbWVudFtkLmlkXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvKiogQHR5cGVkZWYge2Jvb2xlYW59IGQuZmF2b3JpdGVzICovXHJcbiAgICAgICAgaWYoZC5mYXZvcml0ZXM9PT10cnVlKXtcclxuICAgICAgICAgICAgdGVtcGxhdGVEYXRhLmJ0bkZhdm9yaXRlc0NsYXNzPSdidG4td2FybmluZyc7XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIHRlbXBsYXRlRGF0YS5idG5GYXZvcml0ZXNDbGFzcz0nYnRuLWxpZ2h0JztcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHRlbXBsYXRlPSQoJ3RlbXBsYXRlW2RhdGEtbmFtZT1cIm9yZGVyUHJvZHVjdFNlbGVjdERldGFpbHNcIl0nKS5odG1sKClcclxuICAgICAgICB0ZW1wbGF0ZURhdGEud2Vla2x5PWZhbHNlO1xyXG4gICAgICAgIGlmKE9yZGVyLmdldERhdGEoKS5vcmRlclR5cGU9PT0nd2Vla2x5Jyl7XHJcbiAgICAgICAgICAgIHRlbXBsYXRlRGF0YS53ZWVrbHk9dHJ1ZTtcclxuLypcclxuXHJcbiAgICAgICAgICAgIHRlbXBsYXRlRGF0YS53ZWVrbHlEYXk9W1xyXG4gICAgICAgICAgICAgICAge1wiaW5kZXhcIjoxLFwibmFtZVwiOlwiSMOpdGbFkVwifSxcclxuICAgICAgICAgICAge1wiaW5kZXhcIjoyLFwibmFtZVwiOlwiS2VkZFwifSxcclxuICAgICAgICAgICAge1wiaW5kZXhcIjozLFwibmFtZVwiOlwiU3plcmRhXCJ9LFxyXG4gICAgICAgICAgICB7XCJpbmRleFwiOjQsXCJuYW1lXCI6XCJDc8O8dMO2cnTDtmtcIn0sXHJcbiAgICAgICAgICAgIHtcImluZGV4XCI6NSxcIm5hbWVcIjpcIlDDqW50ZWtcIn0sXHJcbiAgICAgICAgICAgIHtcImluZGV4XCI6NixcIm5hbWVcIjpcIlN6b21iYXRcIn0sXHJcbiAgICAgICAgICAgIHtcImluZGV4XCI6NyxcIm5hbWVcIjpcIlZhc8Ohcm5hcFwifSxcclxuICAgICAgICAgICAgXTtcclxuXHJcbiAgICAgICAgICAgIHRlbXBsYXRlRGF0YS53ZWVrbHlEYXk9W1xyXG4gICAgICAgICAgICAgICAge1wiaW5kZXhcIjoyLFwibmFtZVwiOlwiSMOpdGbFkVwiIH0sXHJcbiAgICAgICAgICAgICAgICB7XCJuYW1lXCI6XCJLZWRkXCJ9LFxyXG4gICAgICAgICAgICAgICAge1wibmFtZVwiOlwiU3plcmRhXCJ9LFxyXG4gICAgICAgICAgICAgICAge1wibmFtZVwiOlwiQ3PDvHTDtnJ0w7ZrXCJ9LFxyXG4gICAgICAgICAgICAgICAge1wibmFtZVwiOlwiUMOpbnRla1wifSxcclxuICAgICAgICAgICAgICAgIHtcIm5hbWVcIjpcIlN6b21iYXRcIn0sXHJcbiAgICAgICAgICAgICAgICB7XCJuYW1lXCI6XCJWYXPDoXJuYXBcIn1cclxuICAgICAgICAgICAgXTtcclxuKi9cclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHByb2R1Y3RTZWxlY3RlZD1PcmRlci5nZXREYXRhKCdwcm9kdWN0U2VsZWN0ZWQnKTtcclxuICAgICAgICBpZih0eXBlb2YgcHJvZHVjdFNlbGVjdGVkW2QuaWRdIT0ndW5kZWZpbmVkJyl7XHJcbiAgICAgICAgICAgIHRlbXBsYXRlRGF0YS5pdGVtUXVhbnRpdHk9cHJvZHVjdFNlbGVjdGVkW2QuaWRdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zb2xlLmxvZyhbJ3RlbXBsYXRlRGF0YScsdGVtcGxhdGVEYXRhXSk7XHJcbiAgICAgICAgbGV0IG9sZFRhZ3M9TXVzdGFjaGUudGFncztcclxuICAgICAgICBNdXN0YWNoZS50YWdzID0gW1wifiFcIiwgXCIhflwiXTtcclxuICAgICAgICBpZih0ZW1wbGF0ZURhdGFbJ3NwZWNpZmljYXRpb24nXT09J2ZhbHNlJyB8fCB0ZW1wbGF0ZURhdGFbJ3NwZWNpZmljYXRpb24nXT09ZmFsc2Upe1xyXG4gICAgICAgICAgICB0ZW1wbGF0ZURhdGEuc3BlY2lmaWNhdGlvbkNsYXNzPSdkLW5vbmUnO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0ZW1wbGF0ZURhdGEucGljdHVyZUltZz0nJztcclxuICAgICAgICBpZih0ZW1wbGF0ZURhdGFbJ3BpY3R1cmUnXT09J2ZhbHNlJyB8fCB0ZW1wbGF0ZURhdGFbJ3BpY3R1cmUnXT09ZmFsc2Upe1xyXG4gICAgICAgICAgICB0ZW1wbGF0ZURhdGEucGljdHVyZUNsYXNzPSdkLW5vbmUnO1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICB0ZW1wbGF0ZURhdGEucGljdHVyZUltZz0nPGltZyBzcmM9IFwiJyt0ZW1wbGF0ZURhdGFbJ3BpY3R1cmUnXSsnXCIgY2xhc3M9XCJwcm9kdWN0UGljdHVyZVwiID48L2ltZz4nO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zb2xlLmxvZygndGVtcGxhdGVEYXRhJyx0ZW1wbGF0ZURhdGEpO1xyXG4gICAgICAgIC8vdGVtcGxhdGVEYXRhWydhYV9zcGVjaWZpY2F0aW9uJ109ZmFsc2U7XHJcbiAgICAgICAgbGV0IHJlbmRlcj1NdXN0YWNoZS5yZW5kZXIodGVtcGxhdGUsdGVtcGxhdGVEYXRhKTtcclxuICAgICAgICBNdXN0YWNoZS50YWdzID1vbGRUYWdzO1xyXG4gICAgICAgIGNvbnNvbGUuZ3JvdXBFbmQoKTtcclxuICAgICAgICByZXR1cm4gcmVuZGVyO1xyXG4vKlxyXG5zb2x1dGlvbiBiZWZvcmUgdGVtcGxhdGVcclxuICAgICAgICByZXR1cm4gJzx0YWJsZSBjZWxscGFkZGluZz1cIjVcIiBjZWxsc3BhY2luZz1cIjBcIiBib3JkZXI9XCIwXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6NTBweDtcIj4nK1xyXG4gICAgICAgICAgICAnPHRyPicrXHJcbiAgICAgICAgICAgICc8dGQ+SW5mbzo8L3RkPicrXHJcbiAgICAgICAgICAgICc8dGQ+JytkLm5vdGUrJzwvdGQ+JytcclxuICAgICAgICAgICAgJzwvdHI+JytcclxuICAgICAgICAgICAgJzx0cj4nK1xyXG4gICAgICAgICAgICAnPHRkPmhvb3JleWNhIDo8L3RkPicrXHJcbiAgICAgICAgICAgICc8dGQ+PHNwYW4gc3R5bGU9XCJwYWRkaW5nLXJpZ2h0OiAyZW07XCI+JytkLmhvb3JleWNhSWQrJzwvc3Bhbj4nICtcclxuXHJcbiAgICAgICAgICAgICc8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxcbicgK1xyXG4gICAgICAgICAgICAnICAgICAgICBkYXRhLWlkPVwiJytkLmlkKydcIlxcbicgK1xyXG4gICAgICAgICAgICAnICAgICAgICBjbGFzcz1cImJ1dHRvbkl0ZW1GYXZvcml0ZXMgYnRuICcrYnRuRmF2b3JpdGVzQ2xhc3MrJ1wiPlxcbicgK1xyXG4gICAgICAgICAgICAnICAgIDxpIGNsYXNzPVwiYmkgYmktc3Rhci1maWxsIHByLTJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XFxuJyArXHJcbiAgICAgICAgICAgICcgICAgS2VkdmVuY1xcbicgK1xyXG4gICAgICAgICAgICAnPC9idXR0b24+JyArXHJcbiAgICAgICAgICAgICc8L3RkPicrXHJcbiAgICAgICAgICAgICc8L3RyPicrXHJcbiAgICAgICAgICAgIC8hKlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAnPHRyPicrXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICc8dGQ+RXh0ZW5zaW9uIG51bWJlcjo8L3RkPicrXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICc8dGQ+JytkLmV4dG4rJzwvdGQ+JytcclxuICAgICAgICAgICAgICAgICAgICAgICAgJzwvdHI+JytcclxuICAgICAgICAgICAgKiEvXHJcbiAgICAgICAgICAgICc8dHI+JytcclxuICAgICAgICAgICAgJzx0ZD5JbmZvOjwvdGQ+JytcclxuICAgICAgICAgICAgJzx0ZD4nK2Qubm90ZSsnPC90ZD4nK1xyXG4gICAgICAgICAgICAnPC90cj4nK1xyXG4gICAgICAgICAgICAnPHRyPicrXHJcbiAgICAgICAgICAgICc8dGQ+TWVnamVneXrDqXM6PC90ZD4nK1xyXG4gICAgICAgICAgICAnPHRkPjx0ZXh0YXJlYSBjbGFzcz1cIm9yZGVySXRlbUNvbW1lbnRcIiBkYXRhLWlkPVwiJytkLmlkKydcIj4nK2NvbW1lbnQrJzwvdGV4dGFyZWE+PC90ZD4nK1xyXG4gICAgICAgICAgICAnPC90cj4nK1xyXG4gICAgICAgICAgICAvISpcclxuICAgICAgICAgICAgKiEvXHJcbiAgICAgICAgICAgICc8L3RhYmxlPic7XHJcbiovXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZXREYXRhdGFibGVIZWFkZXJUZXh0PWZ1bmN0aW9uKHRleHQpe1xyXG4gICAgICAgICQoJy50YWJsZUhlYWRlclRleHQnKS50ZXh0KHRleHQpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZ2V0VHJlZVBhdGhOYW1lPWZ1bmN0aW9uIChub2RlKXtcclxuICAgICAgICBsZXQgcmVzPScnO1xyXG4gICAgICAgIGxldCBpdGVtcz0kKG5vZGUpLnBhcmVudHMoJ2xpJykudG9BcnJheSgpO1xyXG4gICAgICAgIGl0ZW1zLnNoaWZ0KCk7XHJcbiAgICAgICAgaXRlbXMucmV2ZXJzZSgpO1xyXG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBpbiBpdGVtcykge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygkKGl0ZW1zW2l0ZW1dKS5jaGlsZHJlbignYS5jYXRlZ29yeUl0ZW0nKSk7XHJcbiAgICAgICAgICAgIGlmKCQoaXRlbXNbaXRlbV0pLmNoaWxkcmVuKCdhLmNhdGVnb3J5SXRlbScpLmxlbmd0aD4wKXtcclxuICAgICAgICAgICAgICAgIHJlcys9JChpdGVtc1tpdGVtXSkuY2hpbGRyZW4oJ2EuY2F0ZWdvcnlJdGVtJykudGV4dCgpKycvJ1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJlcys9JChub2RlKS50ZXh0KCk7XHJcbiAgICAgICAgY29uc29sZS5sb2cocmVzKTtcclxuICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBzZWxlY3RlZFByb2R1Y3RHcm91cD1udWxsO1xyXG4gICAgbGV0IGRhdGFUYWJsZVNlYXJjaFN0cj1udWxsO1xyXG4gICAgbGV0IGRhdGFUYWJsZVNlYXJjaEtyZWw9ZmFsc2U7XHJcblxyXG4gICAgdGhpcy5zZWFyY2hQcm9kdWN0QnlTdHJpbmc9ZnVuY3Rpb24gKGZpbHRlclN0cil7XHJcbiAgICAgICAgaWYoZmlsdGVyU3RyLmxlbmd0aD4wKXtcclxuICAgICAgICAgICAgcm9vdC5zZXREYXRhdGFibGVIZWFkZXJUZXh0KCdUZXJtw6lrZWsgc3rFsXJ2ZTonK2ZpbHRlclN0cik7XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIHJvb3Quc2V0RGF0YXRhYmxlSGVhZGVyVGV4dCgnJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRhdGFUYWJsZVNlYXJjaFN0cj1maWx0ZXJTdHI7XHJcbiAgICAgICAgJCgnLmRhdGFUYWJsZU9yZGVyUHJvZHVjdFNlbGVjdCcpLkRhdGFUYWJsZSgpLmFqYXgucmVsb2FkKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jbGlja1NlYXJjaFByb2R1Y3Q9ZnVuY3Rpb24gKCl7XHJcbiAgICAgICAgZGVidWcodGhpcyk7XHJcbiAgICAgICAgbGV0IGZpbHRlclN0cj0kKCcuc2lkZWJhci1zZWFyY2ggaW5wdXRbbmFtZT1zZWFyY2hWYWx1ZV0nKS52YWwoKVxyXG4gICAgICAgIGRlYnVnKGZpbHRlclN0cik7XHJcbiAgICAgICAgcm9vdC5zZWFyY2hQcm9kdWN0QnlTdHJpbmcoZmlsdGVyU3RyKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNsaWNrRmF2b3JpdGVzUHJvZHVjdCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBkZWJ1ZygnY2xpY2tGYXZvcml0ZXNQcm9kdWN0Jyk7XHJcbiAgICAgICAgcm9vdC5zZXREYXRhdGFibGVIZWFkZXJUZXh0KCdUZXJtw6lrZWsgc3rFsXJ2ZToga2VkdmVuY2VrJyk7XHJcbiAgICAgICAgZGF0YVRhYmxlU2VhcmNoU3RyPScqKmZhdm9yaXRlcyoqJztcclxuICAgICAgICAkKCcuZGF0YVRhYmxlT3JkZXJQcm9kdWN0U2VsZWN0JykuRGF0YVRhYmxlKCkuYWpheC5yZWxvYWQoKTtcclxuICAgIH1cclxuICAgIHRoaXMuY2xpY2tPZnRlblByb2R1Y3QgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgZGVidWcoJ2NsaWNrT2Z0ZW5Qcm9kdWN0Jyk7XHJcbiAgICAgICAgcm9vdC5zZXREYXRhdGFibGVIZWFkZXJUZXh0KCdUZXJtw6lrZWsgc3rFsXJ2ZTogZ3lha3JhbiB2w6Fzw6Fyb2x0Jyk7XHJcbiAgICAgICAgZGF0YVRhYmxlU2VhcmNoU3RyPScqKm9mdGVuKionO1xyXG4gICAgICAgICQoJy5kYXRhVGFibGVPcmRlclByb2R1Y3RTZWxlY3QnKS5EYXRhVGFibGUoKS5hamF4LnJlbG9hZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2xpY2tTcGVjaWFsT2ZmZXIgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgZGVidWcoJ2NsaWNrU3BlY2lhbE9mZmVyJyk7XHJcbiAgICAgICAgcm9vdC5zZXREYXRhdGFibGVIZWFkZXJUZXh0KCdUZXJtw6lrZWsgc3rFsXJ2ZTogQWtjacOzcyB0ZXJtw6lrZWsnKTtcclxuICAgICAgICBkYXRhVGFibGVTZWFyY2hTdHI9Jyoqc3BlY2lhbE9mZmVyKionO1xyXG4gICAgICAgICQoJy5kYXRhVGFibGVPcmRlclByb2R1Y3RTZWxlY3QnKS5EYXRhVGFibGUoKS5hamF4LnJlbG9hZCgpO1xyXG4gICAgfVxyXG5cclxuXHJcblxyXG5cclxuICAgIHRoaXMuY2xpY2tMYXN0UHJvZHVjdCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBkZWJ1ZygnY2xpY2tMYXN0UHJvZHVjdCcpO1xyXG4gICAgICAgIHJvb3Quc2V0RGF0YXRhYmxlSGVhZGVyVGV4dCgnVGVybcOpa2VrIHN6xbFydmU6IHV0b2xqw6FyYSB2w6Fzw6Fyb2x0Jyk7XHJcbiAgICAgICAgZGF0YVRhYmxlU2VhcmNoU3RyPScqKmxhc3QqKic7XHJcbiAgICAgICAgJCgnLmRhdGFUYWJsZU9yZGVyUHJvZHVjdFNlbGVjdCcpLkRhdGFUYWJsZSgpLmFqYXgucmVsb2FkKCk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2xpY2tXZWVrbHlQcm9kdWN0ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGRlYnVnKCdjbGlja1dlZWtseVByb2R1Y3QnKTtcclxuICAgICAgICByb290LnNldERhdGF0YWJsZUhlYWRlclRleHQoJ1Rlcm3DqWtlayBzesWxcnZlOiBIZXRpIHRlcm3DqWtlaycpO1xyXG4gICAgICAgIGRhdGFUYWJsZVNlYXJjaFN0cj0nKip3ZWVrbHkqKic7XHJcbiAgICAgICAgJCgnLmRhdGFUYWJsZU9yZGVyUHJvZHVjdFNlbGVjdCcpLkRhdGFUYWJsZSgpLmFqYXgucmVsb2FkKCk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2xpY2tLcmVsUHJvZHVjdCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBkZWJ1ZygnY2xpY2tLcmVsUHJvZHVjdCcpO1xyXG4gICAgICAgIC8vcm9vdC5zZXREYXRhdGFibGVIZWFkZXJUZXh0KCdUZXJtw6lrZWsgc3rFsXJ2ZTogSGV0aSB0ZXJtw6lrZWsnKTtcclxuICAgICAgICAvL2RhdGFUYWJsZVNlYXJjaFN0cj0nKip3ZWVrbHkqKic7XHJcbiAgICAgICAgLy8kKCcuZGF0YVRhYmxlT3JkZXJQcm9kdWN0U2VsZWN0JykuRGF0YVRhYmxlKCkuYWpheC5yZWxvYWQoKTtcclxuICAgICAgICAkKHRoaXMpLnBhcmVudCgpLnRvZ2dsZUNsYXNzKCdrcmVsQWN0aXZlJyk7XHJcbiAgICAgICAgZGF0YVRhYmxlU2VhcmNoS3JlbD0hZGF0YVRhYmxlU2VhcmNoS3JlbDtcclxuICAgICAgICAkKCcuZGF0YVRhYmxlT3JkZXJQcm9kdWN0U2VsZWN0JykuRGF0YVRhYmxlKCkuYWpheC5yZWxvYWQoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnByb2R1Y3RTZWxlY3REYXRhVGFibGVDb2x1bW5EZWZzPWZ1bmN0aW9uICgpe1xyXG4gICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICAgIHtcIndpZHRoXCI6IFwiMTBweFwiLCBcInRhcmdldHNcIjogMCB9LFxyXG4gICAgICAgICAgICB7IFwiY2xhc3NOYW1lXCI6IFwiZHQtbGVmdFwiLCBcInRhcmdldHNcIjogMSB9LFxyXG4vLyAgICAgICAgICAgICAgICB7IFwid2lkdGhcIjogXCIxMjBweFwiLCBcInRhcmdldHNcIjogMSB9LFxyXG4gICAgICAgICAgICB7IFwid2lkdGhcIjogXCIyOHB4XCIsIFwidGFyZ2V0c1wiOiAyIH0sXHJcbiAgICAgICAgICAgIHsgXCJ3aWR0aFwiOiBcIjQxcHhcIiwgXCJ0YXJnZXRzXCI6IDMgfSxcclxuICAgICAgICAgICAgeyBcIndpZHRoXCI6IFwiNzZweFwiLCBcInRhcmdldHNcIjogNCB9LFxyXG4gICAgICAgICAgICB7IFwid2lkdGhcIjogXCI1NXB4XCIsIFwidGFyZ2V0c1wiOiA1IH0sXHJcbiAgICAgICAgICAgIHsgXCJ3aWR0aFwiOiBcIjcwcHhcIiwgXCJ0YXJnZXRzXCI6IDYgfSxcclxuICAgICAgICAgICAgeyBcIndpZHRoXCI6IFwiNTRweFwiLCBcInRhcmdldHNcIjogNyB9LFxyXG4gICAgICAgICAgICB7IFwid2lkdGhcIjogXCI1N3B4XCIsIFwidGFyZ2V0c1wiOiA4IH0sXHJcbiAgICAgICAgICAgIHsgXCJ3aWR0aFwiOiBcIjQycHhcIiwgXCJ0YXJnZXRzXCI6IDkgfSxcclxuICAgICAgICAgICAgeyBcIndpZHRoXCI6IFwiMTAwcHhcIiwgXCJ0YXJnZXRzXCI6IDEwfSxcclxuICAgICAgICAgICAge1wiY2xhc3NOYW1lXCI6IFwiZHQtY2VudGVyXCIsIFwidGFyZ2V0c1wiOiBcIl9hbGxcIn0sXHJcbiAgICAgICAgXTtcclxuICAgIH1cclxuICAgIHRoaXMucHJvZHVjdFNlbGVjdERhdGFUYWJsZUNvbHVtbj1mdW5jdGlvbiAoKXtcclxuICAgICAgICBsZXQgY29sdW1uRGF0YT1bXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIFwiY2xhc3NOYW1lXCI6ICAgICAgJ2RldGFpbHMtY29udHJvbCcsXHJcbiAgICAgICAgICAgICAgICBcIm9yZGVyYWJsZVwiOiAgICAgIGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgXCJkYXRhXCI6ICAgICAgICAgICBudWxsLFxyXG4gICAgICAgICAgICAgICAgXCJkZWZhdWx0Q29udGVudFwiOiAnJ1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7IFwiZGF0YVwiOiBcIm5hbWVcIiB9LFxyXG4gICAgICAgICAgICB7IFwiZGF0YVwiOiBcImtyZWxcIiB9LFxyXG4gICAgICAgICAgICB7IFwiZGF0YVwiOiBcInBhY2tpbmdcIn0sXHJcbiAgICAgICAgICAgIHsgXCJkYXRhXCI6IFwidW5pdFZhbHVlXCIgfSxcclxuICAgICAgICAgICAgeyBcImRhdGFcIjogXCJwcm9kdWN0VW5pdFwifSxcclxuICAgICAgICAgICAgeyBcImRhdGFcIjogXCJzZWxsZXJVbml0XCIgfSxcclxuICAgICAgICAgICAgeyBcImRhdGFcIjogXCJ1bml0TXVsdGlwbGllclwifSxcclxuICAgICAgICAgICAgeyBcImRhdGFcIjogXCJhbW91bnRVbml0XCIgfSxcclxuICAgICAgICAgICAgeyBcImRhdGFcIjogXCJwcmljZVwiIH0sXHJcblxyXG4gICAgICAgIF07XHJcblxyXG4gICAgICAgIGxldCBhY3Rpb25Db2x1bW49eyAgICAgICAgICAgICAgICBcImNsYXNzTmFtZVwiOiAgICAgICdkZXRhaWxzLWNvbnRyb2wyJyxcclxuICAgICAgICAgICAgXCJvcmRlcmFibGVcIjogICAgICBmYWxzZSxcclxuICAgICAgICAgICAgXCJkYXRhXCI6ICAgICAgICAgICBudWxsLFxyXG4gICAgICAgICAgICBcIndpZHRoXCI6IFwiODBweFwiLFxyXG4gICAgICAgICAgICBcImRlZmF1bHRDb250ZW50XCI6JydcclxuICAgICAgICB9O1xyXG4gICAgICAgIGlmKE9yZGVyLmdldERhdGEoJ29yZGVyVHlwZScpPT0nZGFpbHknKXtcclxuICAgICAgICAgICAgYWN0aW9uQ29sdW1uLmRlZmF1bHRDb250ZW50PSc8aW5wdXQgdHlwZT1cIm51bWJlclwiIHZhbHVlPVwiMFwiIG1pbj1cIjBcIiBtYXg9XCI5OTk5XCIgc3RlcD1cIjFcIiBkYXRhLWRlY2ltYWxzPVwiMVwiICBjbGFzcz1cImZvcm0tY29udHJvbC1zbSBpbnB1dE51bWJlclNwaW5uZXJcIiBzdHlsZT1cIndpZHRoOiAxZW07XCIgXCIvPidcclxuICAgICAgICAgICAgICAgIC8qXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZGVmYXVsdENvbnRlbnRcIjonPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIGlucHV0LWdyb3VwLXNtIFwiPicgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxidXR0b24gc3R5bGU9XCJtaW4td2lkdGg6IDEuNXJlbVwiIGNsYXNzPVwiYnRuLXNtIGJ0bi1kZWNyZW1lbnQgYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGJ0bi1taW51c1wiIHR5cGU9XCJidXR0b25cIj4nICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8c3Ryb25nPuKIkjwvc3Ryb25nPjwvYnV0dG9uPicgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxpbnB1dCB0eXBlPVwidGV4dFwiIGlucHV0bW9kZT1cImRlY2ltYWxcIiBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlclwiIGNsYXNzPVwiZm9ybS1jb250cm9sIFwiIHBsYWNlaG9sZGVyPVwiXCI+JyArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPGJ1dHRvbiBzdHlsZT1cIm1pbi13aWR0aDogMS41cmVtXCIgY2xhc3M9XCJidG4tc20gYnRuLWluY3JlbWVudCBidG4tb3V0bGluZS1zZWNvbmRhcnkgYnRuLXBsdXNcIiB0eXBlPVwiYnV0dG9uXCI+JyArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPHN0cm9uZz4rPC9zdHJvbmc+PC9idXR0b24+JyArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPC9kaXY+J1xyXG4gICAgICAgICAgICAgICAgKi9cclxuXHJcbiAgICAgICAgICAgIDtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29sdW1uRGF0YS5wdXNoKGFjdGlvbkNvbHVtbik7XHJcbiAgICAgICAgcmV0dXJuIGNvbHVtbkRhdGE7XHJcbiAgICB9XHJcbiAgICB0aGlzLmdldERhdGF0YWJsZXM9ZnVuY3Rpb24gKG9yZGVyVHlwZSl7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihvcmRlclR5cGUpO1xyXG4gICAgICAgIHZhciB0YWJsZSA9ICQoJy5kYXRhVGFibGVPcmRlclByb2R1Y3RTZWxlY3QnKS5EYXRhVGFibGUoIHtcclxuICAgICAgICAgICAgbGFuZ3VhZ2U6IHtcclxuICAgICAgICAgICAgICAgIHVybDogJy8vY2RuLmRhdGF0YWJsZXMubmV0L3BsdWctaW5zLzEuMTAuMjQvaTE4bi9IdW5nYXJpYW4uanNvbidcclxuICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICAgIC8vXCJhamF4XCI6IFwie3thc3NldCgnZXhhcG1sZTIuanNvbicpfX1cIixcclxuICAgICAgICAgICAgXCJhamF4XCI6IHtcclxuICAgICAgICAgICAgICAgIHVybDpPcHRzLlVSTC5nZXREYXRhVGFibGVDb250ZW50UHJvZHVjdExpc3QsXHJcbiAgICAgICAgICAgICAgICBkYXRhOmZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5zZWFyY2hTdHI9ZGF0YVRhYmxlU2VhcmNoU3RyO1xyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEua3JlbD1kYXRhVGFibGVTZWFyY2hLcmVsO1xyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEuZ3JvdXBJZD1zZWxlY3RlZFByb2R1Y3RHcm91cDtcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLnN1cHBsaWVySWQ9T3JkZXIuc3VwcGxpZXJJZDtcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLmRlbGl2ZXJ5RGF0ZT1PcmRlci5kZWxpdmVyeURhdGU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGJ1dHRvbnM6IHtcclxuICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFtdXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIFwiY29sdW1uRGVmc1wiOiByb290LnByb2R1Y3RTZWxlY3REYXRhVGFibGVDb2x1bW5EZWZzKCksXHJcbiAgICAgICAgICAgIFwiY29sdW1uc1wiOiByb290LnByb2R1Y3RTZWxlY3REYXRhVGFibGVDb2x1bW4oKSxcclxuICAgICAgICAgICAgXCJvcmRlclwiOiBbWzEsICdhc2MnXV0sXHJcbiAgICAgICAgfSApO1xyXG4gICAgICAgIHJldHVybiB0YWJsZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnByb2R1Y3RTZWxlY3REYXRhVGFibGVEcmF3RFQ9ZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICAvL2RlYnVnKCAnVGFibGUgZHJhdyBjb21wbGV0ZTogJytuZXcgRGF0ZSgpLmdldFRpbWUoKSApO1xyXG5cclxuICAgICAgICAvLyQoJ3RkOmNvbnRhaW5zKFwiKlwiKScpLmh0bWwoJzxpIGNsYXNzPVwiYmkgYmktY2hlY2stY2lyY2xlLWZpbGxcIj48L2k+Jyk7XHJcbiAgICAgICAgJChcInRkXCIpLmZpbHRlcihmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICByZXR1cm4gJCh0aGlzKS50ZXh0KCkgPT09ICcqJztcclxuICAgICAgICB9KS5odG1sKCc8aSBjbGFzcz1cImJpIGJpLWNoZWNrLWNpcmNsZS1maWxsXCI+PC9pPicpO1xyXG4gICAgICAgIGlmKE9yZGVyLmdldERhdGEoKS5vcmRlclR5cGU9PSdkYWlseScpe1xyXG4gICAgICAgICAgICAkKFwiaW5wdXRbdHlwZT0nbnVtYmVyJ10uaW5wdXROdW1iZXJTcGlubmVyXCIpLmlucHV0U3Bpbm5lcih7XHJcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZTpcclxuICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwICR7Z3JvdXBDbGFzc31cIj4nICtcclxuICAgICAgICAgICAgICAgICAgICAnPGJ1dHRvbiBzdHlsZT1cIm1pbi13aWR0aDogJHtidXR0b25zV2lkdGh9XCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1kZWNyZW1lbnQgJHtidXR0b25zQ2xhc3N9XCIgdHlwZT1cImJ1dHRvblwiPiR7ZGVjcmVtZW50QnV0dG9ufTwvYnV0dG9uPicgK1xyXG4gICAgICAgICAgICAgICAgICAgIC8vJzxpbnB1dCB0eXBlPVwidGV4dFwiIGlucHV0bW9kZT1cImRlY2ltYWxcIiBzdHlsZT1cInRleHQtYWxpZ246ICR7dGV4dEFsaWdufVwiIGNsYXNzPVwicHJvZHVjdFF1YW50aXR5IGZvcm0tY29udHJvbFwiLz4nICtcclxuICAgICAgICAgICAgICAgICAgICAnPGlucHV0IHR5cGU9XCJ0ZXh0XCIgc3RlcD1cIjAuMVwiIGRhdGEtZGVjaW1hbHM9XCIyXCIgc3R5bGU9XCJ0ZXh0LWFsaWduOiAke3RleHRBbGlnbn1cIiBjbGFzcz1cInByb2R1Y3RRdWFudGl0eSBmb3JtLWNvbnRyb2xcIi8+JyArXHJcbiAgICAgICAgICAgICAgICAgICAgJzxidXR0b24gc3R5bGU9XCJtaW4td2lkdGg6ICR7YnV0dG9uc1dpZHRofVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taW5jcmVtZW50ICR7YnV0dG9uc0NsYXNzfVwiIHR5cGU9XCJidXR0b25cIj4ke2luY3JlbWVudEJ1dHRvbn08L2J1dHRvbj4nICtcclxuICAgICAgICAgICAgICAgICAgICAnPC9kaXY+JyxcclxuICAgICAgICAgICAgICAgIGJ1dHRvbnNXaWR0aDogXCIwLjVyZW1cIixcclxuICAgICAgICAgICAgICAgIGdyb3VwQ2xhc3M6IFwiXCIsIC8vIGNzcyBjbGFzcyBvZiB0aGUgcmVzdWx0aW5nIGlucHV0LWdyb3VwXHJcbiAgICAgICAgICAgICAgICBidXR0b25zQ2xhc3M6IFwiYnRuLW91dGxpbmUtc2Vjb25kYXJ5XCIsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByb290LmJpbmRXZWFrVXNlckhlbHBlcigpO1xyXG4gICAgICAgIC8qXHJcbiAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAgICAgIGNoYW5nZSBvcmRlciBxdWFudGl0eVxyXG4gICAgICAgICAqL1xyXG4gICAgICAgICQoXCIuZGF0YVRhYmxlT3JkZXJQcm9kdWN0U2VsZWN0IC5kZXRhaWxzLWNvbnRyb2wyIGlucHV0W3R5cGU9dGV4dF1cIikub2ZmKCdjaGFuZ2UnKTtcclxuICAgICAgICAkKFwiLmRhdGFUYWJsZU9yZGVyUHJvZHVjdFNlbGVjdCAuZGV0YWlscy1jb250cm9sMiBpbnB1dFt0eXBlPXRleHRdXCIpLm9uKCdjaGFuZ2UnLGZ1bmN0aW9uIChlKXtcclxuICAgICAgICAgICAgbGV0IHF1YW50aXR5PSQodGhpcykudmFsKCk7XHJcbiAgICAgICAgICAgIHF1YW50aXR5PXF1YW50aXR5LnJlcGxhY2UoJywnLCcuJyk7XHJcbiAgICAgICAgICAgIHF1YW50aXR5PXBhcnNlRmxvYXQocXVhbnRpdHkpO1xyXG4gICAgICAgICAgICBsZXQgcm93RGF0YT0kKCcuZGF0YVRhYmxlT3JkZXJQcm9kdWN0U2VsZWN0JykuRGF0YVRhYmxlKCkucm93KCQodGhpcykuY2xvc2VzdCgndHInKSkuZGF0YSgpO1xyXG4gICAgICAgICAgICByb290Lm9yZGVySXRlbXNDaGFuZ2Uocm93RGF0YSxxdWFudGl0eSlcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgJChcIi5kYXRhVGFibGVPcmRlclByb2R1Y3RTZWxlY3QgLmRldGFpbHMtY29udHJvbDIgaW5wdXRbdHlwZT10ZXh0XVwiKS5lYWNoKGZ1bmN0aW9uICgpe1xyXG4gICAgICAgICAgICAvL2RlYnVnKCdleiBhIGZ1bmN0aW9uMicpXHJcbiAgICAgICAgICAgIGxldCBxdWFudGl0eT0kKHRoaXMpLnZhbCgpO1xyXG4gICAgICAgICAgICBsZXQgcm93RGF0YT0kKCcuZGF0YVRhYmxlT3JkZXJQcm9kdWN0U2VsZWN0JykuRGF0YVRhYmxlKCkucm93KCQodGhpcykuY2xvc2VzdCgndHInKSkuZGF0YSgpO1xyXG5cclxuICAgICAgICAgICAgaWYoT3JkZXIucHJvZHVjdFNlbGVjdGVkW3Jvd0RhdGEuaWRdKXtcclxuICAgICAgICAgICAgICAgIGRlYnVnKHJvd0RhdGEpO1xyXG4gICAgICAgICAgICAgICAgZGVidWcoJCgkKHRoaXMpLmNsb3Nlc3QoJ3RyJykuZmluZCgnaW5wdXRbdHlwZT1udW1iZXJdJylbMF0pKTtcclxuICAgICAgICAgICAgICAgIGRlYnVnKE9yZGVyLnByb2R1Y3RTZWxlY3RlZFtyb3dEYXRhLmlkXSk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcXVhbnRpdHlDdXJyZW50PU9yZGVyLnByb2R1Y3RTZWxlY3RlZFtyb3dEYXRhLmlkXTtcclxuICAgICAgICAgICAgICAgIGlmKHR5cGVvZiBxdWFudGl0eUN1cnJlbnQhPSdzdHJpbmcnKXtcclxuICAgICAgICAgICAgICAgICAgICBxdWFudGl0eUN1cnJlbnQrPScnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgJCgkKHRoaXMpLmNsb3Nlc3QoJ3RyJykuZmluZCgnaW5wdXRbdHlwZT1udW1iZXJdJylbMF0pLnZhbChxdWFudGl0eUN1cnJlbnQucmVwbGFjZSgnLCcsJy4nKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcblxyXG4gICAgICAgICQoXCIuZGF0YVRhYmxlT3JkZXJQcm9kdWN0U2VsZWN0IC5kZXRhaWxzLWNvbnRyb2wyIGJ1dHRvblwiKS5vZmYoJ2NsaWNrJyk7XHJcbiAgICAgICAgJChcIi5kYXRhVGFibGVPcmRlclByb2R1Y3RTZWxlY3QgLmRldGFpbHMtY29udHJvbDIgYnV0dG9uXCIpLm9uKCdjbGljaycsZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAvLyBkZWJ1ZygnLmRldGFpbHMtY29udHJvbDIgYnV0dG9uIGNsaWNrICcpXHJcbiAgICAgICAgICAgIC8vIGRlYnVnKHRoaXMpO1xyXG4gICAgICAgICAgICAkKHRoaXMpLnBhcmVudCgpLmZpbmQoJ2lucHV0W3R5cGU9dGV4dF0nKS50cmlnZ2VyKCdjaGFuZ2UnKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pbml0Vmlld1Byb2R1Y3RTZWxlY3Q9ZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGxldCBmdW5jdGlvbk5hbWU9J2luaXRWaWV3UHJvZHVjdFNlbGVjdCc7XHJcbiAgICAgICAgY29uc29sZS5sb2coZnVuY3Rpb25OYW1lKycgY2FsbGVkJyk7XHJcbiAgICAgICAgaWYodmlld0luaWNpYWxpemVkLmluY2x1ZGVzKGZ1bmN0aW9uTmFtZSkpe1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vZGVidWcoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMocm9vdCkpO1xyXG4gICAgICAgIHJvb3Quc2V0RGF0YXRhYmxlSGVhZGVyVGV4dCgnJyk7XHJcbiAgICAgICAgcm9vdC5TdGVwcGVyLnNldE9wdHMoe29uQWZ0ZXJBY3RpdmF0ZTpmdW5jdGlvbiAoKXt9fSk7XHJcbiAgICAgICAgLy9Abm90ZTogYmUga2VsbCBrYXBjc29sbmkgYXogZWxvbmV6ZXRldFxyXG4gICAgICAgIHJvb3QuU3RlcHBlci5hZGRDb21wbGV0ZWQoJ2ludm9pY2UnKTtcclxuICAgICAgICByb290LlN0ZXBwZXIuYWRkRW5hYmxlZCgnaW52b2ljZScpO1xyXG4gICAgICAgIGxldCBDU1NTZWxlY3RvckZvcm09Jy5vcmRlclBhcmFtZXRlckZvcm0nO1xyXG4gICAgICAgIC8vY29uc29sZS5sb2coT3B0cy5VUkwuZ2V0RGF0YVRhYmxlQ29udGVudFByb2R1Y3RMaXN0KTtjaGFuZ2VcclxuICAgICAgICBkZWJ1ZygoQ1NTU2VsZWN0b3JGb3JtKycgLmZhLXNlYXJjaCcpKTtcclxuXHJcbiAgICAgICAgJCgnLnNpZGViYXItc2VhcmNoIC5mYS1zZWFyY2gnKS5vZmYoJ2NsaWNrJyk7XHJcbiAgICAgICAgJCgnLnNpZGViYXItc2VhcmNoIC5mYS1zZWFyY2gnKS5vbignY2xpY2snLHJvb3QuY2xpY2tTZWFyY2hQcm9kdWN0KTtcclxuXHJcbiAgICAgICAgJCgnYS5zaWRlYmFyLmZhdm9yaXRlcycpLm9mZignY2xpY2snKTtcclxuICAgICAgICAkKCdhLnNpZGViYXIuZmF2b3JpdGVzJykub24oJ2NsaWNrJyxyb290LmNsaWNrRmF2b3JpdGVzUHJvZHVjdCk7XHJcblxyXG4gICAgICAgICQoJ2Euc2lkZWJhci5vZnRlbicpLm9mZignY2xpY2snKTtcclxuICAgICAgICAkKCdhLnNpZGViYXIub2Z0ZW4nKS5vbignY2xpY2snLHJvb3QuY2xpY2tPZnRlblByb2R1Y3QpO1xyXG5cclxuICAgICAgICAkKCdhLnNpZGViYXIubGFzdCcpLm9mZignY2xpY2snKTtcclxuICAgICAgICAkKCdhLnNpZGViYXIubGFzdCcpLm9uKCdjbGljaycscm9vdC5jbGlja0xhc3RQcm9kdWN0KTtcclxuXHJcbiAgICAgICAgJCgnYS5zaWRlYmFyLndlZWtseScpLm9mZignY2xpY2snKTtcclxuICAgICAgICAkKCdhLnNpZGViYXIud2Vla2x5Jykub24oJ2NsaWNrJyxyb290LmNsaWNrV2Vla2x5UHJvZHVjdCk7XHJcblxyXG4gICAgICAgICQoJ2Euc2lkZWJhci5rcmVsJykub2ZmKCdjbGljaycpO1xyXG4gICAgICAgICQoJ2Euc2lkZWJhci5rcmVsJykub24oJ2NsaWNrJyxyb290LmNsaWNrS3JlbFByb2R1Y3QpO1xyXG5cclxuICAgICAgICAkKCdhLnNpZGViYXIuc3BlY2lhbE9mZmVyJykub2ZmKCdjbGljaycpO1xyXG4gICAgICAgICQoJ2Euc2lkZWJhci5zcGVjaWFsT2ZmZXInKS5vbignY2xpY2snLHJvb3QuY2xpY2tTcGVjaWFsT2ZmZXIpO1xyXG5cclxuXHJcbiAgICAgICAgJCgnLnNpZGViYXItc2VhcmNoIGlucHV0W25hbWU9c2VhcmNoVmFsdWVdJykub2ZmKCdrZXlwcmVzcycpO1xyXG4gICAgICAgICQoJy5zaWRlYmFyLXNlYXJjaCBpbnB1dFtuYW1lPXNlYXJjaFZhbHVlXScpLm9uKCdrZXlwcmVzcycsZnVuY3Rpb24gKGV2ZW50KSB7XHJcbiAgICAgICAgICAgIGlmICggZXZlbnQud2hpY2ggPT0gMTMgKSB7XHJcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKCQodGhpcykudmFsKCkubGVuZ3RoPj0yKXtcclxuICAgICAgICAgICAgICAgIHJvb3Quc2VhcmNoUHJvZHVjdEJ5U3RyaW5nKCQodGhpcykudmFsKCkrZXZlbnQua2V5KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAkKCcuc2lkZWJhci1zZWFyY2ggaW5wdXRbbmFtZT1zZWFyY2hWYWx1ZV0nKS5vZmYoJ2tleXVwICcpO1xyXG4gICAgICAgICQoJy5zaWRlYmFyLXNlYXJjaCBpbnB1dFtuYW1lPXNlYXJjaFZhbHVlXScpLm9uKCdrZXl1cCAnLGZ1bmN0aW9uIChldmVudCkge1xyXG4gICAgICAgICAgICBpZigkKHRoaXMpLnZhbCgpLmxlbmd0aD09MCl7XHJcbiAgICAgICAgICAgICAgICByb290LnNlYXJjaFByb2R1Y3RCeVN0cmluZygkKHRoaXMpLnZhbCgpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuXHJcbiAgICAgICAgJCgnLnNpZGViYXItd3JhcHBlciAuc2lkZWJhci1tZW51IC5zaWRlYmFyLWRyb3Bkb3duIC5zaWRlYmFyLXN1Ym1lbnUgbGkgYS5jYXRlZ29yeUl0ZW0uY2xpY2thYmxlJykub2ZmKCdjbGljaycpO1xyXG4gICAgICAgICQoJy5zaWRlYmFyLXdyYXBwZXIgLnNpZGViYXItbWVudSAuc2lkZWJhci1kcm9wZG93biAuc2lkZWJhci1zdWJtZW51IGxpIGEuY2F0ZWdvcnlJdGVtLmNsaWNrYWJsZScpLm9uKCdjbGljaycsXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIGxldCBncm91cElkPSQodGhpcykuZGF0YSgnaWQnKTtcclxuICAgICAgICAgICAgICAgIHNlbGVjdGVkUHJvZHVjdEdyb3VwPWdyb3VwSWQ7XHJcbiAgICAgICAgICAgICAgICBkYXRhVGFibGVTZWFyY2hTdHI9bnVsbDtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGdyb3VwSWQpO1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2cocm9vdC5nZXRUcmVlUGF0aE5hbWUodGhpcykpO1xyXG4gICAgICAgICAgICAgICAgcm9vdC5zZXREYXRhdGFibGVIZWFkZXJUZXh0KHJvb3QuZ2V0VHJlZVBhdGhOYW1lKHRoaXMpKTtcclxuLypcclxuICAgICAgICAgICAgICAgIGxldCBhamF4RGF0YT17XHJcbiAgICAgICAgICAgICAgICAgICAgJ2dyb3VwSWQnOmdyb3VwSWQsXHJcbiAgICAgICAgICAgICAgICAgICAgJ3N1cHBsaWVyX2lkJzpPcmRlci5zdXBwbGllcklkLFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIC8vJCgnLmRhdGFUYWJsZU9yZGVyUHJvZHVjdFNlbGVjdCcpLkRhdGFUYWJsZSgpLmFqYXguZGF0YShhamF4RGF0YSkubG9hZCgpO1xyXG5cclxuKi9cclxuLypcclxuICAgICAgICAgICAgICAgIGxldCBhamF4VXJsPU9wdHMuVVJMLmdldERhdGFUYWJsZUNvbnRlbnRQcm9kdWN0TGlzdCsnP2dyb3VwSWQ9Jytncm91cElkKycmc3VwcGxpZXJfaWQ9JytPcmRlci5zdXBwbGllcklkO1xyXG4gICAgICAgICAgICAgICAgJCgnLmRhdGFUYWJsZU9yZGVyUHJvZHVjdFNlbGVjdCcpLkRhdGFUYWJsZSgpLmFqYXgudXJsKGFqYXhVcmwpLmxvYWQoKTtcclxuKi9cclxuICAgICAgICAgICAgICAgICQoJy5kYXRhVGFibGVPcmRlclByb2R1Y3RTZWxlY3QnKS5EYXRhVGFibGUoKS5hamF4LnJlbG9hZCgpO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcblxyXG4gICAgICAgIGxldCB0YWJsZSA9IHJvb3QuZ2V0RGF0YXRhYmxlcyhPcmRlci5nZXREYXRhKCdvcmRlclR5cGUnKSk7XHJcblxyXG4gICAgICAgICQoJy5kYXRhVGFibGVPcmRlclByb2R1Y3RTZWxlY3QnKS5vbiggJ2luaXQuZHQnLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCAnVGFibGUgaW5pdGlhbGlzYXRpb24gY29tcGxldGU6ICcrbmV3IERhdGUoKS5nZXRUaW1lKCkgKTtcclxuICAgICAgICB9ICkuZGF0YVRhYmxlKCk7XHJcblxyXG5cclxuXHJcbiAgICAgICAgJCgnLmRhdGFUYWJsZU9yZGVyUHJvZHVjdFNlbGVjdCcpLm9uKCAnZHJhdy5kdCcscm9vdC5wcm9kdWN0U2VsZWN0RGF0YVRhYmxlRHJhd0RUKS5kYXRhVGFibGUoKTtcclxuXHJcbiAgICAgICAgLy8kKCcuZGF0YVRhYmxlT3JkZXJQcm9kdWN0U2VsZWN0Jykub24oICdkcmF3LmR0JywgICkuZGF0YVRhYmxlKCk7XHJcblxyXG4gICAgICAgICQoJy5kYXRhVGFibGVPcmRlclByb2R1Y3RTZWxlY3QnKS5vbiggJ3hoci5kdCcsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgZGVidWcoICdUYWJsZSB4aHIgY29tcGxldGU6ICcrbmV3IERhdGUoKS5nZXRUaW1lKCkgKTtcclxuICAgICAgICB9ICkuZGF0YVRhYmxlKCk7XHJcblxyXG4gICAgICAgIC8vJChcImlucHV0W3R5cGU9J251bWJlciddLmlucHV0TnVtYmVyU3Bpbm5lclwiKS5pbnB1dFNwaW5uZXIoKTtcclxuXHJcbi8qXHJcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuIEFkZCBldmVudCBsaXN0ZW5lciBmb3Igb3BlbmluZyBhbmQgY2xvc2luZyBkZXRhaWxzXHJcbiAqL1xyXG5cclxuICAgICAgICAkKCcuZGF0YVRhYmxlT3JkZXJQcm9kdWN0U2VsZWN0IHRib2R5Jykub24oJ2NsaWNrJywgJ3RkLmRldGFpbHMtY29udHJvbCcsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgbGV0IHRyID0gJCh0aGlzKS5jbG9zZXN0KCd0cicpO1xyXG4gICAgICAgICAgICBsZXQgcm93ID0gdGFibGUucm93KCB0ciApO1xyXG5cclxuICAgICAgICAgICAgaWYgKCByb3cuY2hpbGQuaXNTaG93bigpICkge1xyXG4gICAgICAgICAgICAgICAgLy8gVGhpcyByb3cgaXMgYWxyZWFkeSBvcGVuIC0gY2xvc2UgaXRcclxuICAgICAgICAgICAgICAgIHJvdy5jaGlsZC5oaWRlKCk7XHJcbiAgICAgICAgICAgICAgICB0ci5yZW1vdmVDbGFzcygnc2hvd24nKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIE9wZW4gdGhpcyByb3dcclxuICAgICAgICAgICAgICAgIHJvdy5jaGlsZCggcm9vdC5wcm9kdWN0U2VsZWN0RGF0YXRhYmxlc1Jvd0Zvcm1hdHRlcihyb3cuZGF0YSgpKSApLnNob3coKTtcclxuICAgICAgICAgICAgICAgIHRyLmFkZENsYXNzKCdzaG93bicpO1xyXG4gICAgICAgICAgICAgICAgcm9vdC5iaW5kUHJvZHVjdERldGFpbHNBY3Rpb24oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gKTtcclxuICAgICAgICB2aWV3SW5pY2lhbGl6ZWQucHVzaChmdW5jdGlvbk5hbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYmluZFByb2R1Y3REZXRhaWxzQWN0aW9uPWZ1bmN0aW9uICgpe1xyXG4gICAgICAgIHJvb3QuYmluZFJvd0Rlc2NyaXB0aW9uQWN0aW9uKCk7XHJcbiAgICAgICAgcm9vdC5iaW5kUm93RmF2b3JpdGVzQWN0aW9uKCk7XHJcbiAgICAgICAgaWYoT3JkZXIuZ2V0RGF0YSgpWydvcmRlclR5cGUnXT09J3dlZWtseScpe1xyXG4gICAgICAgICAgICByb290LmJpbmRPcmRlckl0ZW1XZWVrUXVhbnRpdHkoKTtcclxuICAgICAgICB9XHJcbiAgIH1cclxuXHJcbiAgICB0aGlzLmJpbmRXZWFrVXNlckhlbHBlcj1mdW5jdGlvbiAoKXtcclxuICAgICAgICAkKCBcImlucHV0LmlucHV0TnVtYmVyU3Bpbm5lclwiICkub2ZmKCBcImZvY3VzXCIpO1xyXG4gICAgICAgICQoIFwiaW5wdXQuaW5wdXROdW1iZXJTcGlubmVyXCIgKS5vbiggXCJmb2N1c1wiLCBmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgbGV0IHF1YW50aXR5PSQodGhpcykudmFsKCk7XHJcbiAgICAgICAgICAgIHF1YW50aXR5PXF1YW50aXR5LnJlcGxhY2UoJywnLCcuJyk7XHJcbiAgICAgICAgICAgIHF1YW50aXR5PXBhcnNlRmxvYXQocXVhbnRpdHkpO1xyXG4gICAgICAgICAgICBpZihxdWFudGl0eT09PTApe1xyXG4gICAgICAgICAgICAgICAgJCh0aGlzKS52YWwoJycpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICAkKCBcImlucHV0W3R5cGU9dGV4dF0uaW5wdXROdW1iZXJTcGlubmVyXCIgKS5vZmYoIFwia2V5cHJlc3NcIik7XHJcbiAgICAgICAgJCggXCJpbnB1dFt0eXBlPXRleHRdLmlucHV0TnVtYmVyU3Bpbm5lclwiICkub24oIFwia2V5cHJlc3NcIiwgZnVuY3Rpb24oZXZlbnQpIHtcclxuICAgICAgICAgICAgaWYgKCBldmVudC53aGljaCA9PSAxMyApIHtcclxuLy8gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignZW50ZXIgcHJlc3NlZCcpO1xyXG4gICAgICAgICAgICAgICAgbGV0IGFjdHVhbEl0ZW09dGhpcztcclxuICAgICAgICAgICAgICAgIGxldCBpdGVtcz0kKCBcImlucHV0W3R5cGU9dGV4dF0uaW5wdXROdW1iZXJTcGlubmVyXCIgKTtcclxuICAgICAgICAgICAgICAgIGl0ZW1zLmVhY2goZnVuY3Rpb24gKGl0ZW0pe1xyXG4vLyAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2codGhpcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYodGhpcz09YWN0dWFsSXRlbSl7XHJcbi8vICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihpdGVtKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYoaXRlbSsxPD1pdGVtcy5sZW5ndGgpe1xyXG4vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGl0ZW1zW2l0ZW0rMV0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChpdGVtc1tpdGVtKzFdKS5mb2N1cygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYmluZE9yZGVySXRlbVdlZWtRdWFudGl0eT1mdW5jdGlvbiAoKXtcclxuICAgICAgICAkKFwiaW5wdXQucHJvZHVjdFNlbGVjdERheVF1YW50aXR5XCIpLm9mZignY2hhbmdlJyk7XHJcbiAgICAgICAgJChcImlucHV0LnByb2R1Y3RTZWxlY3REYXlRdWFudGl0eVwiKS5vbignY2hhbmdlJyxmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMubmFtZSk7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMudmFsdWUpO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygkKHRoaXMpLmRhdGEoJ2RheWluZGV4JykpO1xyXG5cclxuICAgICAgICAgICAgbGV0IHJvd0RhdGE9bnVsbDtcclxuICAgICAgICAgICAgbGV0IHJvd05vZGU9JCgkKHRoaXMpLmNsb3Nlc3QoJ3RhYmxlLm9yZGVyUHJvZHVjdFNlbGVjdFJvd0RldGFpbHNUYWJsZScpLmNsb3Nlc3QoJ3RyJykpLnByZXYoKTtcclxuICAgICAgICAgICAgcm93RGF0YT0kKCcuZGF0YVRhYmxlT3JkZXJQcm9kdWN0U2VsZWN0JykuRGF0YVRhYmxlKCkucm93KHJvd05vZGUpLmRhdGEoKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2cocm93RGF0YSk7XHJcbiAgICAgICAgICAgIGxldCBxdWFudGl0eT0kKHRoaXMpLnZhbCgpO1xyXG4gICAgICAgICAgICBxdWFudGl0eT1xdWFudGl0eS5yZXBsYWNlKCcsJywnLicpO1xyXG4gICAgICAgICAgICBxdWFudGl0eT1wYXJzZUZsb2F0KHF1YW50aXR5KTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2cocm93RGF0YS5pZCk7XHJcbiAgICAgICAgICAgIHJvb3Qub3JkZXJJdGVtc0NoYW5nZShyb3dEYXRhLHF1YW50aXR5LCQodGhpcykuZGF0YSgnZGF5aW5kZXgnKSk7XHJcbi8vICAgICAgICAgICAgcm9vdC5vcmRlckl0ZW1zQ2hhbmdlXHJcbiAgICAgICAgICAgIC8vb3JkZXJJdGVtc0NoYW5nZVxyXG4gICAgICAgICAgICAvL3F1YW50aXR5WzE2ODNdWzFdXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYWZ0ZXJTeW5jT3JkZXJEYXRhVG9TZXJ2ZXI9ZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgICAgICAvL3Jvb3QudG9nZ2xlRW5hYmxlU2VuZCgpO1xyXG4gICAgICAgIC8vY29uc29sZS5sb2coJ21vc3QgdmVnemV0dC4gZW5ueWl0IGtpc3plZCcrYmF0Y2hOdW0pO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDxxdWV1ZUFqYXgubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ3NoaWZ0ZWwnKVxyXG4gICAgICAgICAgICBxdWV1ZUFqYXguc2hpZnQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy9jb25zb2xlLmxvZygncmVtYWluaW5nIGxlZnQgJytxdWV1ZUFqYXgubGVuZ3RoKTtcclxuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgIHN5bmNEb2luZz1mYWxzZTtcclxuICAgICAgICAgICAgcm9vdC5zeW5jT3JkZXJEYXRhVG9TZXJ2ZXIoKTtcclxuICAgICAgICB9LCBPcHRzLmRhdGFTeW5jUGF1c2VUaW1lKTtcclxuICAgIH1cclxuICAgIGxldCBxdWV1ZUFqYXg9W107XHJcbiAgICBsZXQgc3luY0RvaW5nPWZhbHNlO1xyXG5cclxuICAgIHRoaXMuc3luY09yZGVyRGF0YVRvU2VydmVyPWZ1bmN0aW9uICgpIHtcclxuICAgICAgICAvL2RlYnVnKHF1ZXVlQWpheCk7XHJcbiAgICAgICAgaWYoc3luY0RvaW5nKXtcclxuICAgICAgICAgICAgLy9kZWJ1Zygnc3luYyBpbiBwcm9ncmVzcy4uLi4nKTtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZihxdWV1ZUFqYXgubGVuZ3RoPDEpe1xyXG4gICAgICAgICAgICByZXR1cm4gO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzeW5jRG9pbmc9dHJ1ZTtcclxuXHJcbiAgICAgICAgcm9vdC5zZW5kT3JkZXJEYXRhVG9TZXJ2ZXIoJ3Byb2R1Y3RTZWxlY3QnLHJvb3QuYWZ0ZXJTeW5jT3JkZXJEYXRhVG9TZXJ2ZXIpO1xyXG4gICAgICAgIHJldHVybiA7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5vcmRlckl0ZW1zQ2hhbmdlPWZ1bmN0aW9uKEl0ZW1EYXRhLHF1YW50aXR5LGRheUluZGV4KXtcclxuXHJcbi8qXHJcbiAgICAgICAgZGVidWcoJy0tLS0tLS0tLS0tLS0tLS0tJyk7XHJcbiAgICAgICAgZGVidWcoSXRlbURhdGEpO1xyXG4gICAgICAgIGRlYnVnKHF1YW50aXR5KTtcclxuICAgICAgICBkZWJ1ZyhPcmRlci5nZXREYXRhKCdwcm9kdWN0U2VsZWN0ZWQnKSk7XHJcbiAgICAgICAgZGVidWcoJy0tLS0tLS0tLS0tLS0tLS0tJyk7XHJcblxyXG4qL1xyXG4gICAgICAgIGlmKGlzTmFOKHF1YW50aXR5KSl7XHJcbiAgICAgICAgICAgIHF1YW50aXR5PTA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBwcm9kdWN0U2VsZWN0ZWQ9T3JkZXIuZ2V0RGF0YSgncHJvZHVjdFNlbGVjdGVkJyk7XHJcbiAgICAgICAgY29uc29sZS5ncm91cCgnb3JkZXJJdGVtc0NoYW5nZScpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFsncHJvZHVjdFNlbGVjdGVkJyxwcm9kdWN0U2VsZWN0ZWRdKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhbJ0l0ZW1EYXRhJyxJdGVtRGF0YV0pO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFsnSXRlbURhdGEuaWQnLEl0ZW1EYXRhLmlkXSk7XHJcbiAgICAgICAgY29uc29sZS5sb2coWydxdWFudGl0eScscXVhbnRpdHldKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhbJ2RheUluZGV4JyxkYXlJbmRleF0pO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKHByb2R1Y3RTZWxlY3RlZFtJdGVtRGF0YS5pZF0pO1xyXG5cclxuICAgICAgICBsZXQgcHJvZHVjdFNlbGVjdGVkSXRlbT1wcm9kdWN0U2VsZWN0ZWRbSXRlbURhdGEuaWRdO1xyXG4gICAgICAgIC8qXHJcbiAgICAgICAgaGEgMCBlcnRlayBqb24gZXMgbmVtIGlzIHZvbHQgYWtrb3IgaGFtYXIga2l1Z3JhdGp1a1xyXG4gICAgICAgICAqL1xyXG4gICAgICAgIGlmKHF1YW50aXR5PT0wKXtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcigncXVhbnRpdHk9PTAnKTtcclxuICAgICAgICAgICAgaWYodHlwZW9mIHByb2R1Y3RTZWxlY3RlZEl0ZW09PSd1bmRlZmluZWQnKXtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcignaXR0IGxlcDEnKTtcclxuICAgICAgICAgICAgY29uc29sZS5ncm91cEVuZCgpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKGRheUluZGV4KXtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCd2YW4gZGF5SW5kZXgnKVxyXG4gICAgICAgICAgICAgICAgaWYodHlwZW9mIHByb2R1Y3RTZWxlY3RlZFtJdGVtRGF0YS5pZF1bZGF5SW5kZXhdPT0ndW5kZWZpbmVkJyl7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coWydwcm9kdWN0U2VsZWN0ZWRJdGVtJyxwcm9kdWN0U2VsZWN0ZWRJdGVtXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignaXR0IGxlcDInKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmdyb3VwRW5kKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8qXHJcbiAgICAgICAgaGEgYXpvbm9zIGF6IGVydGVrIGtpdWdydW5rXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgaWYoZGF5SW5kZXgpe1xyXG4gICAgICAgICAgICBpZih0eXBlb2YgcHJvZHVjdFNlbGVjdGVkW0l0ZW1EYXRhLmlkXSE9J3VuZGVmaW5lZCdcclxuICAgICAgICAgICAgICAgICYmIHR5cGVvZiBwcm9kdWN0U2VsZWN0ZWRbSXRlbURhdGEuaWRdW2RheUluZGV4XSE9J3VuZGVmaW5lZCcpe1xyXG4gICAgICAgICAgICAgICAgaWYocHJvZHVjdFNlbGVjdGVkW0l0ZW1EYXRhLmlkXVtkYXlJbmRleF09PXF1YW50aXR5KXtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdhem9ub3MgbmFwaScpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZ3JvdXBFbmQoKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgaWYocHJvZHVjdFNlbGVjdGVkW0l0ZW1EYXRhLmlkXT09cXVhbnRpdHkpe1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignYXpvbm9zJyk7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmdyb3VwRW5kKCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmKHF1YW50aXR5PT0wKXtcclxuICAgICAgICAgICAgaWYoZGF5SW5kZXgpe1xyXG4gICAgICAgICAgICAgICAgZGVsZXRlIE9yZGVyLnByb2R1Y3RTZWxlY3RlZFtJdGVtRGF0YS5pZF1bZGF5SW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgZGVsZXRlIHByb2R1Y3RTZWxlY3RlZFtJdGVtRGF0YS5pZF1bZGF5SW5kZXhdO1xyXG4gICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgIGRlbGV0ZSBPcmRlci5wcm9kdWN0U2VsZWN0ZWRbSXRlbURhdGEuaWRdO1xyXG4gICAgICAgICAgICAgICAgZGVsZXRlIHByb2R1Y3RTZWxlY3RlZFtJdGVtRGF0YS5pZF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgLypcclxuICAgICAgICAgICAgaGEgdmFuIGVydGVrIGVydGVrZXQgYWR1bmshXHJcbiAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICBpZihkYXlJbmRleCl7XHJcbiAgICAgICAgICAgICAgICBpZih0eXBlb2YgcHJvZHVjdFNlbGVjdGVkW0l0ZW1EYXRhLmlkXT09J3VuZGVmaW5lZCcpe1xyXG4gICAgICAgICAgICAgICAgICAgIHByb2R1Y3RTZWxlY3RlZFtJdGVtRGF0YS5pZF09W107XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnc2V0IHF1YW50aXR5IHByb2R1Y3RTZWxlY3RlZFtJdGVtRGF0YS5pZF1bZGF5SW5kZXhdJyxxdWFudGl0eSk7XHJcbiAgICAgICAgICAgICAgICBwcm9kdWN0U2VsZWN0ZWRbSXRlbURhdGEuaWRdW2RheUluZGV4XT1xdWFudGl0eTtcclxuICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICBwcm9kdWN0U2VsZWN0ZWRbSXRlbURhdGEuaWRdPXF1YW50aXR5O1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3NldCBxdWFudGl0eSBwcm9kdWN0U2VsZWN0ZWRbSXRlbURhdGEuaWRdJyxxdWFudGl0eSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc29sZS5sb2coWydwcm9kdWN0U2VsZWN0ZWQnLHByb2R1Y3RTZWxlY3RlZF0pO1xyXG4gICAgICAgIE9yZGVyLnByb2R1Y3RTZWxlY3RlZD1wcm9kdWN0U2VsZWN0ZWQ7XHJcblxyXG4gICAgICAgIGNvbnNvbGUuZ3JvdXBFbmQoKTtcclxuICAgICAgICBxdWV1ZUFqYXgucHVzaChEYXRlLm5vdygpKTtcclxuICAgICAgICByb290LnN5bmNPcmRlckRhdGFUb1NlcnZlcigpO1xyXG5cclxuICAgICAgICByZXR1cm47XHJcblxyXG5cclxuICAgICAgICBpZihwcm9kdWN0U2VsZWN0ZWRbSXRlbURhdGEuaWRdPT1xdWFudGl0eSl7XHJcbiAgICAgICAgICAgIGRlYnVnKCdpdHQgbGVwMTInKTtcclxuICAgICAgICAgICAgY29uc29sZS5ncm91cEVuZCgpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHByb2R1Y3RTZWxlY3RlZFtJdGVtRGF0YS5pZF09cXVhbnRpdHk7XHJcbiAgICAgICAgaWYocXVhbnRpdHk9PTApe1xyXG4gICAgICAgICAgICBkZWxldGUgT3JkZXIucHJvZHVjdFNlbGVjdGVkW0l0ZW1EYXRhLmlkXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgT3JkZXIucHJvZHVjdFNlbGVjdGVkPXByb2R1Y3RTZWxlY3RlZDtcclxuICAgICAgICBjb25zb2xlLmdyb3VwRW5kKCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICBxdWV1ZUFqYXgucHVzaChEYXRlLm5vdygpKTtcclxuICAgICAgICByb290LnN5bmNPcmRlckRhdGFUb1NlcnZlcigpO1xyXG5cclxuICAgICAgICAvKlxyXG4gICAgICAgIGRlYnVnKE9yZGVyLmdldERhdGEoJ3Byb2R1Y3RTZWxlY3RlZCcpKTtcclxuICAgICAgICBkZWJ1ZygnKioqKioqKioqKioqKioqKioqKicpO1xyXG4qL1xyXG4gICAgfVxyXG4gICAgdGhpcy5pbml0Vmlld0ludm9pY2U9ZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJvb3QuU3RlcHBlci5zZXRPcHRzKHtvbkFmdGVyTG9hZDpmdW5jdGlvbiAoKXt9fSk7XHJcblxyXG4gICAgICAgIGlmKE9iamVjdC5rZXlzKE9yZGVyLnByb2R1Y3RTZWxlY3RlZCkubGVuZ3RoPjApe1xyXG4gICAgICAgICAgICByb290LlN0ZXBwZXIuYWRkQ29tcGxldGVkKCdzZW5kJyk7XHJcbiAgICAgICAgICAgIHJvb3QuU3RlcHBlci5hZGRFbmFibGVkKCdzZW5kJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBzdHlsZVN0cj0nPGxpbmsgcmVsPVwic3R5bGVzaGVldFwiIGhyZWY9XCInK09wdHMuVVJMLnJvb3QrJy9jc3MvaW52b2ljZS5jc3NcIj4nO1xyXG4gICAgICAgICQoJ3RhYmxlLmludm9pY2UgYnV0dG9uLnByaW50QnV0dG9uJykub2ZmKCdjbGljaycpO1xyXG4gICAgICAgICQoJ3RhYmxlLmludm9pY2UgYnV0dG9uLnByaW50QnV0dG9uJykub24oJ2NsaWNrJyxmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHdpbmRvdy5wcmludCgpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgICAgICBsZXQgbmV3V2luPSB3aW5kb3cub3BlbihcIlwiKTtcclxuICAgICAgICAgICAgbmV3V2luLmRvY3VtZW50LndyaXRlKHN0eWxlU3RyKTtcclxuICAgICAgICAgICAgbGV0IHByaW50PSQoJ3RhYmxlLmludm9pY2UnKS5jbG9uZSgpO1xyXG4gICAgICAgICAgICBwcmludC5maW5kKCdidXR0b24ucHJpbnRCdXR0b24nKS5yZW1vdmUoKTtcclxuLy8gICAgICAgICAgICBuZXdXaW4uZG9jdW1lbnQud3JpdGUoJCgndGFibGUuaW52b2ljZScpLnByb3AoJ291dGVySFRNTCcpKTtcclxuICAgICAgICAgICAgbmV3V2luLmRvY3VtZW50LndyaXRlKHByaW50LnByb3AoJ291dGVySFRNTCcpKTtcclxuICAgICAgICAgICAgbmV3V2luLnByaW50KCk7XHJcbiAgICAgICAgICAgbmV3V2luLmNsb3NlKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5yZXNldE9yZGVyPWZ1bmN0aW9uICgpIHtcclxuICAgICAgICByb290LmluaXQoKTtcclxuICAgICAgICByb290LnNldERlbGl2ZXJ5RGF0ZSgnLScpO1xyXG4gICAgICAgIHJvb3Quc2V0U3VwcGxpZXIoJy0nKTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hZnRlck9yZGVyU2VuZE9rPWZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgVG9hc3QuY3JlYXRlKFwiU2VudCFcIiwnT3JkZXIgU2VudCcgLCBUT0FTVF9TVEFUVVMuSU5GTyw1MDAwKTtcclxuICAgICAgICAkKCcuYnV0dG9uT3JkZXJTZW5kJykub2ZmKCdjbGljaycpO1xyXG4gICAgICAgICQoJy5idXR0b25PcmRlclNlbmQnKS5wcm9wKCdkaXNhYmxlZCcsdHJ1ZSk7XHJcbiAgICAgICAgJCgnLnN0YXR1c05hbWVQbGFjZScpLnJlbW92ZUNsYXNzKCdzdGF0dXNCbGluaycpO1xyXG4gICAgICAgICQoJy5zdGF0dXNOYW1lUGxhY2UnKS50ZXh0KCdlbGvDvGxkdmUnKTtcclxuICAgICAgICAkKCcuYnV0dG9uT3JkZXJTZW5kaW5nJykudG9nZ2xlQ2xhc3MoJ2Qtbm9uZScpO1xyXG4gICAgICAgICQoJy5idXR0b25PcmRlclNlbmRPaycpLnRvZ2dsZUNsYXNzKCdkLW5vbmUnKTtcclxuICAgICAgICAkKCdkaXYuaW52b2ljZUNvbnRhaW5lcicpLmh0bWwoZGF0YS5yZXRIVE1MKTtcclxuICAgICAgICAvL3Jvb3QucmVzZXRPcmRlcigpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5hZnRlck9yZGVyU2VuZEVycm9yPWZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgJCgnLmJ1dHRvbk9yZGVyU2VuZCcpLnRvZ2dsZUNsYXNzKCdkLW5vbmUnKTtcclxuICAgICAgICAkKCcuYnV0dG9uT3JkZXJTZW5kaW5nJykudG9nZ2xlQ2xhc3MoJ2Qtbm9uZScpO1xyXG4gICAgICAgICQuZWFjaChBUFAuT3JkZXJNb2R1bGUuU3RlcHBlci5nZXRPcHRzKCkuYXZhaWxhYmxlLGZ1bmN0aW9uIChpbmRleCx2YWx1ZSkge1xyXG4gICAgICAgICAgICBBUFAuT3JkZXJNb2R1bGUuU3RlcHBlci5zZXRFbmFibGVkKHZhbHVlKTtcclxuICAgICAgICAgICAgQVBQLk9yZGVyTW9kdWxlLlN0ZXBwZXIuc2V0Q29tcGxldGVkKHZhbHVlKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmluaXRWaWV3U2VuZD1mdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ2luaXRWaWV3U2VuZCBjYWxsZWQgMicpO1xyXG4gICAgICAgIHJvb3QuU3RlcHBlci5zZXRPcHRzKHtvbkFmdGVyTG9hZDpmdW5jdGlvbiAoKXt9fSk7XHJcbiAgICAgICAgJCgnLmJ1dHRvbk9yZGVyU2VuZCcpLm9mZignY2xpY2snKTtcclxuICAgICAgICAkKCcuYnV0dG9uT3JkZXJTZW5kJykub24oJ2NsaWNrJyxmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdTZW5kIGJ1dG9uIGNsaWNrZWQnKTtcclxuICAgICAgICAgICAgLy9AdG9kbzogZGF0YXN5bmNoZXJlIGFuZCBjYWxsYmFja1xyXG4gICAgICAgICAgICAkKCcuYnV0dG9uT3JkZXJTZW5kJykudG9nZ2xlQ2xhc3MoJ2Qtbm9uZScpO1xyXG4gICAgICAgICAgICAkKCcuYnV0dG9uT3JkZXJTZW5kaW5nJykudG9nZ2xlQ2xhc3MoJ2Qtbm9uZScpO1xyXG4gICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgICogUE0xNThcclxuICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgICQuZWFjaChBUFAuT3JkZXJNb2R1bGUuU3RlcHBlci5nZXRPcHRzKCkuYXZhaWxhYmxlLGZ1bmN0aW9uIChpbmRleCx2YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgcm9vdC5TdGVwcGVyLnVuc2V0RW5hYmxlZCh2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICByb290LlN0ZXBwZXIudW5zZXRDb21wbGV0ZWQodmFsdWUpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgLyoqXHJcblxyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgcm9vdC5zZW5kT3JkZXJEYXRhVG9TZXJ2ZXIoJ3NlbmQnLHJvb3QuYWZ0ZXJPcmRlclNlbmRPayxyb290LmFmdGVyT3JkZXJTZW5kRXJyb3IpO1xyXG5cclxuLyogICAgICAgICAgICBsZXQgYWpheERhdGE9e307XHJcbiAgICAgICAgICAgIGFqYXhEYXRhLl90b2tlbj1PcHRzLnRva2VuO1xyXG4gICAgICAgICAgICBhamF4RGF0YS5zZW5kPXRydWU7XHJcbiAgICAgICAgICAgICQuZXh0ZW5kKGFqYXhEYXRhLE9yZGVyKTtcclxuICAgICAgICAgICAgJC5hamF4KHtcclxuICAgICAgICAgICAgICAgdXJsOiBPcHRzLlVSTC5zdG9yZSxcclxuICAgICAgICAgICAgICAgIG1ldGhvZDonUE9TVCcsXHJcbiAgICAgICAgICAgICAgICBkYXRhOmFqYXhEYXRhLFxyXG4gICAgICAgICAgICAgICAgc3VjY2VzczpmdW5jdGlvbiAoZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKGRhdGEuc3VjY2Vzcyl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvb3QuYWZ0ZXJPcmRlclNlbmRPayhkYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pOyovXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudGVzdE1vZGVTZW5kPWZ1bmN0aW9uICgpIHtcclxuXHJcbiAgICB9XHJcblxyXG5cclxuICAgIHRoaXMudGVzdE1vZGU9ZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCd0ZXN0TW9kZSBjYWxsZWQgJylcclxuICAgICAgICBPcmRlci5zZXREYXRhKHtcclxuICAgICAgICAgICAgaWQ6MjM0LFxyXG4gICAgICAgICAgICBzdXBwbGllcklkOjcsXHJcbiAgICAgICAgICAgIHByb2R1Y3RTZWxlY3RlZDp7XHJcbiAgICAgICAgICAgICAgICAxMTYgOiAzLFxyXG4gICAgICAgICAgICAgICAgMjkzIDogMixcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgY29udGFjdE5hbWU6J0NvbnRhY3QgTmFtZScsXHJcbiAgICAgICAgICAgIG5vdGU6J05vdGUnLFxyXG4gICAgICAgICAgICB0eXBlOidkYWlseScsXHJcbiAgICAgICAgICAgIGRlbGl2ZXJ5RGF0ZTpPcHRzLmRlZmF1bHREZWxpdmVyeURhdGUsXHJcbiAgICAgICAgICAgIGRlbGl2ZXJ5QWRkcmVzczoxMixcclxuICAgICAgICB9KTtcclxuICAgICAgICBjb25zb2xlLmxvZyhPcmRlci5nZXREYXRhKCkpO1xyXG5cclxuICAgICAgICBjb25zb2xlLmxvZygnKioqKioqKioqKioqKioqKioqKicpO1xyXG4gICAgICAgIC8vcm9vdC5TdGVwcGVyLnNldE9wdHMoeydVcmxEYXRhJzp7J3N1cHBsaWVySWQnOnN1cHBsaWVySWR9fSk7XHJcbiAgICAgICAgcm9vdC5TdGVwcGVyLnNldE9wdHMoeydVcmxEYXRhJzp7J3N1cHBsaWVySWQnOk9yZGVyLnN1cHBsaWVySWQsaWQ6T3JkZXIuaWR9fSk7XHJcbiAgICAgICAgdGhpcy5TdGVwcGVyLmluaXQoe1xyXG4gICAgICAgICAgICBVUkw6IHtcclxuICAgICAgICAgICAgICAgIGNyZWF0ZTogT3B0cy5VUkwuY3JlYXRlLFxyXG4gICAgICAgICAgICB9LFxyXG4vKlxyXG5jc3VwYXN6IGF6IGVsZWplcm9sXHJcbiAgICAgICAgICAgIGNvbXBsZXRlOlsnc3VwcGxpZXInXSxcclxuICAgICAgICAgICAgZW5hYmxlOiBbJ3N1cHBsaWVyJ10sXHJcbiAgICAgICAgICAgIGFjdGl2ZTogJ3N1cHBsaWVyJyxcclxuICAgICAgICAgICAgb25BZnRlckFjdGl2YXRlOnRoaXMuaW5pdFZpZXdTdXBwbGllcixcclxuXHJcbnByb2R1Y3Qgc2VsZWN0XHJcbiAgICAgICAgICAgIGNvbXBsZXRlOlsnc3VwcGxpZXInLCdwYXJhbWV0ZXInLCdwcm9kdWN0U2VsZWN0J10sXHJcbiAgICAgICAgICAgIGVuYWJsZTogWydzdXBwbGllcicsJ3BhcmFtZXRlcicsJ3Byb2R1Y3RTZWxlY3QnXSxcclxuICAgICAgICAgICAgYWN0aXZlOiAncHJvZHVjdFNlbGVjdCcsXHJcbiAgICAgICAgICAgIG9uQWZ0ZXJBY3RpdmF0ZTp0aGlzLmluaXRWaWV3UHJvZHVjdFNlbGVjdCxcclxuXHJcbmZ1bGxvc1xyXG4gICAgICAgICAgICBjb21wbGV0ZTpbJ3N1cHBsaWVyJywncGFyYW1ldGVyJywncHJvZHVjdFNlbGVjdCcsJ2ludm9pY2UnXSxcclxuICAgICAgICAgICAgZW5hYmxlOiBbJ3N1cHBsaWVyJywncGFyYW1ldGVyJywncHJvZHVjdFNlbGVjdCcsJ2ludm9pY2UnLCdzZW5kJ10sXHJcbiAgICAgICAgICAgIGFjdGl2ZTogJ3Byb2R1Y3RTZWxlY3QnLFxyXG4gICAgICAgICAgICBvbkFmdGVyQWN0aXZhdGU6dGhpcy5pbml0Vmlld1Byb2R1Y3RTZWxlY3QsXHJcblxyXG5zZW5kXHJcbiAgICAgICAgICAgIGNvbXBsZXRlOlsnc3VwcGxpZXInLCdwYXJhbWV0ZXInLCdwcm9kdWN0U2VsZWN0JywnaW52b2ljZScsJ3NlbmQnXSxcclxuICAgICAgICAgICAgZW5hYmxlOiBbJ3N1cHBsaWVyJywncGFyYW1ldGVyJywncHJvZHVjdFNlbGVjdCcsJ2ludm9pY2UnLCdzZW5kJ10sXHJcbiAgICAgICAgICAgIGFjdGl2ZTogJ3NlbmQnLFxyXG4gICAgICAgICAgICBvbkFmdGVyQWN0aXZhdGU6dGhpcy5pbml0Vmlld1Byb2R1Y3RTZWxlY3QsXHJcblxyXG4qL1xyXG4gICAgICAgICAgICBjb21wbGV0ZTpbJ3N1cHBsaWVyJywncGFyYW1ldGVyJywncHJvZHVjdFNlbGVjdCddLFxyXG4gICAgICAgICAgICBlbmFibGU6IFsnc3VwcGxpZXInLCdwYXJhbWV0ZXInLCdwcm9kdWN0U2VsZWN0J10sXHJcbiAgICAgICAgICAgIGFjdGl2ZTogJ3Byb2R1Y3RTZWxlY3QnLFxyXG4gICAgICAgICAgICBvbkFmdGVyQWN0aXZhdGU6dGhpcy5pbml0Vmlld1Byb2R1Y3RTZWxlY3QsXHJcblxyXG5cclxuICAgICAgICAgICAgYXV0b0NhbGxiYWNrOiB7XHJcbiAgICAgICAgICAgICAgICBpbnZvaWNlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgb25BZnRlckFjdGl2YXRlOnJvb3QuaW5pdFZpZXdJbnZvaWNlXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgc2VuZDoge1xyXG4gICAgICAgICAgICAgICAgICAgIG9uQWZ0ZXJBY3RpdmF0ZTpyb290LmluaXRWaWV3U2VuZFxyXG4gICAgICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgY29uc29sZS5sb2coJyoqKioqKioqKioqKioqKioqKionKTtcclxuXHJcbiAgICB9XHJcbiAgICB0aGlzLnRvZ2dsZUVuYWJsZVNlbmQ9ZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCd0b2dnbGVFbmFibGVTZW5kIGNhbGxlZCcpO1xyXG4gICAgICAgIGxldCBhamF4VXJsPU9wdHMuVVJMLmNoZWNrUmVhZHlUb1NlbmQucmVwbGFjZSgnJWlkJScsT3JkZXIuaWQpO1xyXG4gICAgICAgICQuYWpheCh7XHJcbiAgICAgICAgICAgIHVybDphamF4VXJsLFxyXG4gICAgICAgICAgICBzdWNjZXNzOmZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICBpZihkYXRhLnN1Y2Nlc3Mpe1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKGRhdGEucmVhZHlUb1NlbmQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByb290LlN0ZXBwZXIuYWRkQ29tcGxldGVkKCdzZW5kJyk7XHJcbi8qXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvb3QuU3RlcHBlci5hZGRDb21wbGV0ZWQoJ2ludm9pY2UnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcm9vdC5TdGVwcGVyLmFkZEVuYWJsZWQoJ2ludm9pY2UnKTtcclxuKi9cclxuICAgICAgICAgICAgICAgICAgICAgICAgcm9vdC5TdGVwcGVyLmFkZEVuYWJsZWQoJ3NlbmQnKTtcclxuICAgICAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcm9vdC5TdGVwcGVyLnVuc2V0Q29tcGxldGVkKCdzZW5kJyk7XHJcbi8qXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvb3QuU3RlcHBlci51bnNldENvbXBsZXRlZCgnaW52b2ljZScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByb290LlN0ZXBwZXIudW5zZXRFbmFibGVkKCdpbnZvaWNlJyk7XHJcbiovXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvb3QuU3RlcHBlci51bnNldEVuYWJsZWQoJ3NlbmQnKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhkYXRhKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxufVxyXG4iXSwiZmlsZSI6Ii4vcmVzb3VyY2VzL2pzL21vZHVsZUpzL29yZGVyLmpzLmpzIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./resources/js/moduleJs/order.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./resources/js/moduleJs/orderArchive.js":
|
||
/*!***********************************************!*\
|
||
!*** ./resources/js/moduleJs/orderArchive.js ***!
|
||
\***********************************************/
|
||
/***/ (() => {
|
||
|
||
eval("function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nif (typeof window.DataModelOrderArchive === \"undefined\") {\n window.OrderArchiveModulDefault = {\n actionFunction: function actionFunction() {}\n };\n\n var _DataModelOrderArchive = /*#__PURE__*/function (_DataModel) {\n _inherits(_DataModelOrderArchive, _DataModel);\n\n var _super = _createSuper(_DataModelOrderArchive);\n\n /*\n * Constructor\n */\n function _DataModelOrderArchive(data, options) {\n var _this;\n\n _classCallCheck(this, _DataModelOrderArchive);\n\n _this = _super.call(this, data, options);\n\n if (typeof _this.items === \"undefined\") {\n _this.items = {};\n }\n\n console.log(_this.constructor.name + ' constructor called');\n return _this;\n }\n\n return _DataModelOrderArchive;\n }(DataModel);\n\n ;\n window.DataModelOrderArchive = _DataModelOrderArchive;\n}\n\nif (typeof window.OrderArchiveModule === \"undefined\") {\n var OrderArchiveModule = /*#__PURE__*/function (_ModuleBase) {\n _inherits(OrderArchiveModule, _ModuleBase);\n\n var _super2 = _createSuper(OrderArchiveModule);\n\n function OrderArchiveModule(options, data) {\n var _this2;\n\n _classCallCheck(this, OrderArchiveModule);\n\n _this2 = _super2.call(this, options, data);\n\n if (data !== \"undefined\" || data != null) {} else {\n _this2.data = new DataModelOrderArchive();\n }\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\n _createClass(OrderArchiveModule, [{\n key: \"datatableRowActionAttachment\",\n value: function datatableRowActionAttachment(rowData, node) {\n debug('call datatableRowActionAttachment');\n\n _get(_getPrototypeOf(OrderArchiveModule.prototype), \"datatableRowActionAttachment\", this).call(this, rowData, node, {\n defaultFileName: \"order\"\n });\n }\n }, {\n key: \"datatableRowActionView\",\n value: function datatableRowActionView(rowData, node) {\n debug('call datatableRowActionView');\n\n _get(_getPrototypeOf(OrderArchiveModule.prototype), \"datatableRowActionView\", this).call(this, rowData, node, APP.OrderArchiveModule);\n\n console.log('datatableRowActionEdit End');\n }\n }, {\n key: \"datatableRowActionButtonClick\",\n value: function datatableRowActionButtonClick(event) {\n debug('datatableRowActionButtonClick');\n\n _get(_getPrototypeOf(OrderArchiveModule.prototype), \"datatableRowActionButtonClick\", this).call(this, event, APP.OrderArchiveModule);\n }\n /*\n datatableRowActionButtonClick (event){\n debug('datatableRowActionButtonClick');\n let node=$(event[0].currentTarget);\n let row=$(dataTableCSSSelector).DataTable().row(node.parents('tr'));\n let rowData=row.data();\n let actionName='datatableRowAction'+node.data('buttontype').capitalize();\n if (typeof root[actionName] === \"function\") {\n return root[actionName](rowData,node)\n }\n }\n */\n\n }, {\n key: \"datatableRowActionEdit\",\n value: function datatableRowActionEdit(rowData, node) {\n console.log('datatableRowActionEdit Called'); //Opts.onAfterInitViewDetails=root.autofillDetails;\n\n var ajaxUrl = this.Opts.URL.edit.replace('%id%', rowData.id);\n console.log(this.Opts.URL);\n console.log(ajaxUrl);\n /*\n */\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 var newWin = window.open(\"\");\n newWin.document.write(styleStr);\n var print = $('table.invoice').clone();\n print.find('button.printButton').remove(); // newWin.document.write($('table.invoice').prop('outerHTML'));\n\n newWin.document.write(print.prop('outerHTML'));\n newWin.print(); // 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'); //$('.datePicker .'+datePickerTarget).datepicker('show');\n\n $('.' + datePickerTarget).datepicker('show');\n });\n $(\".selectProfitCenter,.selectSupplier\").select2({\n maximumSelectionLength: 1\n });\n /*\n stored advanceSearchParameter restoring\n */\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\n if (advanceFiltered) {\n $('.dt-button.btn-advanceSearchParameter').addClass('btn-success');\n }\n /*\n clearing advanceSearchParameter\n */\n\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 process advanceSearchParameter\n */\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\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\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\n var dataTableCSSSelector = this.Opts.CSSSelectorContainer + ' .dataTable'; //\n\n var colNum = $(dataTableCSSSelector + ' thead th').length; //buttons insert position need\n\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\n if (typeof options['orderDirective'] != 'undefined') {\n orderDirective = options['orderDirective'];\n } //let ajaxUrl=this.Opts.URL.getDataTableContent;\n\n\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 /*\n data.searchParam=this.Opts.dataTable.advanceSearchParameter\n data.searchStr=dataTableSearchStr;\n data.groupId=selectedProductGroup;\n data.supplierId=Order.supplierId;\n data.deliveryDate=Order.deliveryDate;\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); //buttons+=APP.datatableAddRowEditButton(0, arguments);\n\n if (row.canEditable) {\n buttons += APP.datatableAddRowEditButton(0, {\n title: \"módosítás\"\n });\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 } //{ \"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 },\n \"columns\": this.DtColumns,\n \"order\": orderDirective,\n \"stateSave\": true,\n \"drawCallback\": function drawCallback(settings) {\n settings = null;\n APP.datatableAddRowAction(dataTableCSSSelector);\n }\n });\n this.initAdvancedSearch();\n debug('listview end');\n }\n }]);\n\n return OrderArchiveModule;\n }(ModuleBase);\n\n window.OrderArchiveModule = OrderArchiveModule;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvbW9kdWxlSnMvb3JkZXJBcmNoaXZlLmpzPzQxMjIiXSwibmFtZXMiOlsid2luZG93IiwiRGF0YU1vZGVsT3JkZXJBcmNoaXZlIiwiT3JkZXJBcmNoaXZlTW9kdWxEZWZhdWx0IiwiYWN0aW9uRnVuY3Rpb24iLCJkYXRhIiwib3B0aW9ucyIsIml0ZW1zIiwiY29uc29sZSIsImxvZyIsImNvbnN0cnVjdG9yIiwibmFtZSIsIkRhdGFNb2RlbCIsIk9yZGVyQXJjaGl2ZU1vZHVsZSIsImRhdGFUYWJsZSIsIk9wdHMiLCJhZHZhbmNlU2VhcmNoUGFyYW1ldGVyIiwiZGVsaXZlcnlEYXRlRnJvbSIsImRlbGl2ZXJ5RGF0ZVRvIiwicHJvZml0Q2VudGVySWQiLCJzdXBwbGllcklkIiwicm93RGF0YSIsIm5vZGUiLCJkZWJ1ZyIsImRlZmF1bHRGaWxlTmFtZSIsIkFQUCIsImV2ZW50IiwiYWpheFVybCIsIlVSTCIsImVkaXQiLCJyZXBsYWNlIiwiaWQiLCJsb2FkTWFpbkNvbnRlbnQiLCJyb290Iiwic3R5bGVTdHIiLCIkIiwib2ZmIiwib24iLCJwcmludCIsIm5ld1dpbiIsIm9wZW4iLCJkb2N1bWVudCIsIndyaXRlIiwiY2xvbmUiLCJmaW5kIiwicmVtb3ZlIiwicHJvcCIsImluZm8iLCJtb2RhbCIsImRhdGVQaWNrZXJUYXJnZXQiLCJkYXRlcGlja2VyIiwiZGF0ZUZvcm1hdCIsIm9uU2VsZWN0IiwiZGF0ZVRleHQiLCJ0ZXh0IiwidmFsIiwiY2xpY2siLCJzZWxlY3QyIiwibWF4aW11bVNlbGVjdGlvbkxlbmd0aCIsImFkdmFuY2VGaWx0ZXJlZCIsImVhY2giLCJrIiwidiIsInRyaWdnZXIiLCJhZGRDbGFzcyIsInJlbW92ZUNsYXNzIiwiZGF0YVRhYmxlQ1NTU2VsZWN0b3IiLCJDU1NTZWxlY3RvckNvbnRhaW5lciIsIkRhdGFUYWJsZSIsImFqYXgiLCJyZWxvYWQiLCJkYXRhU2VhcmNoIiwic2VyaWFsaXplQXJyYXkiLCJpdGVtIiwibGVuZ3RoIiwiSXNVc2VyQWRtaW4iLCJEdENvbHVtbnMiLCJjb2xOdW0iLCJzZXRPcHRzIiwiZGF0YXRhYmxlUm93QWN0aW9uQnV0dG9uQ2xpY2tDYWxsQmFjayIsImRhdGF0YWJsZVJvd0FjdGlvbkJ1dHRvbkNsaWNrIiwiZGF0YXRhYmxlQ3VzdG9tSGVhZEJ1dHRvbkNsaWNrQ2FsbEJhY2siLCJvcmRlckRpcmVjdGl2ZSIsImxhbmd1YWdlIiwidXJsIiwiZ2V0RGF0YVRhYmxlQ29udGVudCIsInR5cGUiLCJyb3ciLCJidXR0b25zIiwiZGF0YXRhYmxlQWRkUm93Vmlld0J1dHRvbiIsImFyZ3VtZW50cyIsImRhdGF0YWJsZUFkZFJvd0F0dGFjaG1lbnRCdXR0b24iLCJjYW5FZGl0YWJsZSIsImRhdGF0YWJsZUFkZFJvd0VkaXRCdXR0b24iLCJ0aXRsZSIsImNvbmZpcm1lZCIsImxhdGluaXNlIiwiZXh0ZW5kIiwiYXV0b1ByaW50IiwiYWN0aW9uIiwiZSIsImR0IiwiY29uZmlnIiwiY2xhc3NOYW1lIiwic2V0dGluZ3MiLCJkYXRhdGFibGVBZGRSb3dBY3Rpb24iLCJpbml0QWR2YW5jZWRTZWFyY2giLCJNb2R1bGVCYXNlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLElBQUcsT0FBT0EsTUFBTSxDQUFDQyxxQkFBZCxLQUF1QyxXQUExQyxFQUFzRDtBQUNsREQsRUFBQUEsTUFBTSxDQUFDRSx3QkFBUCxHQUFnQztBQUM1QkMsSUFBQUEsY0FBYyxFQUFFLDBCQUFZLENBQUU7QUFERixHQUFoQzs7QUFEa0QsTUFJNUNGLHNCQUo0QztBQUFBOztBQUFBOztBQU05QztBQUNSO0FBQ0E7QUFDUSxvQ0FBYUcsSUFBYixFQUFrQkMsT0FBbEIsRUFBMkI7QUFBQTs7QUFBQTs7QUFDdkIsZ0NBQU1ELElBQU4sRUFBV0MsT0FBWDs7QUFDQSxVQUFHLE9BQU8sTUFBS0MsS0FBWixLQUFxQixXQUF4QixFQUFvQztBQUNoQyxjQUFLQSxLQUFMLEdBQVcsRUFB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QU9BO0FBaEJLO0FBREwsV0FwRHNDO0FBd0U5QyxxQkFBVyxLQUFLM0IsU0F4RThCO0FBeUU5QyxtQkFBU00sY0F6RXFDO0FBMEU5Qyx1QkFBYSxJQTFFaUM7QUEyRTlDLDBCQUFnQixzQkFBVXNCLFFBQVYsRUFBcUI7QUFDakNBLFlBQUFBLFFBQVEsR0FBQyxJQUFUO0FBQ0EvRSxZQUFBQSxHQUFHLENBQUNnRixxQkFBSixDQUEwQnZDLG9CQUExQjtBQUNIO0FBOUU2QyxTQUFuQyxDQUFmO0FBaUZBLGFBQUt3QyxrQkFBTDtBQUNBbkYsUUFBQUEsS0FBSyxDQUFDLGNBQUQsQ0FBTDtBQUNIO0FBdlMyQzs7QUFBQTtBQUFBLElBQ2ZvRixVQURlOztBQXlTaEQxRyxFQUFBQSxNQUFNLENBQUNZLGtCQUFQLEdBQTBCQSxrQkFBMUI7QUFDSCIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5pZih0eXBlb2Ygd2luZG93LkRhdGFNb2RlbE9yZGVyQXJjaGl2ZSA9PT1cInVuZGVmaW5lZFwiKXtcbiAgICB3aW5kb3cuT3JkZXJBcmNoaXZlTW9kdWxEZWZhdWx0PXtcbiAgICAgICAgYWN0aW9uRnVuY3Rpb246IGZ1bmN0aW9uICgpIHt9LFxuICAgIH1cbiAgICBjbGFzcyBEYXRhTW9kZWxPcmRlckFyY2hpdmUgZXh0ZW5kcyBEYXRhTW9kZWx7XG5cbiAgICAgICAgLypcbiAgICAgICAgICogQ29uc3RydWN0b3JcbiAgICAgICAgICovXG4gICAgICAgIGNvbnN0cnVjdG9yIChkYXRhLG9wdGlvbnMpIHtcbiAgICAgICAgICAgIHN1cGVyKGRhdGEsb3B0aW9ucylcbiAgICAgICAgICAgIGlmKHR5cGVvZiB0aGlzLml0ZW1zID09PVwidW5kZWZpbmVkXCIpe1xuICAgICAgICAgICAgICAgIHRoaXMuaXRlbXM9e307XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLmNvbnN0cnVjdG9yLm5hbWUrJyBjb25zdHJ1Y3RvciBjYWxsZWQnKTtcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIHdpbmRvdy5EYXRhTW9kZWxPcmRlckFyY2hpdmU9RGF0YU1vZGVsT3JkZXJBcmNoaXZlO1xufVxuXG5cbmlmKHR5cGVvZiB3aW5kb3cuT3JkZXJBcmNoaXZlTW9kdWxlID09PVwidW5kZWZpbmVkXCIpIHtcbiAgICBjbGFzcyBPcmRlckFyY2hpdmVNb2R1bGUgZXh0ZW5kcyBNb2R1bGVCYXNle1xuICAgICAgICBjb25zdHJ1Y3RvciAob3B0aW9ucyxkYXRhKSB7XG4gICAgICAgICAgICBzdXBlcihvcHRpb25zLGRhdGEpXG4gICAgICAgICAgICBpZihkYXRhIT09XCJ1bmRlZmluZWRcIiB8fCBkYXRhIT1udWxsKXtcbiAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0YT1uZXcgRGF0YU1vZGVsT3JkZXJBcmNoaXZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmRhdGFUYWJsZT1udWxsO1xuICAgICAgICAgICAgdGhpcy5PcHRzLmRhdGFUYWJsZS5hZHZhbmNlU2VhcmNoUGFyYW1ldGVyPXtcbiAgICAgICAgICAgICAgICBkZWxpdmVyeURhdGVGcm9tOm51bGwsXG4gICAgICAgICAgICAgICAgZGVsaXZlcnlEYXRlVG86bnVsbCxcbiAgICAgICAgICAgICAgICBwcm9maXRDZW50ZXJJZDpudWxsLFxuICAgICAgICAgICAgICAgIHN1cHBsaWVySWQ6bnVsbCxcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICAgICAgZGF0YXRhYmxlUm93QWN0aW9uQXR0YWNobWVudChyb3dEYXRhLG5vZGUpIHtcbiAgICAgICAgICAgIGRlYnVnKCdjYWxsIGRhdGF0YWJsZVJvd0FjdGlvbkF0dGFjaG1lbnQnKTtcbiAgICAgICAgICAgIHN1cGVyLmRhdGF0YWJsZVJvd0FjdGlvbkF0dGFjaG1lbnQocm93RGF0YSxub2RlLHtkZWZhdWx0RmlsZU5hbWU6XCJvcmRlclwifSk7XG4gICAgICAgIH1cblxuICAgICAgICBkYXRhdGFibGVSb3dBY3Rpb25WaWV3KHJvd0RhdGEsbm9kZSkge1xuICAgICAgICAgICAgZGVidWcoJ2NhbGwgZGF0YXRhYmxlUm93QWN0aW9uVmlldycpO1xuICAgICAgICAgICAgc3VwZXIuZGF0YXRhYmxlUm93QWN0aW9uVmlldyhyb3dEYXRhLG5vZGUsQVBQLk9yZGVyQXJjaGl2ZU1vZHVsZSlcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdkYXRhdGFibGVSb3dBY3Rpb25FZGl0IEVuZCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgZGF0YXRhYmxlUm93QWN0aW9uQnV0dG9uQ2xpY2soZXZlbnQpIHtcbiAgICAgICAgICAgIGRlYnVnKCdkYXRhdGFibGVSb3dBY3Rpb25CdXR0b25DbGljaycpO1xuICAgICAgICAgICAgc3VwZXIuZGF0YXRhYmxlUm93QWN0aW9uQnV0dG9uQ2xpY2soZXZlbnQsQVBQLk9yZGVyQXJjaGl2ZU1vZHVsZSk7XG4gICAgICAgIH1cbiAgICAgICAgLypcbiAgICAgICAgZGF0YXRhYmxlUm93QWN0aW9uQnV0dG9uQ2xpY2sgKGV2ZW50KXtcbiAgICAgICAgICAgIGRlYnVnKCdkYXRhdGFibGVSb3dBY3Rpb25CdXR0b25DbGljaycpO1xuICAgICAgICAgICAgbGV0IG5vZGU9JChldmVudFswXS5jdXJyZW50VGFyZ2V0KTtcbiAgICAgICAgICAgIGxldCByb3c9JChkYXRhVGFibGVDU1NTZWxlY3RvcikuRGF0YVRhYmxlKCkucm93KG5vZGUucGFyZW50cygndHInKSk7XG4gICAgICAgICAgICBsZXQgcm93RGF0YT1yb3cuZGF0YSgpO1xuICAgICAgICAgICAgbGV0IGFjdGlvbk5hbWU9J2RhdGF0YWJsZVJvd0FjdGlvbicrbm9kZS5kYXRhKCdidXR0b250eXBlJykuY2FwaXRhbGl6ZSgpO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiByb290W2FjdGlvbk5hbWVdID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcm9vdFthY3Rpb25OYW1lXShyb3dEYXRhLG5vZGUpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgKi9cbiAgICAgICAgZGF0YXRhYmxlUm93QWN0aW9uRWRpdChyb3dEYXRhLG5vZGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdkYXRhdGFibGVSb3dBY3Rpb25FZGl0IENhbGxlZCcpO1xuICAgICAgICAgICAgLy9PcHRzLm9uQWZ0ZXJJbml0Vmlld0RldGFpbHM9cm9vdC5hdXRvZmlsbERldGFpbHM7XG4gICAgICAgICAgICBsZXQgYWpheFVybD10aGlzLk9wdHMuVVJMLmVkaXQucmVwbGFjZSgnJWlkJScscm93RGF0YS5pZCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMuT3B0cy5VUkwpO1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhhamF4VXJsKTtcbiAgICAgICAgICAgIC8qXG4gICAgICAgICAgICAqL1xuICAgICAgICAgICAgQVBQLmxvYWRNYWluQ29udGVudChhamF4VXJsKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdkYXRhdGFibGVSb3dBY3Rpb25FZGl0IEVuZCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgaW5pdFZpZXdTaG93KCl7XG4gICAgICAgICAgICBkZWJ1ZygnY2FsbCBpbml0Vmlld1Nob3cnKTtcbiAgICAgICAgICAgIGxldCByb290PUFQUC5PcmRlckFyY2hpdmVNb2R1bGU7XG4gICAgICAgICAgICBsZXQgc3R5bGVTdHI9JzxsaW5rIHJlbD1cInN0eWxlc2hlZXRcIiBocmVmPVwiJytyb290Lk9wdHMuVVJMLnJvb3QrJy9jc3MvaW52b2ljZS5jc3NcIj4nO1xuICAgICAgICAgICAgJCgndGFibGUuaW52b2ljZSBidXR0b24ucHJpbnRCdXR0b24nKS5vZmYoJ2NsaWNrJyk7XG4gICAgICAgICAgICAkKCd0YWJsZS5pbnZvaWNlIGJ1dHRvbi5wcmludEJ1dHRvbicpLm9uKCdjbGljaycsZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5wcmludCgpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBsZXQgbmV3V2luPSB3aW5kb3cub3BlbihcIlwiKTtcbiAgICAgICAgICAgICAgICBuZXdXaW4uZG9jdW1lbnQud3JpdGUoc3R5bGVTdHIpO1xuICAgICAgICAgICAgICAgIGxldCBwcmludD0kKCd0YWJsZS5pbnZvaWNlJykuY2xvbmUoKTtcbiAgICAgICAgICAgICAgICBwcmludC5maW5kKCdidXR0b24ucHJpbnRCdXR0b24nKS5yZW1vdmUoKTtcbi8vICAgICAgICAgICAgbmV3V2luLmRvY3VtZW50LndyaXRlKCQoJ3RhYmxlLmludm9pY2UnKS5wcm9wKCdvdXRlckhUTUwnKSk7XG4gICAgICAgICAgICAgICAgbmV3V2luLmRvY3VtZW50LndyaXRlKHByaW50LnByb3AoJ291dGVySFRNTCcpKTtcbiAgICAgICAgICAgICAgICBuZXdXaW4ucHJpbnQoKTtcbi8vICAgICAgICAgICAgICAgIG5ld1dpbi5jbG9zZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBkYXRhdGFibGVDdXN0b21IZWFkQnV0dG9uQ2xpY2tDYWxsQmFjaygpe1xuICAgICAgICAgICAgY29uc29sZS5pbmZvKCdoZWxsbyBpdHQgdmFneW9rJyk7XG4gICAgICAgICAgICAkKCcuYWR2YW5jZVNlYXJjaE1vZGFsJykubW9kYWwoJ3Nob3cnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGluaXRBZHZhbmNlZFNlYXJjaCgpe1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ2luaXRBZHZhbmNlZFNlYXJjaCcpO1xuICAgICAgICAgICAgd2luZG93LmRhdGVQaWNrZXJUYXJnZXQ9Jyc7XG4gICAgICAgICAgICAkKCcuZGVsaXZlcnlEYXRlRnJvbSwuZGVsaXZlcnlEYXRlVG8nKS5kYXRlcGlja2VyKHtcbiAgICAgICAgICAgICAgICBkYXRlRm9ybWF0OiAneXktbW0tZGQnLFxuICAgICAgICAgICAgICAgIC8vbWluRGF0ZTpuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgICAgIG9uU2VsZWN0OmZ1bmN0aW9uIChkYXRlVGV4dCl7XG4gICAgICAgICAgICAgICAgICAgIGRlYnVnKCd0YXJnZXQ6Jyt3aW5kb3cuZGF0ZVBpY2tlclRhcmdldCk7XG4gICAgICAgICAgICAgICAgICAgICQoJy4nK3dpbmRvdy5kYXRlUGlja2VyVGFyZ2V0KydTZWxlY3RlZERhdGVUZXh0JykudGV4dChkYXRlVGV4dCk7XG4gICAgICAgICAgICAgICAgICAgIGRlYnVnKCQoJyBpbnB1dFtuYW1lPVwiJyt3aW5kb3cuZGF0ZVBpY2tlclRhcmdldCsnXCJdJykpO1xuICAgICAgICAgICAgICAgICAgICAkKCcgaW5wdXRbbmFtZT1cIicrd2luZG93LmRhdGVQaWNrZXJUYXJnZXQrJ1wiXScpLnZhbChkYXRlVGV4dCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuXG5cblxuICAgICAgICAgICAgJCgnLmRhdGVQaWNrZXJDbGljaycpLmNsaWNrKGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgZGVidWcoJCh0aGlzKS5kYXRhKCd0YXJnZXQnKSk7XG4gICAgICAgICAgICAgICAgZGF0ZVBpY2tlclRhcmdldD0kKHRoaXMpLmRhdGEoJ3RhcmdldCcpO1xuICAgICAgICAgICAgICAgIC8vJCgnLmRhdGVQaWNrZXIgLicrZGF0ZVBpY2tlclRhcmdldCkuZGF0ZXBpY2tlcignc2hvdycpO1xuICAgICAgICAgICAgICAgICQoJy4nK2RhdGVQaWNrZXJUYXJnZXQpLmRhdGVwaWNrZXIoJ3Nob3cnKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgJChcIi5zZWxlY3RQcm9maXRDZW50ZXIsLnNlbGVjdFN1cHBsaWVyXCIpLnNlbGVjdDIoe1xuICAgICAgICAgICAgICAgIG1heGltdW1TZWxlY3Rpb25MZW5ndGg6IDEsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8qXG4gICAgICAgICAgICBzdG9yZWQgYWR2YW5jZVNlYXJjaFBhcmFtZXRlciByZXN0b3JpbmdcbiAgICAgICAgICAgICovXG4gICAgICAgICAgICBsZXQgYWR2YW5jZUZpbHRlcmVkPWZhbHNlO1xuICAgICAgICAgICAkLmVhY2godGhpcy5PcHRzLmRhdGFUYWJsZS5hZHZhbmNlU2VhcmNoUGFyYW1ldGVyLGZ1bmN0aW9uIChrLHYpIHtcbiAgICAgICAgICAgICAgICBpZih2IT1udWxsKXtcbiAgICAgICAgICAgICAgICAgICAgYWR2YW5jZUZpbHRlcmVkPXRydWU7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGsrJyA+ICcrdik7XG4gICAgICAgICAgICAgICAgICAgICQoJy5hZHZhbmNlU2VhcmNoTW9kYWwgaW5wdXRbbmFtZT0nK2srJ10sLmFkdmFuY2VTZWFyY2hNb2RhbCBzZWxlY3RbbmFtZT0nK2srJ10nKS52YWwodikudHJpZ2dlcignY2hhbmdlJyk7XG4gICAgICAgICAgICAgICAgICAgICQoJy4nK2srJ1NlbGVjdGVkRGF0ZVRleHQnKS50ZXh0KHYpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgIGlmKGFkdmFuY2VGaWx0ZXJlZCl7XG4gICAgICAgICAgICAgICAkKCcuZHQtYnV0dG9uLmJ0bi1hZHZhbmNlU2VhcmNoUGFyYW1ldGVyJykuYWRkQ2xhc3MoJ2J0bi1zdWNjZXNzJyk7XG4gICAgICAgICAgIH1cbiAgICAgICAgICAgIC8qXG4gICAgICAgICAgICBjbGVhcmluZyBhZHZhbmNlU2VhcmNoUGFyYW1ldGVyXG4gICAgICAgICAgICAqL1xuICAgICAgICAgICAgJCgnLmFkdmFuY2VTZWFyY2hNb2RhbCAuYnV0dG9uQ2xlYXInKS5vZmYoJ2NsaWNrJyk7XG4gICAgICAgICAgICAkKCcuYWR2YW5jZVNlYXJjaE1vZGFsIC5idXR0b25DbGVhcicpLm9uKCdjbGljaycsZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICQoJy5hZHZhbmNlU2VhcmNoTW9kYWwgaW5wdXQsLmFkdmFuY2VTZWFyY2hNb2RhbCBzZWxlY3QnKS52YWwoJycpLnRyaWdnZXIoJ2NoYW5nZScpO1xuICAgICAgICAgICAgICAgICQoJy5TZWxlY3RlZERhdGVUZXh0JykudGV4dCgnXFx4YTAnKTtcbiAgICAgICAgICAgICAgICBsZXQgcm9vdD1BUFAuT3JkZXJBcmNoaXZlTW9kdWxlO1xuICAgICAgICAgICAgICAgICQuZWFjaChyb290Lk9wdHMuZGF0YVRhYmxlLmFkdmFuY2VTZWFyY2hQYXJhbWV0ZXIsZnVuY3Rpb24gKGssdikge1xuICAgICAgICAgICAgICAgICAgICByb290Lk9wdHMuZGF0YVRhYmxlLmFkdmFuY2VTZWFyY2hQYXJhbWV0ZXJba109bnVsbDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAkKCcuZHQtYnV0dG9uLmJ0bi1hZHZhbmNlU2VhcmNoUGFyYW1ldGVyJykucmVtb3ZlQ2xhc3MoJ2J0bi1zdWNjZXNzJyk7XG4gICAgICAgICAgICAgICAgbGV0IGRhdGFUYWJsZUNTU1NlbGVjdG9yPXJvb3QuT3B0cy5DU1NTZWxlY3RvckNvbnRhaW5lcisnIC5kYXRhVGFibGUnO1xuICAgICAgICAgICAgICAgICQoZGF0YVRhYmxlQ1NTU2VsZWN0b3IpLkRhdGFUYWJsZSgpLmFqYXgucmVsb2FkKCk7XG4gICAgICAgICAgICAgICAgJCgnLmFkdmFuY2VTZWFyY2hNb2RhbCcpLm1vZGFsKCdoaWRlJyk7XG5cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAvKlxuICAgICAgICAgICAgcHJvY2VzcyBhZHZhbmNlU2VhcmNoUGFyYW1ldGVyXG4gICAgICAgICAgICAqL1xuICAgICAgICAgICAgJCgnLmFkdmFuY2VTZWFyY2hNb2RhbCAuYnV0dG9uU2F2ZScpLm9mZignY2xpY2snKTtcbiAgICAgICAgICAgICQoJy5hZHZhbmNlU2VhcmNoTW9kYWwgLmJ1dHRvblNhdmUnKS5vbignY2xpY2snLGZ1bmN0aW9uICgpe1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdjbGlja2VkIGFkdmFuY2VkIHNlYXJjaCAnKTtcbiAgICAgICAgICAgICAgICBsZXQgcm9vdD1BUFAuT3JkZXJBcmNoaXZlTW9kdWxlO1xuICAgICAgICAgICAgICAgIGxldCBkYXRhU2VhcmNoPSQoJy5hZHZhbmNlU2VhcmNoTW9kYWxGb3JtJykuZmluZCgnaW5wdXQsc2VsZWN0Jykuc2VyaWFsaXplQXJyYXkoKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhkYXRhU2VhcmNoKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhyb290Lk9wdHMpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHJvb3QuT3B0cy5kYXRhVGFibGUuYWR2YW5jZVNlYXJjaFBhcmFtZXRlcik7XG4gICAgICAgICAgICAgICAgJC5lYWNoKHJvb3QuT3B0cy5kYXRhVGFibGUuYWR2YW5jZVNlYXJjaFBhcmFtZXRlcixmdW5jdGlvbiAoayx2KSB7XG4gICAgICAgICAgICAgICAgICAgIHJvb3QuT3B0cy5kYXRhVGFibGUuYWR2YW5jZVNlYXJjaFBhcmFtZXRlcltrXT1udWxsO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICQuZWFjaChkYXRhU2VhcmNoLGZ1bmN0aW9uIChrLGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coaXRlbVsnbmFtZSddKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coaXRlbVsndmFsdWUnXSk7XG4gICAgICAgICAgICAgICAgICAgIGlmKCB0eXBlb2Ygcm9vdC5PcHRzLmRhdGFUYWJsZS5hZHZhbmNlU2VhcmNoUGFyYW1ldGVyW2l0ZW1bJ25hbWUnXV0hPSAndW5kZWZpbmVkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgJiYgaXRlbVsndmFsdWUnXS5sZW5ndGg+MFxuICAgICAgICAgICAgICAgICAgICApe1xuICAgICAgICAgICAgICAgICAgICAgICAgcm9vdC5PcHRzLmRhdGFUYWJsZS5hZHZhbmNlU2VhcmNoUGFyYW1ldGVyW2l0ZW1bJ25hbWUnXV09aXRlbVsndmFsdWUnXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2cocm9vdC5PcHRzLmRhdGFUYWJsZS5hZHZhbmNlU2VhcmNoUGFyYW1ldGVyKTtcbiAgICAgICAgICAgICAgICBsZXQgZGF0YVRhYmxlQ1NTU2VsZWN0b3I9cm9vdC5PcHRzLkNTU1NlbGVjdG9yQ29udGFpbmVyKycgLmRhdGFUYWJsZSc7XG4gICAgICAgICAgICAgICAgJChkYXRhVGFibGVDU1NTZWxlY3RvcikuRGF0YVRhYmxlKCkuYWpheC5yZWxvYWQoKTtcbiAgICAgICAgICAgICAgICAkKCcuZHQtYnV0dG9uLmJ0bi1hZHZhbmNlU2VhcmNoUGFyYW1ldGVyJykuYWRkQ2xhc3MoJ2J0bi1zdWNjZXNzJyk7XG4gICAgICAgICAgICAgICAgJCgnLmFkdmFuY2VTZWFyY2hNb2RhbCcpLm1vZGFsKCdoaWRlJyk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB9XG5cbiAgICAgICAgaW5pdFZpZXdMaXN0KG9wdGlvbnM9e30pIHtcbiAgICAgICAgICAgIGRlYnVnKCdsaXN0dmlldyBpbmljaWFsaXphdGlvbicpO1xuXG4gICAgICAgICAgICBpZihBUFAuSXNVc2VyQWRtaW4pe1xuICAgICAgICAgICAgICAgIHRoaXMuRHRDb2x1bW5zPVtcbiAgICAgICAgICAgICAgICAgICAgeyBcImRhdGFcIjogXCJzdXBwbGllcl9uYW1lXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgeyBcImRhdGFcIjogXCJkZWxpdmVyeURhdGVcIiB9LFxuICAgICAgICAgICAgICAgICAgICB7IFwiZGF0YVwiOiBcInByb2ZpdF9jZW50ZXIubmFtZVwiIH0sXG4gICAgICAgICAgICAgICAgICAgIHsgXCJkYXRhXCI6IFwiZGVsaXZlcnlBZGRyZXNzTmFtZVwiIH0sXG4gICAgICAgICAgICAgICAgICAgIHsgXCJkYXRhXCI6IFwic2VudFRpbWVcIiB9LFxuICAgICAgICAgICAgICAgICAgICB7IFwiZGF0YVwiOiBcImh1bWFuSWRcIiB9LFxuICAgICAgICAgICAgICAgICAgICB7IFwiZGF0YVwiOiBcImNvbmZpcm1lZFwiIH0sXG4gICAgICAgICAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICAgIHRoaXMuRHRDb2x1bW5zPVtcbiAgICAgICAgICAgICAgICAgICAgeyBcImRhdGFcIjogXCJzdXBwbGllcl9uYW1lXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgeyBcImRhdGFcIjogXCJkZWxpdmVyeURhdGVcIiB9LFxuICAgICAgICAgICAgICAgICAgICB7IFwiZGF0YVwiOiBcImRlbGl2ZXJ5QWRkcmVzc05hbWVcIiB9LFxuICAgICAgICAgICAgICAgICAgICB7IFwiZGF0YVwiOiBcInNlbnRUaW1lXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgeyBcImRhdGFcIjogXCJodW1hbklkXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgeyBcImRhdGFcIjogXCJjb25maXJtZWRcIiB9LFxuICAgICAgICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBkYXRhVGFibGVDU1NTZWxlY3Rvcj10aGlzLk9wdHMuQ1NTU2VsZWN0b3JDb250YWluZXIrJyAuZGF0YVRhYmxlJzsgLy9cbiAgICAgICAgICAgIGxldCBjb2xOdW09JChkYXRhVGFibGVDU1NTZWxlY3RvcisnIHRoZWFkIHRoJykubGVuZ3RoOyAvL2J1dHRvbnMgaW5zZXJ0IHBvc2l0aW9uIG5lZWRcbiAgICAgICAgICAgIEFQUC5zZXRPcHRzKHtcbiAgICAgICAgICAgICAgICAvL2RhdGF0YWJsZVJvd0FjdGlvbkJ1dHRvbkNsaWNrQ2FsbEJhY2s6dGhpcy5kYXRhdGFibGVSb3dBY3Rpb25CdXR0b25DbGljayxcbiAgICAgICAgICAgICAgICBkYXRhdGFibGVSb3dBY3Rpb25CdXR0b25DbGlja0NhbGxCYWNrOnRoaXMuZGF0YXRhYmxlUm93QWN0aW9uQnV0dG9uQ2xpY2ssXG4gICAgICAgICAgICAgICAgZGF0YXRhYmxlQ3VzdG9tSGVhZEJ1dHRvbkNsaWNrQ2FsbEJhY2s6dGhpcy5kYXRhdGFibGVDdXN0b21IZWFkQnV0dG9uQ2xpY2tDYWxsQmFjayxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBsZXQgb3JkZXJEaXJlY3RpdmU9dGhpcy5PcHRzLmRhdGFUYWJsZS5vcmRlckRpcmVjdGl2ZTtcbiAgICAgICAgICAgIGxldCBhZHZhbmNlU2VhcmNoUGFyYW1ldGVyPXRoaXMuT3B0cy5kYXRhVGFibGUuYWR2YW5jZVNlYXJjaFBhcmFtZXRlcjtcblxuICAgICAgICAgICAgaWYodHlwZW9mIG9wdGlvbnNbJ29yZGVyRGlyZWN0aXZlJ10hPSd1bmRlZmluZWQnKXtcbiAgICAgICAgICAgICAgICBvcmRlckRpcmVjdGl2ZT1vcHRpb25zWydvcmRlckRpcmVjdGl2ZSddO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy9sZXQgYWpheFVybD10aGlzLk9wdHMuVVJMLmdldERhdGFUYWJsZUNvbnRlbnQ7XG4gICAgICAgICAgICB0aGlzLmRhdGFUYWJsZT0kKGRhdGFUYWJsZUNTU1NlbGVjdG9yKS5EYXRhVGFibGUoIHtcbiAgICAgICAgICAgICAgICBsYW5ndWFnZToge1xuICAgICAgICAgICAgICAgICAgICB1cmw6ICcvL2Nkbi5kYXRhdGFibGVzLm5ldC9wbHVnLWlucy8xLjEwLjI0L2kxOG4vSHVuZ2FyaWFuLmpzb24nXG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIC8vXCJhamF4XCI6IFwie3thc3NldCgnZXhhcG1sZTIuanNvbicpfX1cIixcbiAgICAgICAgICAgICAgICBcImFqYXhcIjoge1xuICAgICAgICAgICAgICAgICAgICB1cmw6dGhpcy5PcHRzLlVSTC5nZXREYXRhVGFibGVDb250ZW50LFxuICAgICAgICAgICAgICAgICAgICBkYXRhOmZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmFkdmFuY2VTZWFyY2hQYXJhbWV0ZXI9YWR2YW5jZVNlYXJjaFBhcmFtZXRlcjtcbi8qXG5kYXRhLnNlYXJjaFBhcmFtPXRoaXMuT3B0cy5kYXRhVGFibGUuYWR2YW5jZVNlYXJjaFBhcmFtZXRlclxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5zZWFyY2hTdHI9ZGF0YVRhYmxlU2VhcmNoU3RyO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5ncm91cElkPXNlbGVjdGVkUHJvZHVjdEdyb3VwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5zdXBwbGllcklkPU9yZGVyLnN1cHBsaWVySWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmRlbGl2ZXJ5RGF0ZT1PcmRlci5kZWxpdmVyeURhdGU7XG4qL1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBcImNvbHVtbkRlZnNcIjogW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRhcmdldHNcIjogY29sTnVtLTEsXG4gICAgICAgICAgICAgICAgICAgICAgICBcInJlbmRlclwiOiBmdW5jdGlvbiAoIGRhdGEsIHR5cGUsIHJvdyApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYnV0dG9ucz1BUFAuZGF0YXRhYmxlQWRkUm93Vmlld0J1dHRvbigwLGFyZ3VtZW50cyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9ucys9QVBQLmRhdGF0YWJsZUFkZFJvd0F0dGFjaG1lbnRCdXR0b24oMCxhcmd1bWVudHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vYnV0dG9ucys9QVBQLmRhdGF0YWJsZUFkZFJvd0VkaXRCdXR0b24oMCwgYXJndW1lbnRzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihyb3cuY2FuRWRpdGFibGUpe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zKz1BUFAuZGF0YXRhYmxlQWRkUm93RWRpdEJ1dHRvbigwLCB7dGl0bGU6XCJtw7Nkb3PDrXTDoXNcIn0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYnV0dG9ucztcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidGFyZ2V0c1wiOiBjb2xOdW0tMixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwicmVuZGVyXCI6IGZ1bmN0aW9uICggZGF0YSwgdHlwZSwgcm93ICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJvdy5jb25maXJtZWQ9PW51bGwpe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJzxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtcGlsbCBiYWRnZS1kYW5nZXJcIj48aSBjbGFzcz1cImZhcyBmYS1oYW5kc2hha2Utc2xhc2hcIj48L2k+PC9zcGFuPic7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByb3cuY29uZmlybWVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0YXJnZXRzXCI6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICBcInJlbmRlclwiOiBmdW5jdGlvbiAoIGRhdGEsIHR5cGUsIHJvdyApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3c9bnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHlwZSA9PT0gXCJzb3J0XCIgPyBkYXRhLmxhdGluaXNlKCkgOiBkYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgLy97IFwidmlzaWJsZVwiOiBmYWxzZSwgIFwidGFyZ2V0c1wiOiBbIDAgXSB9XG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICBidXR0b25zOntcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2V4Y2VsJywncGRmJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlbmQ6ICdwcmludCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy90ZXh0OiAnUHJpbnQgY3VycmVudCBwYWdlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGl0bGUnOiAndGl0bGUgY3VzdG9tIHRleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtZXNzYWdlVG9wJzogJ01lc3NhZ2UgT24gVG9wJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvUHJpbnQ6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogJ1N6w7xyxZFrJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb246IGZ1bmN0aW9uICggZSwgZHQsIG5vZGUsIGNvbmZpZyApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBQLmRhdGF0YWJsZUN1c3RvbUhlYWRCdXR0b25DbGlja0NhbGxCYWNrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdidG4tYWR2YW5jZVNlYXJjaFBhcmFtZXRlcidcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8qKi9cbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXCJjb2x1bW5zXCI6IHRoaXMuRHRDb2x1bW5zLFxuICAgICAgICAgICAgICAgIFwib3JkZXJcIjogb3JkZXJEaXJlY3RpdmUsXG4gICAgICAgICAgICAgICAgXCJzdGF0ZVNhdmVcIjogdHJ1ZSxcbiAgICAgICAgICAgICAgICBcImRyYXdDYWxsYmFja1wiOiBmdW5jdGlvbiggc2V0dGluZ3MgKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldHRpbmdzPW51bGw7XG4gICAgICAgICAgICAgICAgICAgIEFQUC5kYXRhdGFibGVBZGRSb3dBY3Rpb24oZGF0YVRhYmxlQ1NTU2VsZWN0b3IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gKTtcblxuICAgICAgICAgICAgdGhpcy5pbml0QWR2YW5jZWRTZWFyY2goKTtcbiAgICAgICAgICAgIGRlYnVnKCdsaXN0dmlldyBlbmQnKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB3aW5kb3cuT3JkZXJBcmNoaXZlTW9kdWxlPU9yZGVyQXJjaGl2ZU1vZHVsZTtcbn1cbiJdLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvbW9kdWxlSnMvb3JkZXJBcmNoaXZlLmpzLmpzIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./resources/js/moduleJs/orderArchive.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./resources/js/moduleJs/priceList.js":
|
||
/*!********************************************!*\
|
||
!*** ./resources/js/moduleJs/priceList.js ***!
|
||
\********************************************/
|
||
/***/ (() => {
|
||
|
||
eval("function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nif (typeof window.PriceListModule === \"undefined\") {\n var PriceListModule = /*#__PURE__*/function (_ModuleBase) {\n _inherits(PriceListModule, _ModuleBase);\n\n var _super = _createSuper(PriceListModule);\n\n function PriceListModule() {\n _classCallCheck(this, PriceListModule);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(PriceListModule, [{\n key: \"datatableRowActionAttachment\",\n value: function datatableRowActionAttachment(rowData, node) {\n debug('call datatableRowActionAttachment');\n\n _get(_getPrototypeOf(PriceListModule.prototype), \"datatableRowActionAttachment\", this).call(this, 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\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\n var colNum = $(dataTableCSSSelector + ' thead th').length; //buttons insert position need\n\n APP.setOpts({\n //datatableRowActionButtonClickCallBack:this.datatableRowActionButtonClick,\n datatableRowActionButtonClickCallBack: this.datatableRowActionButtonClick\n });\n var orderDirective = this.Opts.dataTable.orderDirective;\n\n if (typeof options['orderDirective'] != 'undefined') {\n orderDirective = options['orderDirective'];\n } //let ajaxUrl=this.Opts.URL.getDataTableContent;\n\n\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 /*\n data.searchStr=dataTableSearchStr;\n data.groupId=selectedProductGroup;\n data.supplierId=Order.supplierId;\n data.deliveryDate=Order.deliveryDate;\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 /* {\n \"targets\": 1,\n \"render\": function ( 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: [\n /* 'excel','pdf',\n {\n extend: 'print',\n //text: 'Print current page',\n 'title': 'title custom text',\n 'messageTop': 'Message On Top',\n autoPrint: true\n },\n */\n\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\n return PriceListModule;\n }(ModuleBase);\n\n ;\n window.PriceListModule = PriceListModule;\n}\n\n;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvbW9kdWxlSnMvcHJpY2VMaXN0LmpzPzI1MzkiXSwibmFtZXMiOlsid2luZG93IiwiUHJpY2VMaXN0TW9kdWxlIiwicm93RGF0YSIsIm5vZGUiLCJkZWJ1ZyIsImRlZmF1bHRGaWxlTmFtZSIsImV2ZW50Iiwicm9vdE9iaiIsIkFQUCIsIiQiLCJjdXJyZW50VGFyZ2V0Iiwicm93IiwiT3B0cyIsImRhdGFUYWJsZSIsIkNTU1NlbGVjdG9yIiwiRGF0YVRhYmxlIiwicGFyZW50cyIsImRhdGEiLCJhY3Rpb25OYW1lIiwiY2FwaXRhbGl6ZSIsIm9wdGlvbnMiLCJkYXRhVGFibGVDU1NTZWxlY3RvciIsIkNTU1NlbGVjdG9yQ29udGFpbmVyIiwiY29sTnVtIiwibGVuZ3RoIiwic2V0T3B0cyIsImRhdGF0YWJsZVJvd0FjdGlvbkJ1dHRvbkNsaWNrQ2FsbEJhY2siLCJkYXRhdGFibGVSb3dBY3Rpb25CdXR0b25DbGljayIsIm9yZGVyRGlyZWN0aXZlIiwibGFuZ3VhZ2UiLCJ1cmwiLCJVUkwiLCJnZXREYXRhVGFibGVDb250ZW50IiwidHlwZSIsImZpbGVVcmwiLCJidXR0b25zIiwiZGF0YXRhYmxlQWRkUm93QXR0YWNobWVudEJ1dHRvbiIsImFyZ3VtZW50cyIsInNldHRpbmdzIiwiZGF0YXRhYmxlQWRkUm93QWN0aW9uIiwiTW9kdWxlQmFzZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFHLE9BQU9BLE1BQU0sQ0FBQ0MsZUFBZCxLQUFpQyxXQUFwQyxFQUFpRDtBQUFBLE1BQ3ZDQSxlQUR1QztBQUFBOztBQUFBOztBQUFBO0FBQUE7O0FBQUE7QUFBQTs7QUFBQTtBQUFBO0FBQUEsYUFHekMsc0NBQTZCQyxPQUE3QixFQUFxQ0MsSUFBckMsRUFBMkM7QUFDdkNDLFFBQUFBLEtBQUssQ0FBQyxtQ0FBRCxDQUFMOztBQUNBLDBHQUFtQ0YsT0FBbkMsRUFBMkNDLElBQTNDLEVBQWdEO0FBQUNFLFVBQUFBLGVBQWUsRUFBQztBQUFqQixTQUFoRDtBQUNIO0FBTndDO0FBQUE7QUFBQSxhQU96QyxnQ0FBdUJILE9BQXZCLEVBQStCQyxJQUEvQixFQUFxQztBQUNqQ0MsUUFBQUEsS0FBSyxDQUFDLDZCQUFELENBQUw7QUFDSDtBQVR3QztBQUFBO0FBQUEsYUFXekMsdUNBQThCRSxLQUE5QixFQUFxQztBQUNqQ0YsUUFBQUEsS0FBSyxDQUFDLCtCQUFELENBQUw7QUFDQSxZQUFJRyxPQUFPLEdBQUNDLEdBQUcsQ0FBQ1AsZUFBaEI7QUFDQSxZQUFJRSxJQUFJLEdBQUdNLENBQUMsQ0FBQ0gsS0FBSyxDQUFDLENBQUQsQ0FBTCxDQUFTSSxhQUFWLENBQVo7QUFDQSxZQUFJQyxHQUFHLEdBQUdGLENBQUMsQ0FBQ0YsT0FBTyxDQUFDSyxJQUFSLENBQWFDLFNBQWIsQ0FBdUJDLFdBQXhCLENBQUQsQ0FBc0NDLFNBQXRDLEdBQWtESixHQUFsRCxDQUFzRFIsSUFBSSxDQUFDYSxPQUFMLENBQWEsSUFBYixDQUF0RCxDQUFWO0FBQ0EsWUFBSWQsT0FBTyxHQUFHUyxHQUFHLENBQUNNLElBQUosRUFBZDtBQUNBLFlBQUlDLFVBQVUsR0FBRyx1QkFBdUJmLElBQUksQ0FBQ2MsSUFBTCxDQUFVLFlBQVYsRUFBd0JFLFVBQXhCLEVBQXhDOztBQUNBLFlBQUksT0FBT1osT0FBTyxDQUFDVyxVQUFELENBQWQsS0FBK0IsVUFBbkMsRUFBK0M7QUFDM0MsaUJBQU9YLE9BQU8sQ0FBQ1csVUFBRCxDQUFQLENBQW9CaEIsT0FBcEIsRUFBNkJDLElBQTdCLENBQVA7QUFDSDtBQUNKO0FBckJ3QztBQUFBO0FBQUEsYUFzQnpDLHdCQUF5QjtBQUFBLFlBQVppQixPQUFZLHVFQUFKLEVBQUk7QUFDckJoQixRQUFBQSxLQUFLLENBQUMseUJBQUQsQ0FBTDtBQUNBLFlBQUlpQixvQkFBb0IsR0FBQyxLQUFLVCxJQUFMLENBQVVVLG9CQUFWLEdBQStCLGFBQXhELENBRnFCLENBRWtEOztBQUN2RSxZQUFJQyxNQUFNLEdBQUNkLENBQUMsQ0FBQ1ksb0JBQW9CLEdBQUMsV0FBdEIsQ0FBRCxDQUFvQ0csTUFBL0MsQ0FIcUIsQ0FHa0M7O0FBQ3ZEaEIsUUFBQUEsR0FBRyxDQUFDaUIsT0FBSixDQUFZO0FBQ1I7QUFDQUMsVUFBQUEscUNBQXFDLEVBQUMsS0FBS0M7QUFGbkMsU0FBWjtBQUlBLFlBQUlDLGNBQWMsR0FBQyxLQUFLaEIsSUFBTCxDQUFVQyxTQUFWLENBQW9CZSxjQUF2Qzs7QUFFQSxZQUFHLE9BQU9SLE9BQU8sQ0FBQyxnQkFBRCxDQUFkLElBQWtDLFdBQXJDLEVBQWlEO0FBQzdDUSxVQUFBQSxjQUFjLEdBQUNSLE9BQU8sQ0FBQyxnQkFBRCxDQUF0QjtBQUNILFNBWm9CLENBYXJCOzs7QUFDQVgsUUFBQUEsQ0FBQyxDQUFDWSxvQkFBRCxDQUFELENBQXdCTixTQUF4QixDQUFtQztBQUMvQmMsVUFBQUEsUUFBUSxFQUFFO0FBQ05DLFlBQUFBLEdBQUcsRUFBRTtBQURDLFdBRHFCO0FBSy9CO0FBQ0Esa0JBQVE7QUFDSkEsWUFBQUEsR0FBRyxFQUFDLEtBQUtsQixJQUFMLENBQVVtQixHQUFWLENBQWNDLG1CQURkO0FBRUpmLFlBQUFBLElBQUksRUFBQyxjQUFVQSxLQUFWLEVBQWdCO0FBQ2pCO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDcUI7QUFURyxXQU51QjtBQWlCL0Isd0JBQWMsQ0FDVjtBQUNJLHVCQUFXTSxNQUFNLEdBQUMsQ0FEdEI7QUFFSSxzQkFBVSxnQkFBV04sSUFBWCxFQUFpQmdCLElBQWpCLEVBQXVCdEIsR0FBdkIsRUFBNkI7QUFDbkMsa0JBQUdBLEdBQUcsQ0FBQ3VCLE9BQVAsRUFBZTtBQUNYLG9CQUFJQyxPQUFPLEdBQUMzQixHQUFHLENBQUM0QiwrQkFBSixDQUFvQyxDQUFwQyxFQUFzQ0MsU0FBdEMsQ0FBWjtBQUNBLHVCQUFPRixPQUFQO0FBQ0gsZUFIRCxNQUdLO0FBQ0QsdUJBQU8sRUFBUDtBQUNIO0FBQ0o7QUFUTDtBQVdEO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNvQjtBQW5CVSxXQWpCaUI7QUFzQy9CQSxVQUFBQSxPQUFPLEVBQUM7QUFDSkEsWUFBQUEsT0FBTyxFQUFFO0FBQ1g7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFBMEI7QUFURztBQURMLFdBdEN1QjtBQW1EL0IscUJBQVcsQ0FDUDtBQUFFLG9CQUFRO0FBQVYsV0FETyxFQUVQO0FBQUUsb0JBQVE7QUFBVixXQUZPLEVBR1A7QUFBRSxvQkFBUTtBQUFWLFdBSE8sRUFJUDtBQUFFLG9CQUFRO0FBQVYsV0FKTyxFQUtQO0FBQUUsb0JBQVE7QUFBVixXQUxPLEVBTVAsSUFOTyxDQW5Eb0I7QUEyRC9CLG1CQUFTUCxjQTNEc0I7QUE0RC9CO0FBQ0EsMEJBQWdCLHNCQUFVVSxRQUFWLEVBQXFCO0FBQ2pDQSxZQUFBQSxRQUFRLEdBQUMsSUFBVDtBQUNBOUIsWUFBQUEsR0FBRyxDQUFDK0IscUJBQUosQ0FBMEJsQixvQkFBMUI7QUFDSDtBQWhFOEIsU0FBbkM7QUFrRUFqQixRQUFBQSxLQUFLLENBQUMsY0FBRCxDQUFMO0FBQ0g7QUF2R3dDOztBQUFBO0FBQUEsSUFDZm9DLFVBRGU7O0FBeUc1QztBQUNEeEMsRUFBQUEsTUFBTSxDQUFDQyxlQUFQLEdBQXVCQSxlQUF2QjtBQUNIOztBQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaWYodHlwZW9mIHdpbmRvdy5QcmljZUxpc3RNb2R1bGUgPT09XCJ1bmRlZmluZWRcIikge1xuICAgIGNsYXNzIFByaWNlTGlzdE1vZHVsZSBleHRlbmRzIE1vZHVsZUJhc2V7XG5cbiAgICAgICAgZGF0YXRhYmxlUm93QWN0aW9uQXR0YWNobWVudChyb3dEYXRhLG5vZGUpIHtcbiAgICAgICAgICAgIGRlYnVnKCdjYWxsIGRhdGF0YWJsZVJvd0FjdGlvbkF0dGFjaG1lbnQnKTtcbiAgICAgICAgICAgIHN1cGVyLmRhdGF0YWJsZVJvd0FjdGlvbkF0dGFjaG1lbnQocm93RGF0YSxub2RlLHtkZWZhdWx0RmlsZU5hbWU6XCJhcmxpc3RhLnhsc1wifSk7XG4gICAgICAgIH1cbiAgICAgICAgZGF0YXRhYmxlUm93QWN0aW9uVmlldyhyb3dEYXRhLG5vZGUpIHtcbiAgICAgICAgICAgIGRlYnVnKCdjYWxsIGRhdGF0YWJsZVJvd0FjdGlvblZpZXcnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGRhdGF0YWJsZVJvd0FjdGlvbkJ1dHRvbkNsaWNrKGV2ZW50KSB7XG4gICAgICAgICAgICBkZWJ1ZygnZGF0YXRhYmxlUm93QWN0aW9uQnV0dG9uQ2xpY2snKTtcbiAgICAgICAgICAgIGxldCByb290T2JqPUFQUC5QcmljZUxpc3RNb2R1bGU7XG4gICAgICAgICAgICBsZXQgbm9kZSA9ICQoZXZlbnRbMF0uY3VycmVudFRhcmdldCk7XG4gICAgICAgICAgICBsZXQgcm93ID0gJChyb290T2JqLk9wdHMuZGF0YVRhYmxlLkNTU1NlbGVjdG9yKS5EYXRhVGFibGUoKS5yb3cobm9kZS5wYXJlbnRzKCd0cicpKTtcbiAgICAgICAgICAgIGxldCByb3dEYXRhID0gcm93LmRhdGEoKTtcbiAgICAgICAgICAgIGxldCBhY3Rpb25OYW1lID0gJ2RhdGF0YWJsZVJvd0FjdGlvbicgKyBub2RlLmRhdGEoJ2J1dHRvbnR5cGUnKS5jYXBpdGFsaXplKCk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHJvb3RPYmpbYWN0aW9uTmFtZV0gPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICAgIHJldHVybiByb290T2JqW2FjdGlvbk5hbWVdKHJvd0RhdGEsIG5vZGUpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaW5pdFZpZXdMaXN0KG9wdGlvbnM9e30pIHtcbiAgICAgICAgICAgIGRlYnVnKCdsaXN0dmlldyBpbmljaWFsaXphdGlvbicpO1xuICAgICAgICAgICAgbGV0IGRhdGFUYWJsZUNTU1NlbGVjdG9yPXRoaXMuT3B0cy5DU1NTZWxlY3RvckNvbnRhaW5lcisnIC5kYXRhVGFibGUnOyAvL1xuICAgICAgICAgICAgbGV0IGNvbE51bT0kKGRhdGFUYWJsZUNTU1NlbGVjdG9yKycgdGhlYWQgdGgnKS5sZW5ndGg7IC8vYnV0dG9ucyBpbnNlcnQgcG9zaXRpb24gbmVlZFxuICAgICAgICAgICAgQVBQLnNldE9wdHMoe1xuICAgICAgICAgICAgICAgIC8vZGF0YXRhYmxlUm93QWN0aW9uQnV0dG9uQ2xpY2tDYWxsQmFjazp0aGlzLmRhdGF0YWJsZVJvd0FjdGlvbkJ1dHRvbkNsaWNrLFxuICAgICAgICAgICAgICAgIGRhdGF0YWJsZVJvd0FjdGlvbkJ1dHRvbkNsaWNrQ2FsbEJhY2s6dGhpcy5kYXRhdGFibGVSb3dBY3Rpb25CdXR0b25DbGljayxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBsZXQgb3JkZXJEaXJlY3RpdmU9dGhpcy5PcHRzLmRhdGFUYWJsZS5vcmRlckRpcmVjdGl2ZTtcblxuICAgICAgICAgICAgaWYodHlwZW9mIG9wdGlvbnNbJ29yZGVyRGlyZWN0aXZlJ10hPSd1bmRlZmluZWQnKXtcbiAgICAgICAgICAgICAgICBvcmRlckRpcmVjdGl2ZT1vcHRpb25zWydvcmRlckRpcmVjdGl2ZSddO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy9sZXQgYWpheFVybD10aGlzLk9wdHMuVVJMLmdldERhdGFUYWJsZUNvbnRlbnQ7XG4gICAgICAgICAgICAkKGRhdGFUYWJsZUNTU1NlbGVjdG9yKS5EYXRhVGFibGUoIHtcbiAgICAgICAgICAgICAgICBsYW5ndWFnZToge1xuICAgICAgICAgICAgICAgICAgICB1cmw6ICcvL2Nkbi5kYXRhdGFibGVzLm5ldC9wbHVnLWlucy8xLjEwLjI0L2kxOG4vSHVuZ2FyaWFuLmpzb24nXG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIC8vXCJhamF4XCI6IFwie3thc3NldCgnZXhhcG1sZTIuanNvbicpfX1cIixcbiAgICAgICAgICAgICAgICBcImFqYXhcIjoge1xuICAgICAgICAgICAgICAgICAgICB1cmw6dGhpcy5PcHRzLlVSTC5nZXREYXRhVGFibGVDb250ZW50LFxuICAgICAgICAgICAgICAgICAgICBkYXRhOmZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5zZWFyY2hTdHI9ZGF0YVRhYmxlU2VhcmNoU3RyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5ncm91cElkPXNlbGVjdGVkUHJvZHVjdEdyb3VwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5zdXBwbGllcklkPU9yZGVyLnN1cHBsaWVySWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmRlbGl2ZXJ5RGF0ZT1PcmRlci5kZWxpdmVyeURhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBcImNvbHVtbkRlZnNcIjogW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRhcmdldHNcIjogY29sTnVtLTEsXG4gICAgICAgICAgICAgICAgICAgICAgICBcInJlbmRlclwiOiBmdW5jdGlvbiAoIGRhdGEsIHR5cGUsIHJvdyApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihyb3cuZmlsZVVybCl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBidXR0b25zPUFQUC5kYXRhdGFibGVBZGRSb3dBdHRhY2htZW50QnV0dG9uKDAsYXJndW1lbnRzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJ1dHRvbnM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgIC8qIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidGFyZ2V0c1wiOiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJyZW5kZXJcIjogZnVuY3Rpb24gKCBkYXRhLCB0eXBlLCByb3cgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93PW51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGUgPT09IFwic29ydFwiID8gZGF0YS5sYXRpbmlzZSgpIDogZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0sKi9cbiAgICAgICAgICAgICAgICAgICAgLy97IFwidmlzaWJsZVwiOiBmYWxzZSwgIFwidGFyZ2V0c1wiOiBbIDAgXSB9XG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICBidXR0b25zOntcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogW1xuICAgICAgICAgICAgICAgICAgLyogICAgICAnZXhjZWwnLCdwZGYnLFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuZDogJ3ByaW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3RleHQ6ICdQcmludCBjdXJyZW50IHBhZ2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0aXRsZSc6ICd0aXRsZSBjdXN0b20gdGV4dCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21lc3NhZ2VUb3AnOiAnTWVzc2FnZSBPbiBUb3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9QcmludDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICovICAgICAgLyoqL1xuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBcImNvbHVtbnNcIjogW1xuICAgICAgICAgICAgICAgICAgICB7IFwiZGF0YVwiOiBcImlkXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgeyBcImRhdGFcIjogXCJzdXBwbGllck5hbWVcIiB9LFxuICAgICAgICAgICAgICAgICAgICB7IFwiZGF0YVwiOiBcImF2YWlsYWJsZVwiIH0sXG4gICAgICAgICAgICAgICAgICAgIHsgXCJkYXRhXCI6IFwiY3JlYXRlZF9hdFwiIH0sXG4gICAgICAgICAgICAgICAgICAgIHsgXCJkYXRhXCI6IFwibm90ZVwiIH0sXG4gICAgICAgICAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICBcIm9yZGVyXCI6IG9yZGVyRGlyZWN0aXZlLFxuICAgICAgICAgICAgICAgIC8vXCJzdGF0ZVNhdmVcIjogdHJ1ZSxcbiAgICAgICAgICAgICAgICBcImRyYXdDYWxsYmFja1wiOiBmdW5jdGlvbiggc2V0dGluZ3MgKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldHRpbmdzPW51bGw7XG4gICAgICAgICAgICAgICAgICAgIEFQUC5kYXRhdGFibGVBZGRSb3dBY3Rpb24oZGF0YVRhYmxlQ1NTU2VsZWN0b3IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgIGRlYnVnKCdsaXN0dmlldyBlbmQnKTtcbiAgICAgICAgfVxuXG4gICAgfTtcbiAgICB3aW5kb3cuUHJpY2VMaXN0TW9kdWxlPVByaWNlTGlzdE1vZHVsZTtcbn07XG4iXSwiZmlsZSI6Ii4vcmVzb3VyY2VzL2pzL21vZHVsZUpzL3ByaWNlTGlzdC5qcy5qcyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./resources/js/moduleJs/priceList.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./resources/js/moduleJs/supplier.js":
|
||
/*!*******************************************!*\
|
||
!*** ./resources/js/moduleJs/supplier.js ***!
|
||
\*******************************************/
|
||
/***/ (() => {
|
||
|
||
eval("function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nif (typeof window.SupplierModule === \"undefined\") {\n var SupplierModule = /*#__PURE__*/function (_ModuleBase) {\n _inherits(SupplierModule, _ModuleBase);\n\n var _super = _createSuper(SupplierModule);\n\n function SupplierModule() {\n _classCallCheck(this, SupplierModule);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(SupplierModule, [{\n key: \"datatableRowActionAttachment\",\n value: function datatableRowActionAttachment(rowData, node) {\n debug('call datatableRowActionAttachment');\n\n _get(_getPrototypeOf(SupplierModule.prototype), \"datatableRowActionAttachment\", this).call(this, rowData, node, {\n defaultFileName: \"arlista.xls\"\n });\n }\n }, {\n key: \"datatableRowActionView\",\n value: function datatableRowActionView(rowData, node) {\n debug('call datatableRowActionView');\n\n _get(_getPrototypeOf(SupplierModule.prototype), \"datatableRowActionView\", this).call(this, 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\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\n var colNum = $(dataTableCSSSelector + ' thead th').length; //buttons insert position need\n\n APP.setOpts({\n //datatableRowActionButtonClickCallBack:this.datatableRowActionButtonClick,\n datatableRowActionButtonClickCallBack: this.datatableRowActionButtonClick\n });\n var orderDirective = this.Opts.dataTable.orderDirective;\n\n if (typeof options['orderDirective'] != 'undefined') {\n orderDirective = options['orderDirective'];\n } //let ajaxUrl=this.Opts.URL.getDataTableContent;\n\n\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 \"targets\": colNum - 2,\n \"className\": \"dt-center\",\n \"render\": function render(data, type, row) {\n if (row.canSeeInOrder == 1) {\n return '<i class=\"fa fa-check-circle\" style=\"color: #087756;\"></i>';\n } else {\n return '<i class=\"fa fa-ban\" style=\"color: #ea1031;\"></i>';\n }\n }\n }],\n buttons: {\n buttons: []\n },\n \"columns\": [{\n \"data\": \"name\"\n }, {\n \"data\": \"product_group\"\n }, {\n \"data\": \"service\"\n }, {\n \"data\": \"canSeeInOrder\"\n },\n /*\n { \"data\": \"hooreycaId\" },\n { \"data\": \"nameId\" },\n { \"data\": \"created_at\" },\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; //console.log(contactData);\n\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\n return SupplierModule;\n }(ModuleBase);\n\n ;\n window.SupplierModule = SupplierModule;\n}\n\n;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvbW9kdWxlSnMvc3VwcGxpZXIuanM/ZTQ4OSJdLCJuYW1lcyI6WyJ3aW5kb3ciLCJTdXBwbGllck1vZHVsZSIsInJvd0RhdGEiLCJub2RlIiwiZGVidWciLCJkZWZhdWx0RmlsZU5hbWUiLCJBUFAiLCJldmVudCIsInJvb3RPYmoiLCIkIiwiY3VycmVudFRhcmdldCIsInJvdyIsIk9wdHMiLCJkYXRhVGFibGUiLCJDU1NTZWxlY3RvciIsIkRhdGFUYWJsZSIsInBhcmVudHMiLCJkYXRhIiwiYWN0aW9uTmFtZSIsImNhcGl0YWxpemUiLCJzZWxlY3QyIiwiZGlzYWJsZWQiLCJyZW5kZXJDb250YWN0Iiwib3B0aW9ucyIsImRhdGFUYWJsZUNTU1NlbGVjdG9yIiwiQ1NTU2VsZWN0b3JDb250YWluZXIiLCJjb2xOdW0iLCJsZW5ndGgiLCJzZXRPcHRzIiwiZGF0YXRhYmxlUm93QWN0aW9uQnV0dG9uQ2xpY2tDYWxsQmFjayIsImRhdGF0YWJsZVJvd0FjdGlvbkJ1dHRvbkNsaWNrIiwib3JkZXJEaXJlY3RpdmUiLCJsYW5ndWFnZSIsInVybCIsIlVSTCIsImdldERhdGFUYWJsZUNvbnRlbnQiLCJ0eXBlIiwiYnV0dG9ucyIsImRhdGF0YWJsZUFkZFJvd1ZpZXdCdXR0b24iLCJhcmd1bWVudHMiLCJjYW5TZWVJbk9yZGVyIiwic2V0dGluZ3MiLCJkYXRhdGFibGVBZGRSb3dBY3Rpb24iLCJyb3dOdW0iLCJjb25zb2xlIiwibG9nIiwiZWFjaCIsIlN1cHBsaWVyIiwiZ2V0RGF0YSIsImNvbnRhY3REYXRhIiwidGVtcGxhdGUiLCJodG1sIiwicmVuZGVyIiwiTXVzdGFjaGUiLCJhcHBlbmQiLCJNb2R1bGVCYXNlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElBQUcsT0FBT0EsTUFBTSxDQUFDQyxjQUFkLEtBQWdDLFdBQW5DLEVBQWdEO0FBQUEsTUFDdENBLGNBRHNDO0FBQUE7O0FB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QTFCO0FBQ0g7QUFwRDhCLFNBQW5DO0FBc0RBcEIsUUFBQUEsS0FBSyxDQUFDLGNBQUQsQ0FBTDtBQUNIO0FBMUd1QztBQUFBO0FBQUEsYUEyR3hDLHlCQUFlO0FBQ1gsWUFBSXVDLE1BQU0sR0FBQyxDQUFYO0FBQ0FDLFFBQUFBLE9BQU8sQ0FBQ0MsR0FBUixDQUFZLG1CQUFaO0FBQ0FwQyxRQUFBQSxDQUFDLENBQUNxQyxJQUFGLENBQU94QyxHQUFHLENBQUN5QyxRQUFKLENBQWFDLE9BQWIsQ0FBcUIsU0FBckIsQ0FBUCxFQUF1QyxZQUFXO0FBQzlDLGNBQUlDLFdBQVcsR0FBQyxJQUFoQjtBQUNBQSxVQUFBQSxXQUFXLENBQUNOLE1BQVosR0FBbUJBLE1BQW5CLENBRjhDLENBRzlDOztBQUNBLGNBQUlPLFFBQVEsR0FBQ3pDLENBQUMsQ0FBQywrQ0FBRCxDQUFELENBQW1EMEMsSUFBbkQsRUFBYjtBQUNBLGNBQUlDLE1BQU0sR0FBQ0MsUUFBUSxDQUFDRCxNQUFULENBQWdCRixRQUFoQixFQUF5QkQsV0FBekIsQ0FBWDtBQUNBeEMsVUFBQUEsQ0FBQyxDQUFDLHFCQUFELENBQUQsQ0FBeUI2QyxNQUF6QixDQUFnQ0YsTUFBaEM7QUFDQVQsVUFBQUEsTUFBTTtBQUNULFNBUkQ7QUFTSDtBQXZIdUM7O0FBQUE7QUFBQSxJQUNmWSxVQURlOztBQXlIM0M7QUFDRHZELEVBQUFBLE1BQU0sQ0FBQ0MsY0FBUCxHQUFzQkEsY0FBdEI7QUFDSDs7QUFBQSIsInNvdXJjZXNDb250ZW50IjpbImlmKHR5cGVvZiB3aW5kb3cuU3VwcGxpZXJNb2R1bGUgPT09XCJ1bmRlZmluZWRcIikge1xuICAgIGNsYXNzIFN1cHBsaWVyTW9kdWxlIGV4dGVuZHMgTW9kdWxlQmFzZXtcblxuICAgICAgICBkYXRhdGFibGVSb3dBY3Rpb25BdHRhY2htZW50KHJvd0RhdGEsbm9kZSkge1xuICAgICAgICAgICAgZGVidWcoJ2NhbGwgZGF0YXRhYmxlUm93QWN0aW9uQXR0YWNobWVudCcpO1xuICAgICAgICAgICAgc3VwZXIuZGF0YXRhYmxlUm93QWN0aW9uQXR0YWNobWVudChyb3dEYXRhLG5vZGUse2RlZmF1bHRGaWxlTmFtZTpcImFybGlzdGEueGxzXCJ9KTtcbiAgICAgICAgfVxuICAgICAgICBkYXRhdGFibGVSb3dBY3Rpb25WaWV3KHJvd0RhdGEsbm9kZSkge1xuICAgICAgICAgICAgZGVidWcoJ2NhbGwgZGF0YXRhYmxlUm93QWN0aW9uVmlldycpO1xuICAgICAgICAgICAgc3VwZXIuZGF0YXRhYmxlUm93QWN0aW9uVmlldyhyb3dEYXRhLG5vZGUsQVBQLlN1cHBsaWVyTW9kdWxlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGRhdGF0YWJsZVJvd0FjdGlvbkJ1dHRvbkNsaWNrKGV2ZW50KSB7XG4gICAgICAgICAgICBkZWJ1ZygnZGF0YXRhYmxlUm93QWN0aW9uQnV0dG9uQ2xpY2snKTtcbiAgICAgICAgICAgIGxldCByb290T2JqPUFQUC5TdXBwbGllck1vZHVsZTtcbiAgICAgICAgICAgIGxldCBub2RlID0gJChldmVudFswXS5jdXJyZW50VGFyZ2V0KTtcbiAgICAgICAgICAgIGxldCByb3cgPSAkKHJvb3RPYmouT3B0cy5kYXRhVGFibGUuQ1NTU2VsZWN0b3IpLkRhdGFUYWJsZSgpLnJvdyhub2RlLnBhcmVudHMoJ3RyJykpO1xuICAgICAgICAgICAgbGV0IHJvd0RhdGEgPSByb3cuZGF0YSgpO1xuICAgICAgICAgICAgbGV0IGFjdGlvbk5hbWUgPSAnZGF0YXRhYmxlUm93QWN0aW9uJyArIG5vZGUuZGF0YSgnYnV0dG9udHlwZScpLmNhcGl0YWxpemUoKTtcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygcm9vdE9ialthY3Rpb25OYW1lXSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJvb3RPYmpbYWN0aW9uTmFtZV0ocm93RGF0YSwgbm9kZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpbml0Vmlld1Nob3coKXtcbiAgICAgICAgICAgICQoJy5wcm9kdWN0Q2F0ZWdvcnlTZWxlY3QnKS5zZWxlY3QyKFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6dHJ1ZSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgJCgnLnNlcnZpY2VTZWxlY3QnKS5zZWxlY3QyKFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6dHJ1ZSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBBUFAuU3VwcGxpZXJNb2R1bGUucmVuZGVyQ29udGFjdCgpO1xuICAgICAgICB9XG4gICAgICAgIGluaXRWaWV3TGlzdChvcHRpb25zPXt9KSB7XG4gICAgICAgICAgICBkZWJ1ZygnbGlzdHZpZXcgaW5pY2lhbGl6YXRpb24nKTtcbiAgICAgICAgICAgIGxldCBkYXRhVGFibGVDU1NTZWxlY3Rvcj10aGlzLk9wdHMuQ1NTU2VsZWN0b3JDb250YWluZXIrJyAuZGF0YVRhYmxlJzsgLy9cbiAgICAgICAgICAgIGxldCBjb2xOdW09JChkYXRhVGFibGVDU1NTZWxlY3RvcisnIHRoZWFkIHRoJykubGVuZ3RoOyAvL2J1dHRvbnMgaW5zZXJ0IHBvc2l0aW9uIG5lZWRcbiAgICAgICAgICAgIEFQUC5zZXRPcHRzKHtcbiAgICAgICAgICAgICAgICAvL2RhdGF0YWJsZVJvd0FjdGlvbkJ1dHRvbkNsaWNrQ2FsbEJhY2s6dGhpcy5kYXRhdGFibGVSb3dBY3Rpb25CdXR0b25DbGljayxcbiAgICAgICAgICAgICAgICBkYXRhdGFibGVSb3dBY3Rpb25CdXR0b25DbGlja0NhbGxCYWNrOnRoaXMuZGF0YXRhYmxlUm93QWN0aW9uQnV0dG9uQ2xpY2ssXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgbGV0IG9yZGVyRGlyZWN0aXZlPXRoaXMuT3B0cy5kYXRhVGFibGUub3JkZXJEaXJlY3RpdmU7XG5cbiAgICAgICAgICAgIGlmKHR5cGVvZiBvcHRpb25zWydvcmRlckRpcmVjdGl2ZSddIT0ndW5kZWZpbmVkJyl7XG4gICAgICAgICAgICAgICAgb3JkZXJEaXJlY3RpdmU9b3B0aW9uc1snb3JkZXJEaXJlY3RpdmUnXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vbGV0IGFqYXhVcmw9dGhpcy5PcHRzLlVSTC5nZXREYXRhVGFibGVDb250ZW50O1xuICAgICAgICAgICAgJChkYXRhVGFibGVDU1NTZWxlY3RvcikuRGF0YVRhYmxlKCB7XG4gICAgICAgICAgICAgICAgbGFuZ3VhZ2U6IHtcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAnLy9jZG4uZGF0YXRhYmxlcy5uZXQvcGx1Zy1pbnMvMS4xMC4yNC9pMThuL0h1bmdhcmlhbi5qc29uJ1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXCJhamF4XCI6IHtcbiAgICAgICAgICAgICAgICAgICAgdXJsOnRoaXMuT3B0cy5VUkwuZ2V0RGF0YVRhYmxlQ29udGVudCxcbiAgICAgICAgICAgICAgICAgICAgZGF0YTpmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBcImNvbHVtbkRlZnNcIjogW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRhcmdldHNcIjogY29sTnVtLTEsXG4gICAgICAgICAgICAgICAgICAgICAgICBcInJlbmRlclwiOiBmdW5jdGlvbiAoIGRhdGEsIHR5cGUsIHJvdyApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYnV0dG9ucz1BUFAuZGF0YXRhYmxlQWRkUm93Vmlld0J1dHRvbigwLGFyZ3VtZW50cyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJ1dHRvbnM7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRhcmdldHNcIjogY29sTnVtLTIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImNsYXNzTmFtZVwiOiBcImR0LWNlbnRlclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJyZW5kZXJcIjogZnVuY3Rpb24gKCBkYXRhLCB0eXBlLCByb3cgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYocm93LmNhblNlZUluT3JkZXI9PTEpe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJzxpIGNsYXNzPVwiZmEgZmEtY2hlY2stY2lyY2xlXCIgc3R5bGU9XCJjb2xvcjogIzA4Nzc1NjtcIj48L2k+JztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICc8aSBjbGFzcz1cImZhIGZhLWJhblwiIHN0eWxlPVwiY29sb3I6ICNlYTEwMzE7XCI+PC9pPic7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICBidXR0b25zOntcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogW1xuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBcImNvbHVtbnNcIjogW1xuICAgICAgICAgICAgICAgICAgICB7IFwiZGF0YVwiOiBcIm5hbWVcIiB9LFxuICAgICAgICAgICAgICAgICAgICB7IFwiZGF0YVwiOiBcInByb2R1Y3RfZ3JvdXBcIiB9LFxuICAgICAgICAgICAgICAgICAgICB7IFwiZGF0YVwiOiBcInNlcnZpY2VcIiB9LFxuICAgICAgICAgICAgICAgICAgICB7IFwiZGF0YVwiOiBcImNhblNlZUluT3JkZXJcIiB9LFxuICAgICAgICAgICAgICAgICAgICAvKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IFwiZGF0YVwiOiBcImhvb3JleWNhSWRcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IFwiZGF0YVwiOiBcIm5hbWVJZFwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgXCJkYXRhXCI6IFwiY3JlYXRlZF9hdFwiIH0sXG4gICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgXCJvcmRlclwiOiBvcmRlckRpcmVjdGl2ZSxcbiAgICAgICAgICAgICAgICAvL1wic3RhdGVTYXZlXCI6IHRydWUsXG4gICAgICAgICAgICAgICAgXCJkcmF3Q2FsbGJhY2tcIjogZnVuY3Rpb24oIHNldHRpbmdzICkge1xuICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncz1udWxsO1xuICAgICAgICAgICAgICAgICAgICBBUFAuZGF0YXRhYmxlQWRkUm93QWN0aW9uKGRhdGFUYWJsZUNTU1NlbGVjdG9yKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICBkZWJ1ZygnbGlzdHZpZXcgZW5kJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmVuZGVyQ29udGFjdCgpe1xuICAgICAgICAgICAgbGV0IHJvd051bT0xO1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ3JlbmRlcmluZ0NvbnRhY3RzJyk7XG4gICAgICAgICAgICAkLmVhY2goQVBQLlN1cHBsaWVyLmdldERhdGEoJ2NvbnRhY3QnKSxmdW5jdGlvbiAoKXtcbiAgICAgICAgICAgICAgICBsZXQgY29udGFjdERhdGE9dGhpcztcbiAgICAgICAgICAgICAgICBjb250YWN0RGF0YS5yb3dOdW09cm93TnVtO1xuICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coY29udGFjdERhdGEpO1xuICAgICAgICAgICAgICAgIGxldCB0ZW1wbGF0ZT0kKCd0ZW1wbGF0ZVtkYXRhLW5hbWU9XCJzdXBwbGllckNvbnRhY3RUYWJsZVJvd1wiXScpLmh0bWwoKVxuICAgICAgICAgICAgICAgIGxldCByZW5kZXI9TXVzdGFjaGUucmVuZGVyKHRlbXBsYXRlLGNvbnRhY3REYXRhKTtcbiAgICAgICAgICAgICAgICAkKCcuY29udGFjdFRhYmxlIHRib2R5JykuYXBwZW5kKHJlbmRlcik7XG4gICAgICAgICAgICAgICAgcm93TnVtKys7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgfTtcbiAgICB3aW5kb3cuU3VwcGxpZXJNb2R1bGU9U3VwcGxpZXJNb2R1bGU7XG59O1xuIl0sImZpbGUiOiIuL3Jlc291cmNlcy9qcy9tb2R1bGVKcy9zdXBwbGllci5qcy5qcyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./resources/js/moduleJs/supplier.js\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"]();
|
||
/******/
|
||
/******/ })()
|
||
; |