Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

adminlte-field-collection.js 18KB

3 лет назад
3 лет назад
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. (self["webpackChunk"] = self["webpackChunk"] || []).push([["adminlte-field-collection"],{
  2. /***/ "../LaClicBundle/SovBundle/Resources/assets/app/adminlte/field/collection/app.collection.js":
  3. /*!**************************************************************************************************!*\
  4. !*** ../LaClicBundle/SovBundle/Resources/assets/app/adminlte/field/collection/app.collection.js ***!
  5. \**************************************************************************************************/
  6. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  7. "use strict";
  8. __webpack_require__.r(__webpack_exports__);
  9. /* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.find.js */ "./node_modules/core-js/modules/es.array.find.js");
  10. /* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_0__);
  11. /* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ "./node_modules/core-js/modules/es.regexp.exec.js");
  12. /* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_1__);
  13. /* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.string.replace.js */ "./node_modules/core-js/modules/es.string.replace.js");
  14. /* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_2__);
  15. /* harmony import */ var jquery_ui__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! jquery-ui */ "./node_modules/jquery-ui-dist/jquery-ui.js");
  16. /* harmony import */ var jquery_ui__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(jquery_ui__WEBPACK_IMPORTED_MODULE_3__);
  17. /* harmony import */ var _form_scss__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./form.scss */ "../LaClicBundle/SovBundle/Resources/assets/app/adminlte/field/collection/form.scss");
  18. $(document).ready(function () {
  19. initCollectionWidget();
  20. });
  21. function initCollectionWidget() {
  22. $('.field-collection[data-prototype]').each(function (i, collectionWidget) {
  23. setCollectionWidgetSortable($(collectionWidget));
  24. reindexKeyCollectionWidget($(collectionWidget));
  25. setCollectionWidgetAdd($(collectionWidget));
  26. setCollectionWidgetDelete($(collectionWidget));
  27. });
  28. }
  29. function setCollectionWidgetAdd($collectionWidget) {
  30. if ($collectionWidget.data('allow-add')) {
  31. $collectionWidget.find('.field-collection-add').on('click', function (e) {
  32. // grab the prototype template
  33. var newWidget = $collectionWidget.attr('data-prototype'); // replace the "__name__" used in the id and name of the prototype
  34. // with a number that's unique to your emails
  35. // end name attribute looks like name="contact[emails][2]"
  36. newWidget = newWidget.replace(/__name__/g, getNumItems($collectionWidget)); // create a new list element and add it to the list
  37. $collectionWidget.find('.form-widget-compound .field-collection-group').append(newWidget);
  38. $collectionWidget.find('.field-collection-item:last').find('.field-position').val(getNumItems($collectionWidget));
  39. reindexKeyCollectionWidget($collectionWidget);
  40. setCollectionWidgetDelete($collectionWidget);
  41. $collectionWidget.trigger('collection-add-item');
  42. $collectionWidget.data('num-items', $collectionWidget.data('num-items') + 1);
  43. $collectionWidget.find('.collection-empty').hide();
  44. });
  45. }
  46. }
  47. function setCollectionWidgetDelete($collectionWidget) {
  48. if ($collectionWidget.data('allow-delete')) {
  49. $collectionWidget.find('.field-collection-delete').off('click');
  50. $collectionWidget.find('.field-collection-delete').on('click', function () {
  51. $(this).parents('.form-group:first').remove();
  52. reindexKeyCollectionWidget($collectionWidget);
  53. if (getNumItems($collectionWidget) == 0) $collectionWidget.find('.collection-empty').show();
  54. });
  55. }
  56. }
  57. function getNumItems($collectionWidget) {
  58. if ($collectionWidget.data('reindex-key')) {
  59. return $collectionWidget.find('.field-collection-item').length;
  60. } else {
  61. return $collectionWidget.data('num-items');
  62. }
  63. }
  64. function reindexKeyCollectionWidget($collectionWidget) {
  65. if ($collectionWidget.data('reindex-key')) {
  66. $collectionWidget.find('.field-collection-item').each(function (i, item) {
  67. $(item).find('input,textarea').each(function (y, field) {
  68. var $field = $(field); //Chanegment ID
  69. var posId = Tools.indexOfLastDigit($field.prop('id'));
  70. var idPrefix = $field.prop('id').substr(0, posId);
  71. var idSuffix = $field.prop('id').substr(posId + 1);
  72. $field.prop('id', idPrefix + i + idSuffix); //Chanegment Name
  73. var posName = Tools.indexOfLastDigit($field.prop('name'));
  74. var namePrefix = $field.prop('name').substr(0, posName);
  75. var nameSuffix = $field.prop('name').substr(posName + 1);
  76. $field.prop('name', namePrefix + i + nameSuffix);
  77. });
  78. });
  79. }
  80. }
  81. function setCollectionWidgetSortable($collectionWidget) {
  82. if ($collectionWidget.data('sortable')) {
  83. $collectionWidget.find('.field-collection-group').sortable({
  84. "handle": '.lc-btn-sortable',
  85. cancel: ''
  86. });
  87. $collectionWidget.find('.field-collection-group').on("sortupdate", function (event, ui) {
  88. $collectionWidget.find('.field-collection-group>div').each(function (index, item) {
  89. $(item).find('.field-position').val(index);
  90. });
  91. });
  92. }
  93. }
  94. /***/ }),
  95. /***/ "../LaClicBundle/SovBundle/Resources/assets/app/adminlte/field/collection/form.scss":
  96. /*!******************************************************************************************!*\
  97. !*** ../LaClicBundle/SovBundle/Resources/assets/app/adminlte/field/collection/form.scss ***!
  98. \******************************************************************************************/
  99. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  100. "use strict";
  101. __webpack_require__.r(__webpack_exports__);
  102. // extracted by mini-css-extract-plugin
  103. /***/ })
  104. },
  105. /******/ __webpack_require__ => { // webpackRuntimeModules
  106. /******/ "use strict";
  107. /******/
  108. /******/ var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
  109. /******/ __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_core-js_modules_es_string_replace_js-node_modules_jquery-ui-dist_jquery-ui_js"], () => (__webpack_exec__("../LaClicBundle/SovBundle/Resources/assets/app/adminlte/field/collection/app.collection.js")));
  110. /******/ var __webpack_exports__ = __webpack_require__.O();
  111. /******/ }
  112. ]);
  113. //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vTGFDbGljQnVuZGxlL1NvdkJ1bmRsZS9SZXNvdXJjZXMvYXNzZXRzL2FwcC9hZG1pbmx0ZS9maWVsZC9jb2xsZWN0aW9uL2FwcC5jb2xsZWN0aW9uLmpzIiwid2VicGFjazovLy8uLi9MYUNsaWNCdW5kbGUvU292QnVuZGxlL1Jlc291cmNlcy9hc3NldHMvYXBwL2FkbWlubHRlL2ZpZWxkL2NvbGxlY3Rpb24vZm9ybS5zY3NzIl0sIm5hbWVzIjpbIiQiLCJkb2N1bWVudCIsInJlYWR5IiwiaW5pdENvbGxlY3Rpb25XaWRnZXQiLCJlYWNoIiwiaSIsImNvbGxlY3Rpb25XaWRnZXQiLCJzZXRDb2xsZWN0aW9uV2lkZ2V0U29ydGFibGUiLCJyZWluZGV4S2V5Q29sbGVjdGlvbldpZGdldCIsInNldENvbGxlY3Rpb25XaWRnZXRBZGQiLCJzZXRDb2xsZWN0aW9uV2lkZ2V0RGVsZXRlIiwiJGNvbGxlY3Rpb25XaWRnZXQiLCJkYXRhIiwiZmluZCIsIm9uIiwiZSIsIm5ld1dpZGdldCIsImF0dHIiLCJyZXBsYWNlIiwiZ2V0TnVtSXRlbXMiLCJhcHBlbmQiLCJ2YWwiLCJ0cmlnZ2VyIiwiaGlkZSIsIm9mZiIsInBhcmVudHMiLCJyZW1vdmUiLCJzaG93IiwibGVuZ3RoIiwiaXRlbSIsInkiLCJmaWVsZCIsIiRmaWVsZCIsInBvc0lkIiwiVG9vbHMiLCJpbmRleE9mTGFzdERpZ2l0IiwicHJvcCIsImlkUHJlZml4Iiwic3Vic3RyIiwiaWRTdWZmaXgiLCJwb3NOYW1lIiwibmFtZVByZWZpeCIsIm5hbWVTdWZmaXgiLCJzb3J0YWJsZSIsImNhbmNlbCIsImV2ZW50IiwidWkiLCJpbmRleCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBO0FBQ0E7QUFHQUEsQ0FBQyxDQUFDQyxRQUFELENBQUQsQ0FBWUMsS0FBWixDQUFrQixZQUFZO0FBQzFCQyxzQkFBb0I7QUFDdkIsQ0FGRDs7QUFLQSxTQUFTQSxvQkFBVCxHQUFn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QUFDSSxJQUFQLENBQVksTUFBWixFQUFvQkssVUFBVSxHQUFHcEMsQ0FBYixHQUFpQnFDLFVBQXJDO0FBQ0gsT0FiRDtBQWNILEtBZkQ7QUFnQkg7QUFDSjs7QUFFRCxTQUFTbkMsMkJBQVQsQ0FBcUNJLGlCQUFyQyxFQUF3RDtBQUNwRCxNQUFJQSxpQkFBaUIsQ0FBQ0MsSUFBbEIsQ0FBdUIsVUFBdkIsQ0FBSixFQUF3QztBQUNwQ0QscUJBQWlCLENBQUNFLElBQWxCLENBQXVCLHlCQUF2QixFQUFrRDhCLFFBQWxELENBQTJEO0FBQ3ZELGdCQUFXLGtCQUQ0QztBQUV2REMsWUFBTSxFQUFFO0FBRitDLEtBQTNEO0FBSUFqQyxxQkFBaUIsQ0FBQ0UsSUFBbEIsQ0FBdUIseUJBQXZCLEVBQWtEQyxFQUFsRCxDQUFxRCxZQUFyRCxFQUFtRSxVQUFVK0IsS0FBVixFQUFpQkMsRUFBakIsRUFBcUI7QUFDcEZuQyx1QkFBaUIsQ0FBQ0UsSUFBbEIsQ0FBdUIsNkJBQXZCLEVBQXNEVCxJQUF0RCxDQUEyRCxVQUFVMkMsS0FBVixFQUFpQmxCLElBQWpCLEVBQXVCO0FBQzlFN0IsU0FBQyxDQUFDNkIsSUFBRCxDQUFELENBQVFoQixJQUFSLENBQWEsaUJBQWIsRUFBZ0NRLEdBQWhDLENBQW9DMEIsS0FBcEM7QUFDSCxPQUZEO0FBR0gsS0FKRDtBQUtIO0FBQ0osQzs7Ozs7Ozs7Ozs7O0FDbEdEIiwiZmlsZSI6ImFkbWlubHRlLWZpZWxkLWNvbGxlY3Rpb24uanMiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCBcImpxdWVyeS11aVwiXG5pbXBvcnQgXCIuL2Zvcm0uc2Nzc1wiXG5cblxuJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24gKCkge1xuICAgIGluaXRDb2xsZWN0aW9uV2lkZ2V0KCk7XG59KTtcblxuXG5mdW5jdGlvbiBpbml0Q29sbGVjdGlvbldpZGdldCgpIHtcblxuICAgICQoJy5maWVsZC1jb2xsZWN0aW9uW2RhdGEtcHJvdG90eXBlXScpLmVhY2goZnVuY3Rpb24gKGksIGNvbGxlY3Rpb25XaWRnZXQpIHtcbiAgICAgICAgc2V0Q29sbGVjdGlvbldpZGdldFNvcnRhYmxlKCQoY29sbGVjdGlvbldpZGdldCkpO1xuICAgICAgICByZWluZGV4S2V5Q29sbGVjdGlvbldpZGdldCgkKGNvbGxlY3Rpb25XaWRnZXQpKTtcblxuICAgICAgICBzZXRDb2xsZWN0aW9uV2lkZ2V0QWRkKCQoY29sbGVjdGlvbldpZGdldCkpO1xuICAgICAgICBzZXRDb2xsZWN0aW9uV2lkZ2V0RGVsZXRlKCQoY29sbGVjdGlvbldpZGdldCkpO1xuICAgIH0pO1xufVxuXG5mdW5jdGlvbiBzZXRDb2xsZWN0aW9uV2lkZ2V0QWRkKCRjb2xsZWN0aW9uV2lkZ2V0KSB7XG5cbiAgICBpZiAoJGNvbGxlY3Rpb25XaWRnZXQuZGF0YSgnYWxsb3ctYWRkJykpIHtcbiAgICAgICAgJGNvbGxlY3Rpb25XaWRnZXQuZmluZCgnLmZpZWxkLWNvbGxlY3Rpb24tYWRkJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIC8vIGdyYWIgdGhlIHByb3RvdHlwZSB0ZW1wbGF0ZVxuICAgICAgICAgICAgdmFyIG5ld1dpZGdldCA9ICRjb2xsZWN0aW9uV2lkZ2V0LmF0dHIoJ2RhdGEtcHJvdG90eXBlJyk7XG4gICAgICAgICAgICAvLyByZXBsYWNlIHRoZSBcIl9fbmFtZV9fXCIgdXNlZCBpbiB0aGUgaWQgYW5kIG5hbWUgb2YgdGhlIHByb3RvdHlwZVxuICAgICAgICAgICAgLy8gd2l0aCBhIG51bWJlciB0aGF0J3MgdW5pcXVlIHRvIHlvdXIgZW1haWxzXG4gICAgICAgICAgICAvLyBlbmQgbmFtZSBhdHRyaWJ1dGUgbG9va3MgbGlrZSBuYW1lPVwiY29udGFjdFtlbWFpbHNdWzJdXCJcbiAgICAgICAgICAgIG5ld1dpZGdldCA9IG5ld1dpZGdldC5yZXBsYWNlKC9fX25hbWVfXy9nLCBnZXROdW1JdGVtcygkY29sbGVjdGlvbldpZGdldCkpO1xuXG4gICAgICAgICAgICAvLyBjcmVhdGUgYSBuZXcgbGlzdCBlbGVtZW50IGFuZCBhZGQgaXQgdG8gdGhlIGxpc3RcbiAgICAgICAgICAgICRjb2xsZWN0aW9uV2lkZ2V0LmZpbmQoJy5mb3JtLXdpZGdldC1jb21wb3VuZCAuZmllbGQtY29sbGVjdGlvbi1ncm91cCcpLmFwcGVuZChuZXdXaWRnZXQpO1xuICAgICAgICAgICAgJGNvbGxlY3Rpb25XaWRnZXQuZmluZCgnLmZpZWxkLWNvbGxlY3Rpb24taXRlbTpsYXN0JykuZmluZCgnLmZpZWxkLXBvc2l0aW9uJykudmFsKGdldE51bUl0ZW1zKCRjb2xsZWN0aW9uV2lkZ2V0KSk7XG5cbiAgICAgICAgICAgIHJlaW5kZXhLZXlDb2xsZWN0aW9uV2lkZ2V0KCRjb2xsZWN0aW9uV2lkZ2V0KTtcbiAgICAgICAgICAgIHNldENvbGxlY3Rpb25XaWRnZXREZWxldGUoJGNvbGxlY3Rpb25XaWRnZXQpO1xuICAgICAgICAgICAgJGNvbGxlY3Rpb25XaWRnZXQudHJpZ2dlcignY29sbGVjdGlvbi1hZGQtaXRlbScpO1xuXG4gICAgICAgICAgICAkY29sbGVjdGlvbldpZGdldC5kYXRhKCdudW0taXRlbXMnLCAkY29sbGVjdGlvbldpZGdldC5kYXRhKCdudW0taXRlbXMnKSArIDEpO1xuICAgICAgICAgICAgJGNvbGxlY3Rpb25XaWRnZXQuZmluZCgnLmNvbGxlY3Rpb24tZW1wdHknKS5oaWRlKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gc2V0Q29sbGVjdGlvbldpZGdldERlbGV0ZSgkY29sbGVjdGlvbldpZGdldCkge1xuICAgIGlmICgkY29sbGVjdGlvbldpZGdldC5kYXRhKCdhbGxvdy1kZWxldGUnKSkge1xuICAgICAgICAkY29sbGVjdGlvbldpZGdldC5maW5kKCcuZmllbGQtY29sbGVjdGlvbi1kZWxldGUnKS5vZmYoJ2NsaWNrJyk7XG4gICAgICAgICRjb2xsZWN0aW9uV2lkZ2V0LmZpbmQoJy5maWVsZC1jb2xsZWN0aW9uLWRlbGV0ZScpLm9uKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICQodGhpcykucGFyZW50cygnLmZvcm0tZ3JvdXA6Zmlyc3QnKS5yZW1vdmUoKTtcbiAgICAgICAgICAgIHJlaW5kZXhLZXlDb2xsZWN0aW9uV2lkZ2V0KCRjb2xsZWN0aW9uV2lkZ2V0KTtcbiAgICAgICAgICAgIGlmKGdldE51bUl0ZW1zKCRjb2xsZWN0aW9uV2lkZ2V0KT09MCkkY29sbGVjdGlvbldpZGdldC5maW5kKCcuY29sbGVjdGlvbi1lbXB0eScpLnNob3coKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBnZXROdW1JdGVtcygkY29sbGVjdGlvbldpZGdldCkge1xuICAgIGlmICgkY29sbGVjdGlvbldpZGdldC5kYXRhKCdyZWluZGV4LWtleScpKSB7XG4gICAgICAgIHJldHVybiAkY29sbGVjdGlvbldpZGdldC5maW5kKCcuZmllbGQtY29sbGVjdGlvbi1pdGVtJykubGVuZ3RoO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAkY29sbGVjdGlvbldpZGdldC5kYXRhKCdudW0taXRlbXMnKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHJlaW5kZXhLZXlDb2xsZWN0aW9uV2lkZ2V0KCRjb2xsZWN0aW9uV2lkZ2V0KSB7XG4gICAgaWYgKCRjb2xsZWN0aW9uV2lkZ2V0LmRhdGEoJ3JlaW5kZXgta2V5JykpIHtcbiAgICAgICAgJGNvbGxlY3Rpb25XaWRnZXQuZmluZCgnLmZpZWxkLWNvbGxlY3Rpb24taXRlbScpLmVhY2goZnVuY3Rpb24gKGksIGl0ZW0pIHtcbiAgICAgICAgICAgICQoaXRlbSkuZmluZCgnaW5wdXQsdGV4dGFyZWEnKS5lYWNoKGZ1bmN0aW9uICh5LCBmaWVsZCkge1xuICAgICAgICAgICAgICAgIGxldCAkZmllbGQgPSAkKGZpZWxkKTtcbiAgICAgICAgICAgICAgICAvL0NoYW5lZ21lbnQgSURcbiAgICAgICAgICAgICAgICBsZXQgcG9zSWQgPSBUb29scy5pbmRleE9mTGFzdERpZ2l0KCRmaWVsZC5wcm9wKCdpZCcpKTtcbiAgICAgICAgICAgICAgICBsZXQgaWRQcmVmaXggPSAkZmllbGQucHJvcCgnaWQnKS5zdWJzdHIoMCwgcG9zSWQpO1xuICAgICAgICAgICAgICAgIGxldCBpZFN1ZmZpeCA9ICRmaWVsZC5wcm9wKCdpZCcpLnN1YnN0cihwb3NJZCArIDEpO1xuICAgICAgICAgICAgICAgICRmaWVsZC5wcm9wKCdpZCcsIGlkUHJlZml4ICsgaSArIGlkU3VmZml4KTtcblxuICAgICAgICAgICAgICAgIC8vQ2hhbmVnbWVudCBOYW1lXG4gICAgICAgICAgICAgICAgbGV0IHBvc05hbWUgPSBUb29scy5pbmRleE9mTGFzdERpZ2l0KCRmaWVsZC5wcm9wKCduYW1lJykpO1xuICAgICAgICAgICAgICAgIGxldCBuYW1lUHJlZml4ID0gJGZpZWxkLnByb3AoJ25hbWUnKS5zdWJzdHIoMCwgcG9zTmFtZSk7XG4gICAgICAgICAgICAgICAgbGV0IG5hbWVTdWZmaXggPSAkZmllbGQucHJvcCgnbmFtZScpLnN1YnN0cihwb3NOYW1lICsgMSk7XG4gICAgICAgICAgICAgICAgJGZpZWxkLnByb3AoJ25hbWUnLCBuYW1lUHJlZml4ICsgaSArIG5hbWVTdWZmaXgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gc2V0Q29sbGVjdGlvbldpZGdldFNvcnRhYmxlKCRjb2xsZWN0aW9uV2lkZ2V0KSB7XG4gICAgaWYgKCRjb2xsZWN0aW9uV2lkZ2V0LmRhdGEoJ3NvcnRhYmxlJykpIHtcbiAgICAgICAgJGNvbGxlY3Rpb25XaWRnZXQuZmluZCgnLmZpZWxkLWNvbGxlY3Rpb24tZ3JvdXAnKS5zb3J0YWJsZSh7XG4gICAgICAgICAgICBcImhhbmRsZVwiIDogJy5sYy1idG4tc29ydGFibGUnLFxuICAgICAgICAgICAgY2FuY2VsOiAnJ1xuICAgICAgICB9KTtcbiAgICAgICAgJGNvbGxlY3Rpb25XaWRnZXQuZmluZCgnLmZpZWxkLWNvbGxlY3Rpb24tZ3JvdXAnKS5vbihcInNvcnR1cGRhdGVcIiwgZnVuY3Rpb24gKGV2ZW50LCB1aSkge1xuICAgICAgICAgICAgJGNvbGxlY3Rpb25XaWRnZXQuZmluZCgnLmZpZWxkLWNvbGxlY3Rpb24tZ3JvdXA+ZGl2JykuZWFjaChmdW5jdGlvbiAoaW5kZXgsIGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAkKGl0ZW0pLmZpbmQoJy5maWVsZC1wb3NpdGlvbicpLnZhbChpbmRleCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5leHBvcnQge307Il0sInNvdXJjZVJvb3QiOiIifQ==