No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

376 líneas
37KB

  1. (self["webpackChunk"] = self["webpackChunk"] || []).push([["adminlte-common"],{
  2. /***/ "../LaClicBundle/SovBundle/Resources/assets/app/adminlte/common/app.common.js":
  3. /*!************************************************************************************!*\
  4. !*** ../LaClicBundle/SovBundle/Resources/assets/app/adminlte/common/app.common.js ***!
  5. \************************************************************************************/
  6. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  7. "use strict";
  8. __webpack_require__.r(__webpack_exports__);
  9. /* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "./node_modules/jquery/src/jquery.js");
  10. /* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
  11. /* harmony import */ var adminlte_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! adminlte-js */ "./node_modules/admin-lte/dist/js/adminlte.min.js");
  12. /* harmony import */ var adminlte_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(adminlte_js__WEBPACK_IMPORTED_MODULE_1__);
  13. /* harmony import */ var adminlte_plugin_bootstrap_js_bootstrap_min_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! adminlte-plugin/bootstrap/js/bootstrap.min.js */ "./node_modules/admin-lte/plugins/bootstrap/js/bootstrap.min.js");
  14. /* harmony import */ var adminlte_plugin_bootstrap_js_bootstrap_min_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(adminlte_plugin_bootstrap_js_bootstrap_min_js__WEBPACK_IMPORTED_MODULE_2__);
  15. /* harmony import */ var adminlte_plugin_select2_js_select2_min_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! adminlte-plugin/select2/js/select2.min.js */ "./node_modules/admin-lte/plugins/select2/js/select2.min.js");
  16. /* harmony import */ var adminlte_plugin_select2_js_select2_min_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(adminlte_plugin_select2_js_select2_min_js__WEBPACK_IMPORTED_MODULE_3__);
  17. /* harmony import */ var adminlte_plugin_select2_js_i18n_fr_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! adminlte-plugin/select2/js/i18n/fr.js */ "./node_modules/admin-lte/plugins/select2/js/i18n/fr.js");
  18. /* harmony import */ var adminlte_plugin_select2_js_i18n_fr_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(adminlte_plugin_select2_js_i18n_fr_js__WEBPACK_IMPORTED_MODULE_4__);
  19. /* harmony import */ var adminlte_plugin_select2_css_select2_min_css__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! adminlte-plugin/select2/css/select2.min.css */ "./node_modules/admin-lte/plugins/select2/css/select2.min.css");
  20. /* harmony import */ var adminlte_plugin_select2_bootstrap4_theme_select2_bootstrap4_min_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! adminlte-plugin/select2-bootstrap4-theme/select2-bootstrap4.min.css */ "./node_modules/admin-lte/plugins/select2-bootstrap4-theme/select2-bootstrap4.min.css");
  21. /* harmony import */ var toastr_toastr_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! toastr/toastr.js */ "./node_modules/toastr/toastr.js");
  22. /* harmony import */ var toastr_toastr_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(toastr_toastr_js__WEBPACK_IMPORTED_MODULE_7__);
  23. /* harmony import */ var toastr_toastr_scss__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! toastr/toastr.scss */ "./node_modules/toastr/toastr.scss");
  24. /* harmony import */ var _tools_tools_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../tools/tools.js */ "../LaClicBundle/SovBundle/Resources/assets/tools/tools.js");
  25. /* harmony import */ var _js_notification_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./js/notification.js */ "../LaClicBundle/SovBundle/Resources/assets/app/adminlte/common/js/notification.js");
  26. /* harmony import */ var _common_scss__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./common.scss */ "../LaClicBundle/SovBundle/Resources/assets/app/adminlte/common/common.scss");
  27. /* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./common.js */ "../LaClicBundle/SovBundle/Resources/assets/app/adminlte/common/common.js");
  28. /* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_common_js__WEBPACK_IMPORTED_MODULE_12__);
  29. // JQuery
  30. __webpack_require__.g.$ = __webpack_require__.g.jQuery = $; // Adminlte
  31. // Bootstrap
  32. // Select2
  33. // Toastr
  34. __webpack_require__.g.toastr = (toastr_toastr_js__WEBPACK_IMPORTED_MODULE_7___default()); // Tools
  35. __webpack_require__.g.Tools = _tools_tools_js__WEBPACK_IMPORTED_MODULE_9__.Tools;
  36. __webpack_require__.g.Notification = _js_notification_js__WEBPACK_IMPORTED_MODULE_10__.Notification;
  37. _js_notification_js__WEBPACK_IMPORTED_MODULE_10__.Notification.init(); // Common
  38. /***/ }),
  39. /***/ "../LaClicBundle/SovBundle/Resources/assets/app/adminlte/common/common.js":
  40. /*!********************************************************************************!*\
  41. !*** ../LaClicBundle/SovBundle/Resources/assets/app/adminlte/common/common.js ***!
  42. \********************************************************************************/
  43. /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
  44. __webpack_require__(/*! core-js/modules/es.array.find.js */ "./node_modules/core-js/modules/es.array.find.js");
  45. /* Notifications */
  46. //Notification.init() ;
  47. /* Tooltip */
  48. $('[data-toggle="tooltip"]').tooltip();
  49. /* Select2 */
  50. if ($('.select2, select.form-control').length) {
  51. $('form .form-widget>select.form-control, .select2').each(function (i, elm) {
  52. if (!$(this).hasClass('disable-select2')) {
  53. setSelect2($(elm));
  54. }
  55. });
  56. $('form select.form-control').each(function (i, elm) {
  57. if (!$(this).hasClass('disable-select2')) {
  58. setSelect2($(elm));
  59. }
  60. });
  61. }
  62. function setSelect2($select) {
  63. if (typeof $select.data('select2-id') === 'undefined') {
  64. $select.data('init', 'set');
  65. var options = {
  66. width: "100%",
  67. theme: "bootstrap4",
  68. dropdownAutoWidth: false,
  69. allowClear: true,
  70. minimumResultsForSearch: 8
  71. };
  72. if ($select.data('allow-clear') == 'false') {
  73. options.allowClear = false;
  74. }
  75. if ($select.data('width')) {
  76. options.width = 'auto';
  77. }
  78. if ($select.find('option[value=""]')) {
  79. options.placeholder = $select.find('option[value=""]').html();
  80. }
  81. /*if($select.is(':required') == false) {
  82. options.allowclear = true
  83. }*/
  84. var myselect = $select.select2(options);
  85. myselect.on('select2:select', function (e) {
  86. var event = new Event('change');
  87. e.target.dispatchEvent(event);
  88. });
  89. myselect.on('select2:unselect', function (e) {
  90. var event = new Event('change');
  91. e.target.dispatchEvent(event);
  92. });
  93. return myselect;
  94. }
  95. }
  96. $('.action-delete').on('click', function (e) {
  97. e.preventDefault();
  98. var formAction = $(this).attr('formaction');
  99. $('#modal-delete').modal({
  100. backdrop: true,
  101. keyboard: true
  102. }).off('click', '#modal-delete-button').on('click', '#modal-delete-button', function () {
  103. var deleteForm = $('#delete-form');
  104. deleteForm.attr('action', formAction);
  105. deleteForm.submit();
  106. });
  107. });
  108. /***/ }),
  109. /***/ "../LaClicBundle/SovBundle/Resources/assets/app/adminlte/common/js/notification.js":
  110. /*!*****************************************************************************************!*\
  111. !*** ../LaClicBundle/SovBundle/Resources/assets/app/adminlte/common/js/notification.js ***!
  112. \*****************************************************************************************/
  113. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  114. "use strict";
  115. __webpack_require__.r(__webpack_exports__);
  116. /* harmony export */ __webpack_require__.d(__webpack_exports__, {
  117. /* harmony export */ "Notification": () => (/* binding */ Notification)
  118. /* harmony export */ });
  119. /* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.includes.js */ "./node_modules/core-js/modules/es.array.includes.js");
  120. /* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0__);
  121. /* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.string.includes.js */ "./node_modules/core-js/modules/es.string.includes.js");
  122. /* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_1__);
  123. /* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.find.js */ "./node_modules/core-js/modules/es.array.find.js");
  124. /* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_2__);
  125. /* harmony import */ var core_js_modules_es_object_define_property_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.define-property.js */ "./node_modules/core-js/modules/es.object.define-property.js");
  126. /* harmony import */ var core_js_modules_es_object_define_property_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_define_property_js__WEBPACK_IMPORTED_MODULE_3__);
  127. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  128. function _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); } }
  129. function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
  130. var Notification = /*#__PURE__*/function () {
  131. function Notification() {
  132. _classCallCheck(this, Notification);
  133. }
  134. _createClass(Notification, null, [{
  135. key: "init",
  136. value: function init() {
  137. toastr.options.timeOut = 3000;
  138. toastr.options.positionClass = 'toast-bottom-right';
  139. toastr.options.onHidden = function () {
  140. if ($('#toast-container .toast').length == 1) {
  141. $('#toast-close-all').remove();
  142. }
  143. };
  144. }
  145. }, {
  146. key: "set",
  147. value: function set(notifications) {
  148. var currentNotifications = new Array();
  149. for (var type in notifications) {
  150. for (var key in notifications[type]) {
  151. if (!currentNotifications.includes(notifications[type][key])) {
  152. currentNotifications.push(notifications[type][key]);
  153. self.add(type, notifications[type][key]);
  154. }
  155. }
  156. }
  157. }
  158. }, {
  159. key: "add",
  160. value: function add(type, text) {
  161. toastr[type](text);
  162. var $container = $('#toast-container');
  163. var selectorButtonCloseAll = '#toast-close-all';
  164. var countMessages = $container.find('.toast').length;
  165. if ($(selectorButtonCloseAll).length == 0 && countMessages > 2) {
  166. $container.prepend('<button id="toast-close-all"><i class="fa fa-times"></i></button>');
  167. }
  168. $(selectorButtonCloseAll).off('click').on('click', function () {
  169. toastr.remove();
  170. if (countMessages == 0) {
  171. $('#toast-close-all').remove();
  172. }
  173. });
  174. }
  175. }]);
  176. return Notification;
  177. }();
  178. /***/ }),
  179. /***/ "../LaClicBundle/SovBundle/Resources/assets/tools/tools.js":
  180. /*!*****************************************************************!*\
  181. !*** ../LaClicBundle/SovBundle/Resources/assets/tools/tools.js ***!
  182. \*****************************************************************/
  183. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  184. "use strict";
  185. __webpack_require__.r(__webpack_exports__);
  186. /* harmony export */ __webpack_require__.d(__webpack_exports__, {
  187. /* harmony export */ "Tools": () => (/* binding */ Tools)
  188. /* harmony export */ });
  189. /* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ "./node_modules/core-js/modules/es.array.filter.js");
  190. /* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_0__);
  191. /* harmony import */ var core_js_modules_es_date_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.date.to-string.js */ "./node_modules/core-js/modules/es.date.to-string.js");
  192. /* harmony import */ var core_js_modules_es_date_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_date_to_string_js__WEBPACK_IMPORTED_MODULE_1__);
  193. /* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ "./node_modules/core-js/modules/es.regexp.exec.js");
  194. /* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_2__);
  195. /* harmony import */ var core_js_modules_es_string_search_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.string.search.js */ "./node_modules/core-js/modules/es.string.search.js");
  196. /* harmony import */ var core_js_modules_es_string_search_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_search_js__WEBPACK_IMPORTED_MODULE_3__);
  197. /* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.string.split.js */ "./node_modules/core-js/modules/es.string.split.js");
  198. /* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_4__);
  199. /* harmony import */ var core_js_modules_es_object_define_property_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.object.define-property.js */ "./node_modules/core-js/modules/es.object.define-property.js");
  200. /* harmony import */ var core_js_modules_es_object_define_property_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_define_property_js__WEBPACK_IMPORTED_MODULE_5__);
  201. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  202. function _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); } }
  203. function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
  204. var Tools = /*#__PURE__*/function () {
  205. function Tools() {
  206. _classCallCheck(this, Tools);
  207. }
  208. _createClass(Tools, null, [{
  209. key: "log",
  210. value: function log(value) {
  211. try {
  212. console.log(value);
  213. } catch (_unused) {}
  214. }
  215. }, {
  216. key: "arrayRemove",
  217. value: function arrayRemove(arr, value) {
  218. return arr.filter(function (ele) {
  219. return ele != value;
  220. });
  221. }
  222. }, {
  223. key: "toPlainText",
  224. value: function toPlainText(html) {
  225. var scratchDiv = document.createElement('div');
  226. scratchDiv.innerHTML = html;
  227. return scratchDiv.textContent;
  228. }
  229. }, {
  230. key: "getDateFormatted",
  231. value: function getDateFormatted(date, separator) {
  232. if (date) {
  233. var date = new Date(date);
  234. var _d = date.getDate(),
  235. d = _d > 9 ? _d : '0' + _d,
  236. _m = date.getMonth() + 1,
  237. m = _m > 9 ? _m : '0' + _m,
  238. formatted = d + separator + m + separator + date.getFullYear();
  239. return formatted;
  240. } else {
  241. return '';
  242. }
  243. }
  244. }, {
  245. key: "getUrlParameter",
  246. value: function getUrlParameter(sParam) {
  247. var sPageURL = window.location.search.substring(1),
  248. sURLVariables = sPageURL.split('&'),
  249. sParameterName,
  250. i;
  251. for (i = 0; i < sURLVariables.length; i++) {
  252. sParameterName = sURLVariables[i].split('=');
  253. if (sParameterName[0] === sParam) {
  254. return sParameterName[1] === undefined ? true : decodeURIComponent(sParameterName[1]);
  255. }
  256. }
  257. }
  258. }, {
  259. key: "indexOfFirstDigit",
  260. value: function indexOfFirstDigit(input) {
  261. var i = 0;
  262. for (; input[i] < '0' || input[i] > '9'; i++) {
  263. ;
  264. }
  265. return i == input.length ? -1 : i;
  266. }
  267. }, {
  268. key: "indexOfLastDigit",
  269. value: function indexOfLastDigit(input) {
  270. var i = input.length - 1;
  271. for (; input[i] < '0' || input[i] > '9'; i--) {
  272. ;
  273. }
  274. return i == input.length ? -1 : i;
  275. }
  276. }]);
  277. return Tools;
  278. }();
  279. /***/ }),
  280. /***/ "../LaClicBundle/SovBundle/Resources/assets/app/adminlte/common/common.scss":
  281. /*!**********************************************************************************!*\
  282. !*** ../LaClicBundle/SovBundle/Resources/assets/app/adminlte/common/common.scss ***!
  283. \**********************************************************************************/
  284. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  285. "use strict";
  286. __webpack_require__.r(__webpack_exports__);
  287. // extracted by mini-css-extract-plugin
  288. /***/ })
  289. },
  290. /******/ __webpack_require__ => { // webpackRuntimeModules
  291. /******/ "use strict";
  292. /******/
  293. /******/ var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
  294. /******/ __webpack_require__.O(0, ["vendors-node_modules_core-js_internals_a-function_js-node_modules_core-js_internals_export_js","vendors-node_modules_core-js_modules_es_array_find_js","vendors-node_modules_core-js_internals_advance-string-index_js-node_modules_core-js_internals-bed4a0","vendors-node_modules_jquery_src_jquery_js","vendors-node_modules_admin-lte_dist_js_adminlte_min_js-node_modules_admin-lte_plugins_bootstr-9c1f64"], () => (__webpack_exec__("../LaClicBundle/SovBundle/Resources/assets/app/adminlte/common/app.common.js")));
  295. /******/ var __webpack_exports__ = __webpack_require__.O();
  296. /******/ }
  297. ]);
  298. //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vTGFDbGljQnVuZGxlL1NvdkJ1bmRsZS9SZXNvdXJjZXMvYXNzZXRzL2FwcC9hZG1pbmx0ZS9jb21tb24vYXBwLmNvbW1vbi5qcyIsIndlYnBhY2s6Ly8vLi4vTGFDbGljQnVuZGxlL1NvdkJ1bmRsZS9SZXNvdXJjZXMvYXNzZXRzL2FwcC9hZG1pbmx0ZS9jb21tb24vY29tbW9uLmpzIiwid2VicGFjazovLy8uLi9MYUNsaWNCdW5kbGUvU292QnVuZGxlL1Jlc291cmNlcy9hc3NldHMvYXBwL2FkbWlubHRlL2NvbW1vbi9qcy9ub3RpZmljYXRpb24uanMiLCJ3ZWJwYWNrOi8vLy4uL0xhQ2xpY0J1bmRsZS9Tb3ZCdW5kbGUvUmVzb3VyY2VzL2Fzc2V0cy90b29scy90b29scy5qcyIsIndlYnBhY2s6Ly8vLi4vTGFDbGljQnVuZGxlL1NvdkJ1bmRsZS9SZXNvdXJjZXMvYXNzZXRzL2FwcC9hZG1pbmx0ZS9jb21tb24vY29tbW9uLnNjc3MiXSwibmFtZXMiOlsiZ2xvYmFsIiwiJCIsImpRdWVyeSIsInRvYXN0ciIsIlRvb2xzIiwiTm90aWZpY2F0aW9uIiwidG9vbHRpcCIsImxlbmd0aCIsImVhY2giLCJpIiwiZWxtIiwiaGFzQ2xhc3MiLCJzZXRTZWxlY3QyIiwiJHNlbGVjdCIsImRhdGEiLCJvcHRpb25zIiwid2lkdGgiLCJ0aGVtZSIsImRyb3Bkb3duQXV0b1dpZHRoIiwiYWxsb3dDbGVhciIsIm1pbmltdW1SZXN1bHRzRm9yU2VhcmNoIiwiZmluZCIsInBsYWNlaG9sZGVyIiwiaHRtbCIsIm15c2VsZWN0Iiwic2VsZWN0MiIsIm9uIiwiZSIsImV2ZW50IiwiRXZlbnQiLCJ0YXJnZXQiLCJkaXNwYXRjaEV2ZW50IiwicHJldmVudERlZmF1bHQiLCJmb3JtQWN0aW9uIiwiYXR0ciIsIm1vZGFsIiwiYmFja2Ryb3AiLCJrZXlib2FyZCIsIm9mZiIsImRlbGV0ZUZvcm0iLCJzdWJtaXQiLCJ0aW1lT3V0IiwicG9zaXRpb25DbGFzcyIsIm9uSGlkZGVuIiwicmVtb3ZlIiwibm90aWZpY2F0aW9ucyIsImN1cnJlbnROb3RpZmljYXRpb25zIiwiQXJyYXkiLCJ0eXBlIiwia2V5IiwiaW5jbHVkZXMiLCJwdXNoIiwic2VsZiIsImFkZCIsInRleHQiLCIkY29udGFpbmVyIiwic2VsZWN0b3JCdXR0b25DbG9zZUFsbCIsImNvdW50TWVzc2FnZXMiLCJwcmVwZW5kIiwidmFsdWUiLCJjb25zb2xlIiwibG9nIiwiYXJyIiwiZmlsdGVyIiwiZWxlIiwic2NyYXRjaERpdiIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImlubmVySFRNTCIsInRleHRDb250ZW50IiwiZGF0ZSIsInNlcGFyYXRvciIsIkRhdGUiLCJfZCIsImdldERhdGUiLCJkIiwiX20iLCJnZXRNb250aCIsIm0iLCJmb3JtYXR0ZWQiLCJnZXRGdWxsWWVhciIsInNQYXJhbSIsInNQYWdlVVJMIiwid2luZG93IiwibG9jYXRpb24iLCJzZWFyY2giLCJzdWJzdHJpbmciLCJzVVJMVmFyaWFibGVzIiwic3BsaXQiLCJzUGFyYW1ldGVyTmFtZSIsInVuZGVmaW5lZCIsImRlY29kZVVSSUNvbXBvbmVudCIsImlucHV0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQTtBQUNBO0FBQ0FBLHFCQUFNLENBQUNDLENBQVAsR0FBV0QscUJBQU0sQ0FBQ0UsTUFBUCxHQUFnQkQsQ0FBM0IsQyxDQUVBOztDQUdBOztDQUdBOztBQUNBO0FBQ0E7QUFDQTtDQUdBOztBQUNBO0FBQ0E7QUFDQUQscUJBQU0sQ0FBQ0csTUFBUCxHQUFnQkEseURBQWhCLEMsQ0FFQTs7QUFDQTtBQUNBSCxxQkFBTSxDQUFDSSxLQUFQLEdBQWVBLGtEQUFmO0FBRUE7QUFDQUoscUJBQU0sQ0FBQ0ssWUFBUCxHQUFzQkEsOERBQXRCO0FBQ0FBLG1FQUFBLEcsQ0FFQTs7QUFDQTs7Ozs7Ozs7Ozs7OztBQzlCQTtBQUNBOztBQUVBO0FBQ0FKLENBQUMsQ0FBQyx5QkFBRCxDQUFELENB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OEM7QUFBOUM7O0FBQ0EsYUFBT0EsQ0FBQyxJQUFJbUYsS0FBSyxDQUFDckYsTUFBWCxHQUFvQixDQUFDLENBQXJCLEdBQXlCRSxDQUFoQztBQUNQO0FBM0RUOztBQUFBO0FBQUEsSTs7Ozs7Ozs7Ozs7O0FDREEiLCJmaWxlIjoiYWRtaW5sdGUtY29tbW9uLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXG4vLyBKUXVlcnlcbmltcG9ydCAnanF1ZXJ5Jztcbmdsb2JhbC4kID0gZ2xvYmFsLmpRdWVyeSA9ICQ7XG5cbi8vIEFkbWlubHRlXG5pbXBvcnQgJ2FkbWlubHRlLWpzJyA7XG5cbi8vIEJvb3RzdHJhcFxuaW1wb3J0ICdhZG1pbmx0ZS1wbHVnaW4vYm9vdHN0cmFwL2pzL2Jvb3RzdHJhcC5taW4uanMnO1xuXG4vLyBTZWxlY3QyXG5pbXBvcnQgJ2FkbWlubHRlLXBsdWdpbi9zZWxlY3QyL2pzL3NlbGVjdDIubWluLmpzJztcbmltcG9ydCAnYWRtaW5sdGUtcGx1Z2luL3NlbGVjdDIvanMvaTE4bi9mci5qcyc7XG5pbXBvcnQgJ2FkbWlubHRlLXBsdWdpbi9zZWxlY3QyL2Nzcy9zZWxlY3QyLm1pbi5jc3MnO1xuaW1wb3J0ICdhZG1pbmx0ZS1wbHVnaW4vc2VsZWN0Mi1ib290c3RyYXA0LXRoZW1lL3NlbGVjdDItYm9vdHN0cmFwNC5taW4uY3NzJztcblxuLy8gVG9hc3RyXG5pbXBvcnQgdG9hc3RyIGZyb20gJ3RvYXN0ci90b2FzdHIuanMnIDtcbmltcG9ydCAndG9hc3RyL3RvYXN0ci5zY3NzJyA7XG5nbG9iYWwudG9hc3RyID0gdG9hc3RyIDtcblxuLy8gVG9vbHNcbmltcG9ydCB7IFRvb2xzIH0gZnJvbSAnLi4vLi4vLi4vdG9vbHMvdG9vbHMuanMnO1xuZ2xvYmFsLlRvb2xzID0gVG9vbHM7XG5cbmltcG9ydCB7IE5vdGlmaWNhdGlvbiB9IGZyb20gJy4vanMvbm90aWZpY2F0aW9uLmpzJztcbmdsb2JhbC5Ob3RpZmljYXRpb24gPSBOb3RpZmljYXRpb247XG5Ob3RpZmljYXRpb24uaW5pdCgpIDtcblxuLy8gQ29tbW9uXG5pbXBvcnQgJy4vY29tbW9uLnNjc3MnO1xuaW1wb3J0ICcuL2NvbW1vbi5qcycgO1xuXG5cblxuXG4iLCJcbi8qIE5vdGlmaWNhdGlvbnMgKi9cbi8vTm90aWZpY2F0aW9uLmluaXQoKSA7XG5cbi8qIFRvb2x0aXAgKi9cbiQoJ1tkYXRhLXRvZ2dsZT1cInRvb2x0aXBcIl0nKS50b29sdGlwKCk7XG5cbi8qIFNlbGVjdDIgKi9cbmlmICgkKCcuc2VsZWN0Miwgc2VsZWN0LmZvcm0tY29udHJvbCcpLmxlbmd0aCkge1xuXG4gICAgJCgnZm9ybSAuZm9ybS13aWRnZXQ+c2VsZWN0LmZvcm0tY29udHJvbCwgLnNlbGVjdDInKS5lYWNoKGZ1bmN0aW9uIChpLCBlbG0pIHtcbiAgICAgICAgaWYgKCEkKHRoaXMpLmhhc0NsYXNzKCdkaXNhYmxlLXNlbGVjdDInKSkge1xuICAgICAgICAgICAgc2V0U2VsZWN0MigkKGVsbSkpO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICAkKCdmb3JtIHNlbGVjdC5mb3JtLWNvbnRyb2wnKS5lYWNoKGZ1bmN0aW9uIChpLCBlbG0pIHtcbiAgICAgICAgaWYgKCEkKHRoaXMpLmhhc0NsYXNzKCdkaXNhYmxlLXNlbGVjdDInKSkge1xuICAgICAgICAgICAgc2V0U2VsZWN0MigkKGVsbSkpO1xuICAgICAgICB9XG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIHNldFNlbGVjdDIoJHNlbGVjdCkge1xuICAgIGlmICh0eXBlb2YgJHNlbGVjdC5kYXRhKCdzZWxlY3QyLWlkJykgPT09ICd1bmRlZmluZWQnKSB7XG5cbiAgICAgICAgJHNlbGVjdC5kYXRhKCdpbml0JywgJ3NldCcpXG4gICAgICAgIHZhciBvcHRpb25zID0ge1xuICAgICAgICAgICAgd2lkdGg6IFwiMTAwJVwiLFxuICAgICAgICAgICAgdGhlbWU6IFwiYm9vdHN0cmFwNFwiLFxuICAgICAgICAgICAgZHJvcGRvd25BdXRvV2lkdGg6IGZhbHNlLFxuICAgICAgICAgICAgYWxsb3dDbGVhcjogdHJ1ZSxcbiAgICAgICAgICAgIG1pbmltdW1SZXN1bHRzRm9yU2VhcmNoOiA4XG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKCRzZWxlY3QuZGF0YSgnYWxsb3ctY2xlYXInKSA9PSAnZmFsc2UnKSB7XG4gICAgICAgICAgICBvcHRpb25zLmFsbG93Q2xlYXIgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoJHNlbGVjdC5kYXRhKCd3aWR0aCcpKSB7XG4gICAgICAgICAgICBvcHRpb25zLndpZHRoID0gJ2F1dG8nXG4gICAgICAgIH1cbiAgICAgICAgaWYgKCRzZWxlY3QuZmluZCgnb3B0aW9uW3ZhbHVlPVwiXCJdJykpIHtcbiAgICAgICAgICAgIG9wdGlvbnMucGxhY2Vob2xkZXIgPSAkc2VsZWN0LmZpbmQoJ29wdGlvblt2YWx1ZT1cIlwiXScpLmh0bWwoKVxuICAgICAgICB9XG4gICAgICAgIC8qaWYoJHNlbGVjdC5pcygnOnJlcXVpcmVkJykgPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIG9wdGlvbnMuYWxsb3djbGVhciA9IHRydWVcbiAgICAgICAgfSovXG4gICAgICAgIHZhciBteXNlbGVjdCA9ICRzZWxlY3Quc2VsZWN0MihvcHRpb25zKTtcblxuICAgICAgICBteXNlbGVjdC5vbignc2VsZWN0MjpzZWxlY3QnLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgdmFyIGV2ZW50ID0gbmV3IEV2ZW50KCdjaGFuZ2UnKTtcbiAgICAgICAgICAgIGUudGFyZ2V0LmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICAgICAgICB9KTtcbiAgICAgICAgbXlzZWxlY3Qub24oJ3NlbGVjdDI6dW5zZWxlY3QnLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgdmFyIGV2ZW50ID0gbmV3IEV2ZW50KCdjaGFuZ2UnKTtcbiAgICAgICAgICAgIGUudGFyZ2V0LmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gbXlzZWxlY3Q7XG4gICAgfVxufVxuXG5cbiQoJy5hY3Rpb24tZGVsZXRlJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgY29uc3QgZm9ybUFjdGlvbiA9ICQodGhpcykuYXR0cignZm9ybWFjdGlvbicpO1xuXG4gICAgJCgnI21vZGFsLWRlbGV0ZScpLm1vZGFsKHtiYWNrZHJvcDogdHJ1ZSwga2V5Ym9hcmQ6IHRydWV9KVxuICAgICAgICAub2ZmKCdjbGljaycsICcjbW9kYWwtZGVsZXRlLWJ1dHRvbicpXG4gICAgICAgIC5vbignY2xpY2snLCAnI21vZGFsLWRlbGV0ZS1idXR0b24nLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBsZXQgZGVsZXRlRm9ybSA9ICQoJyNkZWxldGUtZm9ybScpO1xuICAgICAgICAgICAgZGVsZXRlRm9ybS5hdHRyKCdhY3Rpb24nLCBmb3JtQWN0aW9uKTtcbiAgICAgICAgICAgIGRlbGV0ZUZvcm0uc3VibWl0KCk7XG4gICAgICAgIH0pO1xufSk7XG5cbiIsIlxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvbiB7XG5cbiAgICBzdGF0aWMgaW5pdCgpIHtcbiAgICAgICAgdG9hc3RyLm9wdGlvbnMudGltZU91dCA9IDMwMDA7XG4gICAgICAgIHRvYXN0ci5vcHRpb25zLnBvc2l0aW9uQ2xhc3MgPSAndG9hc3QtYm90dG9tLXJpZ2h0JztcbiAgICAgICAgdG9hc3RyLm9wdGlvbnMub25IaWRkZW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoJCgnI3RvYXN0LWNvbnRhaW5lciAudG9hc3QnKS5sZW5ndGggPT0gMSkge1xuICAgICAgICAgICAgICAgICQoJyN0b2FzdC1jbG9zZS1hbGwnKS5yZW1vdmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBzdGF0aWMgc2V0KG5vdGlmaWNhdGlvbnMpIHtcbiAgICAgICAgdmFyIGN1cnJlbnROb3RpZmljYXRpb25zID0gbmV3IEFycmF5KCk7XG4gICAgICAgIGZvciAodmFyIHR5cGUgaW4gbm90aWZpY2F0aW9ucykge1xuICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIG5vdGlmaWNhdGlvbnNbdHlwZV0pIHtcbiAgICAgICAgICAgICAgICBpZiAoIWN1cnJlbnROb3RpZmljYXRpb25zLmluY2x1ZGVzKG5vdGlmaWNhdGlvbnNbdHlwZV1ba2V5XSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudE5vdGlmaWNhdGlvbnMucHVzaChub3RpZmljYXRpb25zW3R5cGVdW2tleV0pO1xuICAgICAgICAgICAgICAgICAgICBzZWxmLmFkZCh0eXBlLCBub3RpZmljYXRpb25zW3R5cGVdW2tleV0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN0YXRpYyBhZGQodHlwZSwgdGV4dCkge1xuXG4gICAgICAgIHRvYXN0clt0eXBlXSh0ZXh0KTtcblxuICAgICAgICBsZXQgJGNvbnRhaW5lciA9ICQoJyN0b2FzdC1jb250YWluZXInKSA7XG4gICAgICAgIGxldCBzZWxlY3RvckJ1dHRvbkNsb3NlQWxsID0gJyN0b2FzdC1jbG9zZS1hbGwnIDtcbiAgICAgICAgbGV0IGNvdW50TWVzc2FnZXMgPSAkY29udGFpbmVyLmZpbmQoJy50b2FzdCcpLmxlbmd0aCA7XG5cbiAgICAgICAgaWYgKCQoc2VsZWN0b3JCdXR0b25DbG9zZUFsbCkubGVuZ3RoID09IDAgJiYgY291bnRNZXNzYWdlcyA+IDIpIHtcbiAgICAgICAgICAgICRjb250YWluZXIucHJlcGVuZCgnPGJ1dHRvbiBpZD1cInRvYXN0LWNsb3NlLWFsbFwiPjxpIGNsYXNzPVwiZmEgZmEtdGltZXNcIj48L2k+PC9idXR0b24+Jyk7XG4gICAgICAgIH1cblxuICAgICAgICAkKHNlbGVjdG9yQnV0dG9uQ2xvc2VBbGwpLm9mZignY2xpY2snKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB0b2FzdHIucmVtb3ZlKCk7XG4gICAgICAgICAgICBpZiAoY291bnRNZXNzYWdlcyA9PSAwKSB7XG4gICAgICAgICAgICAgICAgJCgnI3RvYXN0LWNsb3NlLWFsbCcpLnJlbW92ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbn0iLCJcbmV4cG9ydCBjbGFzcyBUb29scyB7XG5cbiAgICAgICAgc3RhdGljIGxvZyh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyh2YWx1ZSkgO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCB7fVxuICAgICAgICB9XG5cbiAgICAgICAgc3RhdGljIGFycmF5UmVtb3ZlKGFyciwgdmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYXJyLmZpbHRlcihmdW5jdGlvbihlbGUpeyByZXR1cm4gZWxlICE9IHZhbHVlOyB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN0YXRpYyB0b1BsYWluVGV4dChodG1sKSB7XG4gICAgICAgICAgICAgICAgbGV0IHNjcmF0Y2hEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgICAgICAgICBzY3JhdGNoRGl2LmlubmVySFRNTCA9IGh0bWw7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNjcmF0Y2hEaXYudGV4dENvbnRlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBzdGF0aWMgZ2V0RGF0ZUZvcm1hdHRlZChkYXRlLCBzZXBhcmF0b3IpIHtcbiAgICAgICAgICAgICAgICBpZihkYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGF0ZSA9IG5ldyBEYXRlKGRhdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF9kID0gZGF0ZS5nZXREYXRlKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IF9kID4gOSA/IF9kIDogJzAnICsgX2QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX20gPSBkYXRlLmdldE1vbnRoKCkgKyAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSBfbSA+IDkgPyBfbSA6ICcwJyArIF9tLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlZCA9IGQgKyBzZXBhcmF0b3IgKyBtICsgc2VwYXJhdG9yICsgZGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdHRlZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgc3RhdGljIGdldFVybFBhcmFtZXRlcihzUGFyYW0pIHtcbiAgICAgICAgICAgICAgICB2YXIgc1BhZ2VVUkwgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoLnN1YnN0cmluZygxKSxcbiAgICAgICAgICAgICAgICAgICAgc1VSTFZhcmlhYmxlcyA9IHNQYWdlVVJMLnNwbGl0KCcmJyksXG4gICAgICAgICAgICAgICAgICAgIHNQYXJhbWV0ZXJOYW1lLFxuICAgICAgICAgICAgICAgICAgICBpO1xuXG4gICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHNVUkxWYXJpYWJsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNQYXJhbWV0ZXJOYW1lID0gc1VSTFZhcmlhYmxlc1tpXS5zcGxpdCgnPScpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc1BhcmFtZXRlck5hbWVbMF0gPT09IHNQYXJhbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc1BhcmFtZXRlck5hbWVbMV0gPT09IHVuZGVmaW5lZCA/IHRydWUgOiBkZWNvZGVVUklDb21wb25lbnQoc1BhcmFtZXRlck5hbWVbMV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHN0YXRpYyBpbmRleE9mRmlyc3REaWdpdChpbnB1dCkge1xuICAgICAgICAgICAgICAgIGxldCBpID0gMDtcbiAgICAgICAgICAgICAgICBmb3IgKDsgaW5wdXRbaV0gPCAnMCcgfHwgaW5wdXRbaV0gPiAnOSc7IGkrKykgO1xuICAgICAgICAgICAgICAgIHJldHVybiBpID09IGlucHV0Lmxlbmd0aCA/IC0xIDogaTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN0YXRpYyBpbmRleE9mTGFzdERpZ2l0KGlucHV0KSB7XG4gICAgICAgICAgICAgICAgbGV0IGkgPSBpbnB1dC5sZW5ndGggLSAxO1xuICAgICAgICAgICAgICAgIGZvciAoOyBpbnB1dFtpXSA8ICcwJyB8fCBpbnB1dFtpXSA+ICc5JzsgaS0tKSA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGkgPT0gaW5wdXQubGVuZ3RoID8gLTEgOiBpO1xuICAgICAgICB9XG59XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbmV4cG9ydCB7fTsiXSwic291cmNlUm9vdCI6IiJ9