You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

194 lines
26KB

  1. (self["webpackChunk"] = self["webpackChunk"] || []).push([["adminlte-index"],{
  2. /***/ "../LaclicBundles/SovBundle/Resources/assets/app/adminlte/index/app.index.js":
  3. /*!***********************************************************************************!*\
  4. !*** ../LaclicBundles/SovBundle/Resources/assets/app/adminlte/index/app.index.js ***!
  5. \***********************************************************************************/
  6. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  7. "use strict";
  8. __webpack_require__.r(__webpack_exports__);
  9. /* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.js */ "../LaclicBundles/SovBundle/Resources/assets/app/adminlte/index/index.js");
  10. /* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_index_js__WEBPACK_IMPORTED_MODULE_0__);
  11. /* harmony import */ var _index_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./index.scss */ "../LaclicBundles/SovBundle/Resources/assets/app/adminlte/index/index.scss");
  12. /***/ }),
  13. /***/ "../LaclicBundles/SovBundle/Resources/assets/app/adminlte/index/index.js":
  14. /*!*******************************************************************************!*\
  15. !*** ../LaclicBundles/SovBundle/Resources/assets/app/adminlte/index/index.js ***!
  16. \*******************************************************************************/
  17. /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
  18. __webpack_require__(/*! core-js/modules/es.date.to-string.js */ "./node_modules/core-js/modules/es.date.to-string.js");
  19. __webpack_require__(/*! core-js/modules/es.object.to-string.js */ "./node_modules/core-js/modules/es.object.to-string.js");
  20. __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ "./node_modules/core-js/modules/es.regexp.to-string.js");
  21. __webpack_require__(/*! core-js/modules/es.array.find.js */ "./node_modules/core-js/modules/es.array.find.js");
  22. __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ "./node_modules/core-js/modules/es.regexp.exec.js");
  23. __webpack_require__(/*! core-js/modules/es.string.split.js */ "./node_modules/core-js/modules/es.string.split.js");
  24. __webpack_require__(/*! core-js/modules/es.array.index-of.js */ "./node_modules/core-js/modules/es.array.index-of.js");
  25. __webpack_require__(/*! core-js/modules/es.array.filter.js */ "./node_modules/core-js/modules/es.array.filter.js");
  26. __webpack_require__(/*! core-js/modules/es.array.join.js */ "./node_modules/core-js/modules/es.array.join.js");
  27. __webpack_require__(/*! core-js/modules/es.string.replace.js */ "./node_modules/core-js/modules/es.string.replace.js");
  28. $(document).ready(function () {
  29. lcCrudIndexToggle();
  30. lcCrudIndexBatchActions();
  31. });
  32. function lcCrudIndexToggle() {
  33. var toggles = document.querySelectorAll('.custom-switch input[type="checkbox"]');
  34. for (i = 0; i < toggles.length; i++) {
  35. toggles[i].addEventListener('change', function () {
  36. var toggle = this;
  37. var newValue = this.checked;
  38. var oldValue = !newValue;
  39. var toggleUrl = this.closest('.custom-switch').dataset.url + "&newValue=" + newValue.toString();
  40. var toggleRequest = $.ajax({
  41. type: "POST",
  42. url: toggleUrl,
  43. data: {},
  44. dataType: 'json'
  45. });
  46. toggleRequest.done(function (response) {
  47. Notification.add('success', 'La propriété a bien été mise à jour.');
  48. });
  49. toggleRequest.fail(function () {
  50. toggle.checked = oldValue;
  51. toggle.disabled = true;
  52. toggle.closest('.checkbox-switch').classList.add('disabled');
  53. Notification.add('error', 'Une erreur est survenue.');
  54. });
  55. });
  56. }
  57. }
  58. function lcCrudIndexBatchActions() {
  59. var titleContent = $('.content-header-title > .title').html();
  60. $(document).on('click', '.deselect-batch-button', function () {
  61. $(this).closest('.content').find(':checkbox.form-batch-checkbox-all').prop('checked', false).trigger('change');
  62. });
  63. $(document).on('change', '.form-batch-checkbox-all', function () {
  64. $(this).closest('.content').find(':checkbox.form-batch-checkbox').prop('checked', $(this).prop('checked')).trigger('change');
  65. });
  66. $(document).on('change', '.form-batch-checkbox', function () {
  67. var $content = $(this).closest('.content-wrapper');
  68. var $input = $content.find(':hidden#batch_form_entityIds');
  69. var ids = $input.val() ? $input.val().split(',') : [];
  70. var id = $(this).val();
  71. if ($(this).prop('checked')) {
  72. $(this).closest('tr').addClass('selected-row');
  73. if (-1 === ids.indexOf(id)) {
  74. ids.push(id);
  75. }
  76. } else {
  77. $(this).closest('tr').removeClass('selected-row');
  78. ids = ids.filter(function (value) {
  79. return value !== id;
  80. });
  81. $content.find(':checkbox.form-batch-checkbox-all').prop('checked', false);
  82. }
  83. if (0 === ids.length) {
  84. $content.find('.global-actions').show();
  85. $content.find('.batch-actions').hide();
  86. $content.find('table').removeClass('table-batch');
  87. } else {
  88. $content.find('.batch-actions').show();
  89. $content.find('.global-actions').hide();
  90. $content.find('table').addClass('table-batch');
  91. }
  92. $input.val(ids.join(','));
  93. $content.find('.content-header-title > .title').html(0 === ids.length ? titleContent : '');
  94. });
  95. var modalTitle = $('#batch-action-confirmation-title');
  96. var titleContentWithPlaceholders = modalTitle.text();
  97. $('[data-action-batch]').on('click', function (event) {
  98. event.preventDefault();
  99. event.stopPropagation();
  100. var $actionElement = $(this);
  101. var actionName = $actionElement.attr('data-action-name');
  102. var selectedItems = $('input[type="checkbox"].form-batch-checkbox:checked');
  103. modalTitle.text(titleContentWithPlaceholders.replace('%action_name%', actionName).replace('%num_items%', selectedItems.length));
  104. $('#modal-batch-action').modal({
  105. backdrop: true,
  106. keyboard: true
  107. }).off('click', '#modal-batch-action-button').on('click', '#modal-batch-action-button', function () {
  108. $actionElement.unbind('click');
  109. $form = document.createElement('form');
  110. $form.setAttribute('action', $actionElement.attr('data-action-url'));
  111. $form.setAttribute('method', 'POST');
  112. $actionNameInput = document.createElement('input');
  113. $actionNameInput.setAttribute('type', 'hidden');
  114. $actionNameInput.setAttribute('name', 'batchActionName');
  115. $actionNameInput.setAttribute('value', $actionElement.attr('data-action-name'));
  116. $form.appendChild($actionNameInput);
  117. $entityFqcnInput = document.createElement('input');
  118. $entityFqcnInput.setAttribute('type', 'hidden');
  119. $entityFqcnInput.setAttribute('name', 'entityFqcn');
  120. $entityFqcnInput.setAttribute('value', $actionElement.attr('data-entity-fqcn'));
  121. $form.appendChild($entityFqcnInput);
  122. $actionUrlInput = document.createElement('input');
  123. $actionUrlInput.setAttribute('type', 'hidden');
  124. $actionUrlInput.setAttribute('name', 'batchActionUrl');
  125. $actionUrlInput.setAttribute('value', $actionElement.attr('data-action-url'));
  126. $form.appendChild($actionUrlInput);
  127. $csrfTokenInput = document.createElement('input');
  128. $csrfTokenInput.setAttribute('type', 'hidden');
  129. $csrfTokenInput.setAttribute('name', 'batchActionCsrfToken');
  130. $csrfTokenInput.setAttribute('value', $actionElement.attr('data-action-csrf-token'));
  131. $form.appendChild($csrfTokenInput);
  132. selectedItems.each(function (i, item) {
  133. $entityIdInput = document.createElement('input');
  134. $entityIdInput.setAttribute('type', 'hidden');
  135. $entityIdInput.setAttribute('name', "batchActionEntityIds[".concat(i, "]"));
  136. $entityIdInput.setAttribute('value', item.value);
  137. $form.appendChild($entityIdInput);
  138. });
  139. document.body.appendChild($form); //modalTitle.text(titleContentWithPlaceholders);
  140. $form.submit();
  141. });
  142. });
  143. }
  144. /***/ }),
  145. /***/ "../LaclicBundles/SovBundle/Resources/assets/app/adminlte/index/index.scss":
  146. /*!*********************************************************************************!*\
  147. !*** ../LaclicBundles/SovBundle/Resources/assets/app/adminlte/index/index.scss ***!
  148. \*********************************************************************************/
  149. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  150. "use strict";
  151. __webpack_require__.r(__webpack_exports__);
  152. // extracted by mini-css-extract-plugin
  153. /***/ })
  154. },
  155. /******/ __webpack_require__ => { // webpackRuntimeModules
  156. /******/ "use strict";
  157. /******/
  158. /******/ var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
  159. /******/ __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_core-js_modules_es_array_filter_js-node_modules_core-js_modules_es_array-87c47e"], () => (__webpack_exec__("../LaclicBundles/SovBundle/Resources/assets/app/adminlte/index/app.index.js")));
  160. /******/ var __webpack_exports__ = __webpack_require__.O();
  161. /******/ }
  162. ]);
  163. //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vTGFjbGljQnVuZGxlcy9Tb3ZCdW5kbGUvUmVzb3VyY2VzL2Fzc2V0cy9hcHAvYWRtaW5sdGUvaW5kZXgvYXBwLmluZGV4LmpzIiwid2VicGFjazovLy8uLi9MYWNsaWNCdW5kbGVzL1NvdkJ1bmRsZS9SZXNvdXJjZXMvYXNzZXRzL2FwcC9hZG1pbmx0ZS9pbmRleC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vTGFjbGljQnVuZGxlcy9Tb3ZCdW5kbGUvUmVzb3VyY2VzL2Fzc2V0cy9hcHAvYWRtaW5sdGUvaW5kZXgvaW5kZXguc2NzcyJdLCJuYW1lcyI6WyIkIiwiZG9jdW1lbnQiLCJyZWFkeSIsImxjQ3J1ZEluZGV4VG9nZ2xlIiwibGNDcnVkSW5kZXhCYXRjaEFjdGlvbnMiLCJ0b2dnbGVzIiwicXVlcnlTZWxlY3RvckFsbCIsImkiLCJsZW5ndGgiLCJhZGRFdmVudExpc3RlbmVyIiwidG9nZ2xlIiwibmV3VmFsdWUiLCJjaGVja2VkIiwib2xkVmFsdWUiLCJ0b2dnbGVVcmwiLCJjbG9zZXN0IiwiZGF0YXNldCIsInVybCIsInRvU3RyaW5nIiwidG9nZ2xlUmVxdWVzdCIsImFqYXgiLCJ0eXBlIiwiZGF0YSIsImRhdGFUeXBlIiwiZG9uZSIsInJlc3BvbnNlIiwiTm90aWZpY2F0aW9uIiwiYWRkIiwiZmFpbCIsImRpc2FibGVkIiwiY2xhc3NMaXN0IiwidGl0bGVDb250ZW50IiwiaHRtbCIsIm9uIiwiZmluZCIsInByb3AiLCJ0cmlnZ2VyIiwiJGNvbnRlbnQiLCIkaW5wdXQiLCJpZHMiLCJ2YWwiLCJzcGxpdCIsImlkIiwiYWRkQ2xhc3MiLCJpbmRleE9mIiwicHVzaCIsInJlbW92ZUNsYXNzIiwiZmlsdGVyIiwidmFsdWUiLCJzaG93IiwiaGlkZSIsImpvaW4iLCJtb2RhbFRpdGxlIiwidGl0bGVDb250ZW50V2l0aFBsYWNlaG9sZGVycyIsInRleHQiLCJldmVudCIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwiJGFjdGlvbkVsZW1lbnQiLCJhY3Rpb25OYW1lIiwiYXR0ciIsInNlbGVjdGVkSXRlbXMiLCJyZXBsYWNlIiwibW9kYWwiLCJiYWNrZHJvcCIsImtleWJvYXJkIiwib2ZmIiwidW5iaW5kIiwiJGZvcm0iLCJjcmVhdGVFbGVtZW50Iiwic2V0QXR0cmlidXRlIiwiJGFjdGlvbk5hbWVJbnB1dCIsImFwcGVuZENoaWxkIiwiJGVudGl0eUZxY25JbnB1dCIsIiRhY3Rpb25VcmxJbnB1dCIsIiRjc3JmVG9rZW5JbnB1dCIsImVhY2giLCJpdGVtIiwiJGVudGl0eUlkSW5wdXQiLCJib2R5Iiwic3VibWl0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNDQUEsQ0FBQyxDQUFDQyxRQUFELENBQUQsQ0FBWUMsS0FBWixDQUFrQixZQUFXO0FBQ3pCQyxtQkFBaUI7QUFDakJDLHlCQUF1QjtBQUMxQixDQUhEOztBQUtBLFNBQVNELGlCQUFULEdBQTZCO0FBQ3pCLE1BQU1FLE9BQU8sR0FBR0osUUFBUSxDQUFDSyxnQkFBVCxDQUEwQix1Q0FBMUIsQ0FBaEI7O0FBQ0EsT0FBS0MsQ0FBQyxHQUFHLENBQVQsRUFBWUEsQ0FBQyxHQUFHRixPQUFPLENBQUNHLE1BQXhCLEVBQWdDRCxDQUFDLEVBQWpDLEVBQXFDO0FBQ2pDRixXQUFPLENBQUNFLENBQUQsQ0FBUCxDQUFXRSxnQkFBWCxDQUE0QixRQUE1QixFQUFzQyxZQUFZO0FBQzlDLFVBQU1DLE1BQU0sR0FBRyxJQUFmO0FBQ0EsVUFBTUMsUUFBUSxHQUFHLEtBQUtDLE9BQXRCO0FBQ0EsVUFBTUMsUUFBUSxHQUFHLENBQUNGLFFBQWxCO0FBQ0EsVUFBTUcsU0FBUyxHQUFHLEtBQUtDLE9BQUwsQ0FBYSxnQkFBYixFQUErQkMsT0FBL0IsQ0FBdUNDLEdBQXZDLEdBQTZDLFlBQTdDLEdBQTRETixRQUFRLENBQUNPLFFBQVQsRUFBOUU7QUFFQSxVQUFJQyxhQUFhLEdBQUduQixDQUFDLENBQUNv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VCxDQUF1QixPQUF2QixDQUFqQjtBQUNBUyxzQkFBYyxDQUFDUixZQUFmLENBQTRCLE1BQTVCLEVBQW9DLFFBQXBDO0FBQ0FRLHNCQUFjLENBQUNSLFlBQWYsQ0FBNEIsTUFBNUIsaUNBQTREL0QsQ0FBNUQ7QUFDQXVFLHNCQUFjLENBQUNSLFlBQWYsQ0FBNEIsT0FBNUIsRUFBcUNPLElBQUksQ0FBQzdCLEtBQTFDO0FBQ0FvQixhQUFLLENBQUNJLFdBQU4sQ0FBa0JNLGNBQWxCO0FBQ0gsT0FORDtBQVFBN0UsY0FBUSxDQUFDOEUsSUFBVCxDQUFjUCxXQUFkLENBQTBCSixLQUExQixFQXZDbUQsQ0F5Q25EOztBQUNBQSxXQUFLLENBQUNZLE1BQU47QUFDSCxLQTdDTDtBQThDSCxHQXpERDtBQTBESCxDOzs7Ozs7Ozs7Ozs7QUN0SUQiLCJmaWxlIjoiYWRtaW5sdGUtaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCAnLi9pbmRleC5qcydcbmltcG9ydCAnLi9pbmRleC5zY3NzJyIsIlxuXG4kKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHtcbiAgICBsY0NydWRJbmRleFRvZ2dsZSgpIDtcbiAgICBsY0NydWRJbmRleEJhdGNoQWN0aW9ucygpIDtcbn0pIDtcblxuZnVuY3Rpb24gbGNDcnVkSW5kZXhUb2dnbGUoKSB7XG4gICAgY29uc3QgdG9nZ2xlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5jdXN0b20tc3dpdGNoIGlucHV0W3R5cGU9XCJjaGVja2JveFwiXScpO1xuICAgIGZvciAoaSA9IDA7IGkgPCB0b2dnbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRvZ2dsZXNbaV0uYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgY29uc3QgdG9nZ2xlID0gdGhpcztcbiAgICAgICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gdGhpcy5jaGVja2VkO1xuICAgICAgICAgICAgY29uc3Qgb2xkVmFsdWUgPSAhbmV3VmFsdWU7XG4gICAgICAgICAgICBjb25zdCB0b2dnbGVVcmwgPSB0aGlzLmNsb3Nlc3QoJy5jdXN0b20tc3dpdGNoJykuZGF0YXNldC51cmwgKyBcIiZuZXdWYWx1ZT1cIiArIG5ld1ZhbHVlLnRvU3RyaW5nKCk7XG5cbiAgICAgICAgICAgIGxldCB0b2dnbGVSZXF1ZXN0ID0gJC5hamF4KHt0eXBlOiBcIlBPU1RcIiwgdXJsOiB0b2dnbGVVcmwsIGRhdGE6IHt9LCBkYXRhVHlwZTogJ2pzb24nfSk7XG5cbiAgICAgICAgICAgIHRvZ2dsZVJlcXVlc3QuZG9uZShmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICBOb3RpZmljYXRpb24uYWRkKCdzdWNjZXNzJywgJ0xhIHByb3ByacOpdMOpIGEgYmllbiDDqXTDqSBtaXNlIMOgIGpvdXIuJyk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdG9nZ2xlUmVxdWVzdC5mYWlsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0b2dnbGUuY2hlY2tlZCA9IG9sZFZhbHVlO1xuICAgICAgICAgICAgICAgIHRvZ2dsZS5kaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdG9nZ2xlLmNsb3Nlc3QoJy5jaGVja2JveC1zd2l0Y2gnKS5jbGFzc0xpc3QuYWRkKCdkaXNhYmxlZCcpO1xuICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvbi5hZGQoJ2Vycm9yJywgJ1VuZSBlcnJldXIgZXN0IHN1cnZlbnVlLicpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gbGNDcnVkSW5kZXhCYXRjaEFjdGlvbnMoKSB7XG4gICAgY29uc3QgdGl0bGVDb250ZW50ID0gJCgnLmNvbnRlbnQtaGVhZGVyLXRpdGxlID4gLnRpdGxlJykuaHRtbCgpO1xuICAgICQoZG9jdW1lbnQpLm9uKCdjbGljaycsICcuZGVzZWxlY3QtYmF0Y2gtYnV0dG9uJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAkKHRoaXMpLmNsb3Nlc3QoJy5jb250ZW50JykuZmluZCgnOmNoZWNrYm94LmZvcm0tYmF0Y2gtY2hlY2tib3gtYWxsJykucHJvcCgnY2hlY2tlZCcsIGZhbHNlKS50cmlnZ2VyKCdjaGFuZ2UnKTtcbiAgICB9KTtcbiAgICAkKGRvY3VtZW50KS5vbignY2hhbmdlJywgJy5mb3JtLWJhdGNoLWNoZWNrYm94LWFsbCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgJCh0aGlzKS5jbG9zZXN0KCcuY29udGVudCcpLmZpbmQoJzpjaGVja2JveC5mb3JtLWJhdGNoLWNoZWNrYm94JykucHJvcCgnY2hlY2tlZCcsICQodGhpcykucHJvcCgnY2hlY2tlZCcpKS50cmlnZ2VyKCdjaGFuZ2UnKTtcbiAgICB9KTtcbiAgICAkKGRvY3VtZW50KS5vbignY2hhbmdlJywgJy5mb3JtLWJhdGNoLWNoZWNrYm94JywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCAkY29udGVudCA9ICQodGhpcykuY2xvc2VzdCgnLmNvbnRlbnQtd3JhcHBlcicpO1xuICAgICAgICBsZXQgJGlucHV0ID0gJGNvbnRlbnQuZmluZCgnOmhpZGRlbiNiYXRjaF9mb3JtX2VudGl0eUlkcycpO1xuICAgICAgICBsZXQgaWRzID0gJGlucHV0LnZhbCgpID8gJGlucHV0LnZhbCgpLnNwbGl0KCcsJykgOiBbXTtcbiAgICAgICAgY29uc3QgaWQgPSAkKHRoaXMpLnZhbCgpO1xuXG4gICAgICAgIGlmICgkKHRoaXMpLnByb3AoJ2NoZWNrZWQnKSkge1xuICAgICAgICAgICAgJCh0aGlzKS5jbG9zZXN0KCd0cicpLmFkZENsYXNzKCdzZWxlY3RlZC1yb3cnKTtcbiAgICAgICAgICAgIGlmICgtMSA9PT0gaWRzLmluZGV4T2YoaWQpKSB7XG4gICAgICAgICAgICAgICAgaWRzLnB1c2goaWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgJCh0aGlzKS5jbG9zZXN0KCd0cicpLnJlbW92ZUNsYXNzKCdzZWxlY3RlZC1yb3cnKTtcbiAgICAgICAgICAgIGlkcyA9IGlkcy5maWx0ZXIoZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlICE9PSBpZFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAkY29udGVudC5maW5kKCc6Y2hlY2tib3guZm9ybS1iYXRjaC1jaGVja2JveC1hbGwnKS5wcm9wKCdjaGVja2VkJywgZmFsc2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKDAgPT09IGlkcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICRjb250ZW50LmZpbmQoJy5nbG9iYWwtYWN0aW9ucycpLnNob3coKTtcbiAgICAgICAgICAgICRjb250ZW50LmZpbmQoJy5iYXRjaC1hY3Rpb25zJykuaGlkZSgpO1xuICAgICAgICAgICAgJGNvbnRlbnQuZmluZCgndGFibGUnKS5yZW1vdmVDbGFzcygndGFibGUtYmF0Y2gnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICRjb250ZW50LmZpbmQoJy5iYXRjaC1hY3Rpb25zJykuc2hvdygpO1xuICAgICAgICAgICAgJGNvbnRlbnQuZmluZCgnLmdsb2JhbC1hY3Rpb25zJykuaGlkZSgpO1xuICAgICAgICAgICAgJGNvbnRlbnQuZmluZCgndGFibGUnKS5hZGRDbGFzcygndGFibGUtYmF0Y2gnKTtcbiAgICAgICAgfVxuXG4gICAgICAgICRpbnB1dC52YWwoaWRzLmpvaW4oJywnKSk7XG4gICAgICAgICRjb250ZW50LmZpbmQoJy5jb250ZW50LWhlYWRlci10aXRsZSA+IC50aXRsZScpLmh0bWwoMCA9PT0gaWRzLmxlbmd0aCA/IHRpdGxlQ29udGVudCA6ICcnKTtcbiAgICB9KTtcblxuICAgIGxldCBtb2RhbFRpdGxlID0gJCgnI2JhdGNoLWFjdGlvbi1jb25maXJtYXRpb24tdGl0bGUnKTtcbiAgICBjb25zdCB0aXRsZUNvbnRlbnRXaXRoUGxhY2Vob2xkZXJzID0gbW9kYWxUaXRsZS50ZXh0KCk7XG5cbiAgICAkKCdbZGF0YS1hY3Rpb24tYmF0Y2hdJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBsZXQgJGFjdGlvbkVsZW1lbnQgPSAkKHRoaXMpO1xuXG4gICAgICAgIGNvbnN0IGFjdGlvbk5hbWUgPSAkYWN0aW9uRWxlbWVudC5hdHRyKCdkYXRhLWFjdGlvbi1uYW1lJyk7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSXRlbXMgPSAkKCdpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0uZm9ybS1iYXRjaC1jaGVja2JveDpjaGVja2VkJyk7XG4gICAgICAgIG1vZGFsVGl0bGUudGV4dCh0aXRsZUNvbnRlbnRXaXRoUGxhY2Vob2xkZXJzXG4gICAgICAgICAgICAucmVwbGFjZSgnJWFjdGlvbl9uYW1lJScsIGFjdGlvbk5hbWUpXG4gICAgICAgICAgICAucmVwbGFjZSgnJW51bV9pdGVtcyUnLCBzZWxlY3RlZEl0ZW1zLmxlbmd0aCkpO1xuXG4gICAgICAgICQoJyNtb2RhbC1iYXRjaC1hY3Rpb24nKS5tb2RhbCh7YmFja2Ryb3A6IHRydWUsIGtleWJvYXJkOiB0cnVlfSlcbiAgICAgICAgICAgIC5vZmYoJ2NsaWNrJywgJyNtb2RhbC1iYXRjaC1hY3Rpb24tYnV0dG9uJylcbiAgICAgICAgICAgIC5vbignY2xpY2snLCAnI21vZGFsLWJhdGNoLWFjdGlvbi1idXR0b24nLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgJGFjdGlvbkVsZW1lbnQudW5iaW5kKCdjbGljaycpO1xuXG4gICAgICAgICAgICAgICAgJGZvcm0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdmb3JtJyk7XG4gICAgICAgICAgICAgICAgJGZvcm0uc2V0QXR0cmlidXRlKCdhY3Rpb24nLCAkYWN0aW9uRWxlbWVudC5hdHRyKCdkYXRhLWFjdGlvbi11cmwnKSk7XG4gICAgICAgICAgICAgICAgJGZvcm0uc2V0QXR0cmlidXRlKCdtZXRob2QnLCAnUE9TVCcpO1xuXG4gICAgICAgICAgICAgICAgJGFjdGlvbk5hbWVJbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XG4gICAgICAgICAgICAgICAgJGFjdGlvbk5hbWVJbnB1dC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnaGlkZGVuJyk7XG4gICAgICAgICAgICAgICAgJGFjdGlvbk5hbWVJbnB1dC5zZXRBdHRyaWJ1dGUoJ25hbWUnLCAnYmF0Y2hBY3Rpb25OYW1lJyk7XG4gICAgICAgICAgICAgICAgJGFjdGlvbk5hbWVJbnB1dC5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgJGFjdGlvbkVsZW1lbnQuYXR0cignZGF0YS1hY3Rpb24tbmFtZScpKTtcbiAgICAgICAgICAgICAgICAkZm9ybS5hcHBlbmRDaGlsZCgkYWN0aW9uTmFtZUlucHV0KTtcblxuICAgICAgICAgICAgICAgICRlbnRpdHlGcWNuSW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuICAgICAgICAgICAgICAgICRlbnRpdHlGcWNuSW5wdXQuc2V0QXR0cmlidXRlKCd0eXBlJywgJ2hpZGRlbicpO1xuICAgICAgICAgICAgICAgICRlbnRpdHlGcWNuSW5wdXQuc2V0QXR0cmlidXRlKCduYW1lJywgJ2VudGl0eUZxY24nKTtcbiAgICAgICAgICAgICAgICAkZW50aXR5RnFjbklucHV0LnNldEF0dHJpYnV0ZSgndmFsdWUnLCAkYWN0aW9uRWxlbWVudC5hdHRyKCdkYXRhLWVudGl0eS1mcWNuJykpO1xuICAgICAgICAgICAgICAgICRmb3JtLmFwcGVuZENoaWxkKCRlbnRpdHlGcWNuSW5wdXQpO1xuXG4gICAgICAgICAgICAgICAgJGFjdGlvblVybElucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcbiAgICAgICAgICAgICAgICAkYWN0aW9uVXJsSW5wdXQuc2V0QXR0cmlidXRlKCd0eXBlJywgJ2hpZGRlbicpO1xuICAgICAgICAgICAgICAgICRhY3Rpb25VcmxJbnB1dC5zZXRBdHRyaWJ1dGUoJ25hbWUnLCAnYmF0Y2hBY3Rpb25VcmwnKTtcbiAgICAgICAgICAgICAgICAkYWN0aW9uVXJsSW5wdXQuc2V0QXR0cmlidXRlKCd2YWx1ZScsICRhY3Rpb25FbGVtZW50LmF0dHIoJ2RhdGEtYWN0aW9uLXVybCcpKTtcbiAgICAgICAgICAgICAgICAkZm9ybS5hcHBlbmRDaGlsZCgkYWN0aW9uVXJsSW5wdXQpO1xuXG4gICAgICAgICAgICAgICAgJGNzcmZUb2tlbklucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcbiAgICAgICAgICAgICAgICAkY3NyZlRva2VuSW5wdXQuc2V0QXR0cmlidXRlKCd0eXBlJywgJ2hpZGRlbicpO1xuICAgICAgICAgICAgICAgICRjc3JmVG9rZW5JbnB1dC5zZXRBdHRyaWJ1dGUoJ25hbWUnLCAnYmF0Y2hBY3Rpb25Dc3JmVG9rZW4nKTtcbiAgICAgICAgICAgICAgICAkY3NyZlRva2VuSW5wdXQuc2V0QXR0cmlidXRlKCd2YWx1ZScsICRhY3Rpb25FbGVtZW50LmF0dHIoJ2RhdGEtYWN0aW9uLWNzcmYtdG9rZW4nKSk7XG4gICAgICAgICAgICAgICAgJGZvcm0uYXBwZW5kQ2hpbGQoJGNzcmZUb2tlbklucHV0KTtcblxuICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMuZWFjaCgoaSwgaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAkZW50aXR5SWRJbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XG4gICAgICAgICAgICAgICAgICAgICRlbnRpdHlJZElucHV0LnNldEF0dHJpYnV0ZSgndHlwZScsICdoaWRkZW4nKTtcbiAgICAgICAgICAgICAgICAgICAgJGVudGl0eUlkSW5wdXQuc2V0QXR0cmlidXRlKCduYW1lJywgYGJhdGNoQWN0aW9uRW50aXR5SWRzWyR7aX1dYCk7XG4gICAgICAgICAgICAgICAgICAgICRlbnRpdHlJZElucHV0LnNldEF0dHJpYnV0ZSgndmFsdWUnLCBpdGVtLnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgJGZvcm0uYXBwZW5kQ2hpbGQoJGVudGl0eUlkSW5wdXQpO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCgkZm9ybSk7XG5cbiAgICAgICAgICAgICAgICAvL21vZGFsVGl0bGUudGV4dCh0aXRsZUNvbnRlbnRXaXRoUGxhY2Vob2xkZXJzKTtcbiAgICAgICAgICAgICAgICAkZm9ybS5zdWJtaXQoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH0pO1xufSIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxuZXhwb3J0IHt9OyJdLCJzb3VyY2VSb290IjoiIn0=