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.

296 lines
29KB

  1. (self["webpackChunk"] = self["webpackChunk"] || []).push([["app-frontend"],{
  2. /***/ "./assets/app/frontend/app/app.common.js":
  3. /*!***********************************************!*\
  4. !*** ./assets/app/frontend/app/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 _app_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./app.scss */ "./assets/app/frontend/app/app.scss");
  10. /* harmony import */ var _app_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./app.js */ "./assets/app/frontend/app/app.js");
  11. /*
  12. * Welcome to your app's main JavaScript file!
  13. *
  14. * We recommend including the built version of this JavaScript file
  15. * (and its CSS file) in your base layout (base.html.twig).
  16. */
  17. // any CSS you import will output into a single css file (app.css in this case)
  18. // start the Stimulus application
  19. //import './bootstrap';
  20. /***/ }),
  21. /***/ "./assets/app/frontend/app/app.js":
  22. /*!****************************************!*\
  23. !*** ./assets/app/frontend/app/app.js ***!
  24. \****************************************/
  25. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  26. "use strict";
  27. __webpack_require__.r(__webpack_exports__);
  28. /* harmony import */ var bootstrap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! bootstrap */ "./node_modules/bootstrap/dist/js/bootstrap.js");
  29. /* harmony import */ var bootstrap__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(bootstrap__WEBPACK_IMPORTED_MODULE_0__);
  30. /* harmony import */ var _js_script__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../js/script */ "./assets/app/frontend/js/script.js");
  31. /* harmony import */ var _js_script__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_js_script__WEBPACK_IMPORTED_MODULE_1__);
  32. /* harmony import */ var _js_bulle__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../js/bulle */ "./assets/app/frontend/js/bulle.js");
  33. /***/ }),
  34. /***/ "./assets/app/frontend/js/bulle.js":
  35. /*!*****************************************!*\
  36. !*** ./assets/app/frontend/js/bulle.js ***!
  37. \*****************************************/
  38. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  39. "use strict";
  40. __webpack_require__.r(__webpack_exports__);
  41. /* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ "./node_modules/core-js/modules/es.function.name.js");
  42. /* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);
  43. /* harmony import */ var _amcharts_amcharts4_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @amcharts/amcharts4/core */ "./node_modules/@amcharts/amcharts4/core.js");
  44. /* harmony import */ var _amcharts_amcharts4_charts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @amcharts/amcharts4/charts */ "./node_modules/@amcharts/amcharts4/charts.js");
  45. /* harmony import */ var _amcharts_amcharts4_plugins_forceDirected__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @amcharts/amcharts4/plugins/forceDirected */ "./node_modules/@amcharts/amcharts4/plugins/forceDirected.js");
  46. // Create chart
  47. var chart = _amcharts_amcharts4_core__WEBPACK_IMPORTED_MODULE_1__.create("carto-bulles", _amcharts_amcharts4_plugins_forceDirected__WEBPACK_IMPORTED_MODULE_3__.ForceDirectedTree); // Create series
  48. var series = chart.series.push(new _amcharts_amcharts4_plugins_forceDirected__WEBPACK_IMPORTED_MODULE_3__.ForceDirectedSeries());
  49. series.dataSource.url = routes.app_carto_json; // Set data
  50. // series.data = [{
  51. // "name": "Nos révoltes",
  52. // "link": ["Nos rêves"],
  53. // "children": [{
  54. // "name": "A1", "value": 100
  55. // }, {
  56. // "name": "A2", "value": 60
  57. // }, {
  58. // "name": "A3", "value": 30
  59. // }]
  60. // }, {
  61. // "name": "Nos rêves",
  62. // "link": ["Les actions \n inspirantes"],
  63. // "children": [{
  64. // "name": "B1", "value": 135
  65. // }, {
  66. // "name": "B2", "value": 98
  67. // }, {
  68. // "name": "B3", "value": 56
  69. // }]
  70. // }, {
  71. // "name": "Les actions \n inspirantes",
  72. // "link": ["Les actions \n à booster"],
  73. // "children": [{
  74. // "name": "C1", "value": 335
  75. // }, {
  76. // "name": "C2", "value": 148
  77. // }, {
  78. // "name": "C3", "value": 126
  79. // }, {
  80. // "name": "C4", "value": 26
  81. // }]
  82. // }, {
  83. // "name": "Les actions \n à booster",
  84. // "link": ["Nos révoltes"],
  85. // "children": [{
  86. // "name": "D1", "value": 415
  87. // }, {
  88. // "name": "D2", "value": 148
  89. // }, {
  90. // "name": "D3", "value": 89
  91. // }, {
  92. // "name": "D4", "value": 64
  93. // }, {
  94. // "name": "D5", "value": 16
  95. // }]
  96. // }];
  97. series.nodes.template.events.on("hit", function (event) {
  98. console.log(event.target.dataItem.nb);
  99. });
  100. series.manyBodyStrength = -25;
  101. series.links.template.strength = 2;
  102. series.centerStrength = 1.2; //active le zoom
  103. chart.zoomable = true; //Nombre de level affiché par défaut
  104. series.maxLevels = 1; //link entre "frere"
  105. // series.dataFields.id = "name";
  106. // series.dataFields.linkWith = "link";
  107. //distance entre les bulles
  108. series.links.template.distance = 1.7; // Set up data fields
  109. series.dataFields.name = "name";
  110. series.dataFields.children = "children";
  111. series.dataFields.nb = "nb"; // Add labels
  112. series.nodes.template.label.text = "{name}";
  113. series.fontSize = 20;
  114. series.minRadius = 70;
  115. series.maxRadius = 100; //Couleur des bulles
  116. series.colors.list = [_amcharts_amcharts4_core__WEBPACK_IMPORTED_MODULE_1__.color("#dc5b2f"), _amcharts_amcharts4_core__WEBPACK_IMPORTED_MODULE_1__.color("#fce767"), _amcharts_amcharts4_core__WEBPACK_IMPORTED_MODULE_1__.color("#97533a"), _amcharts_amcharts4_core__WEBPACK_IMPORTED_MODULE_1__.color("#568b6f")]; //Apparence des liens entre les bulles
  117. series.links.template.strokeWidth = 5;
  118. series.links.template.strokeOpacity = 1; //tooltip
  119. series.nodes.template.tooltipText = "{nb}";
  120. /***/ }),
  121. /***/ "./assets/app/frontend/js/script.js":
  122. /*!******************************************!*\
  123. !*** ./assets/app/frontend/js/script.js ***!
  124. \******************************************/
  125. /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
  126. __webpack_require__(/*! core-js/modules/es.array.for-each.js */ "./node_modules/core-js/modules/es.array.for-each.js");
  127. __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ "./node_modules/core-js/modules/web.dom-collections.for-each.js");
  128. __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ "./node_modules/core-js/modules/es.regexp.exec.js");
  129. __webpack_require__(/*! core-js/modules/es.string.replace.js */ "./node_modules/core-js/modules/es.string.replace.js");
  130. __webpack_require__(/*! core-js/modules/es.string.split.js */ "./node_modules/core-js/modules/es.string.split.js");
  131. $(document).ready(function () {
  132. menuToggle();
  133. manageFormContact();
  134. manageFormSearch();
  135. manageFormIndiv();
  136. initialisePopovers();
  137. });
  138. function initialisePopovers() {
  139. $('[data-toggle="popover"]').popover({
  140. html: true,
  141. container: '.map',
  142. placement: 'top'
  143. });
  144. }
  145. function manageFormIndiv() {
  146. document.querySelectorAll('.add_item_link').forEach(function (btn) {
  147. return btn.addEventListener("click", addFormToCollection);
  148. });
  149. }
  150. var addFormToCollection = function addFormToCollection(e) {
  151. var collectionHolder = document.querySelector('.' + e.currentTarget.dataset.collectionHolderClass);
  152. var item = document.createElement('li');
  153. item.innerHTML = collectionHolder.dataset.prototype.replace(/__name__/g, collectionHolder.dataset.index);
  154. collectionHolder.appendChild(item);
  155. collectionHolder.dataset.index++;
  156. if (collectionHolder.dataset.index >= 6) {
  157. e.currentTarget.style.visibility = 'hidden';
  158. } // add a delete link to the new form
  159. addFormDeleteLink(item, e.currentTarget);
  160. };
  161. var addFormDeleteLink = function addFormDeleteLink(formLi, currentTarget) {
  162. var collectionHolder = document.querySelector('.' + currentTarget.dataset.collectionHolderClass);
  163. var removeFormButton = document.createElement('button');
  164. removeFormButton.classList.add('button-green', 'button-remove');
  165. removeFormButton.innerText = 'Supprimer';
  166. formLi.append(removeFormButton);
  167. removeFormButton.addEventListener('click', function (e) {
  168. collectionHolder.dataset.index--;
  169. if (collectionHolder.dataset.index <= 6) {
  170. currentTarget.style.visibility = 'visible';
  171. }
  172. e.preventDefault();
  173. formLi.remove();
  174. });
  175. };
  176. function menuToggle() {
  177. var box = $('.menu-content');
  178. var button = $('.toggle');
  179. button.on('click', function () {
  180. box.toggle('slow');
  181. });
  182. }
  183. function manageFormSearch() {
  184. $(".dropdown-search").on("change", "input[type='checkbox']", function () {
  185. $(this).closest("li").toggleClass("active", this.checked);
  186. });
  187. $(document).on('click', '.allow-focus', function (e) {
  188. e.stopPropagation();
  189. });
  190. $('.pagination a').click(function (e) {
  191. console.log(this.href.split('page=')[1]);
  192. $('.hidden-page').val(this.href.split('page=')[1]);
  193. $('.search-button').click();
  194. return false;
  195. });
  196. }
  197. function manageFormContact() {
  198. $('#contact_lccap').val('blop');
  199. $('#contact-form-btn').on('click', function () {
  200. if (checkFormValidity('#contact-form')) {
  201. $('#contact-form').fadeOut(200);
  202. $form = $('#contact-form');
  203. $.ajax({
  204. url: $form.prop('action'),
  205. method: $form.prop('method'),
  206. data: $form.serialize(),
  207. dataType: "json",
  208. success: function success(response) {
  209. $('#contact-form').html('<p class="success-post">Merci pour votre message, nous vous r&eacute;pondrons dans les plus brefs d&eacute;lais.</p>');
  210. $('#contact-form').fadeIn(500);
  211. }
  212. });
  213. }
  214. });
  215. }
  216. function checkFormValidity(formId) {
  217. if (!document.getElementById(formId.substr(1)).checkValidity()) {
  218. document.getElementById(formId.substr(1)).reportValidity();
  219. return false;
  220. } else {
  221. return true;
  222. }
  223. }
  224. /***/ }),
  225. /***/ "./assets/app/frontend/app/app.scss":
  226. /*!******************************************!*\
  227. !*** ./assets/app/frontend/app/app.scss ***!
  228. \******************************************/
  229. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  230. "use strict";
  231. __webpack_require__.r(__webpack_exports__);
  232. // extracted by mini-css-extract-plugin
  233. /***/ })
  234. },
  235. /******/ __webpack_require__ => { // webpackRuntimeModules
  236. /******/ "use strict";
  237. /******/
  238. /******/ var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
  239. /******/ __webpack_require__.O(0, ["vendors-node_modules_core-js_internals_export_js","vendors-node_modules_core-js_modules_es_string_replace_js","vendors-node_modules_core-js_internals_array-iteration_js-node_modules_jquery_src_jquery_js","vendors-node_modules_core-js_modules_es_string_split_js-node_modules_popper_js_dist_esm_popper_js","vendors-node_modules_amcharts_amcharts4_charts_js-node_modules_amcharts_amcharts4_core_js-nod-329af8"], () => (__webpack_exec__("./assets/app/frontend/app/app.common.js")));
  240. /******/ var __webpack_exports__ = __webpack_require__.O();
  241. /******/ }
  242. ]);
  243. //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvYXBwL2Zyb250ZW5kL2FwcC9hcHAuY29tbW9uLmpzIiwid2VicGFjazovLy8uL2Fzc2V0cy9hcHAvZnJvbnRlbmQvYXBwL2FwcC5qcyIsIndlYnBhY2s6Ly8vLi9hc3NldHMvYXBwL2Zyb250ZW5kL2pzL2J1bGxlLmpzIiwid2VicGFjazovLy8uL2Fzc2V0cy9hcHAvZnJvbnRlbmQvanMvc2NyaXB0LmpzIiwid2VicGFjazovLy8uL2Fzc2V0cy9hcHAvZnJvbnRlbmQvYXBwL2FwcC5zY3NzIl0sIm5hbWVzIjpbImNoYXJ0IiwiYW00Y29yZSIsImFtNHBsdWdpbnNfZm9yY2VEaXJlY3RlZCIsInNlcmllcyIsInB1c2giLCJkYXRhU291cmNlIiwidXJsIiwicm91dGVzIiwiYXBwX2NhcnRvX2pzb24iLCJub2RlcyIsInRlbXBsYXRlIiwiZXZlbnRzIiwib24iLCJldmVudCIsImNvbnNvbGUiLCJsb2ciLCJ0YXJnZXQiLCJkYXRhSXRlbSIsIm5iIiwibWFueUJvZHlTdHJlbmd0aCIsImxpbmtzIiwic3RyZW5ndGgiLCJjZW50ZXJTdHJlbmd0aCIsInpvb21hYmxlIiwibWF4TGV2ZWxzIiwiZGlzdGFuY2UiLCJkYXRhRmllbGRzIiwibmFtZSIsImNoaWxkcmVuIiwibGFiZWwiLCJ0ZXh0IiwiZm9udFNpemUiLCJtaW5SYWRpdXMiLCJtYXhSYWRpdXMiLCJjb2xvcnMiLCJsaXN0Iiwic3Ryb2tlV2lkdGgiLCJzdHJva2VPcGFjaXR5IiwidG9vbHRpcFRleHQiLCIkIiwiZG9jdW1lbnQiLCJyZWFkeSIsIm1lbnVUb2dnbGUiLCJtYW5hZ2VGb3JtQ29udGFjdCIsIm1hbmFnZUZvcm1TZWFyY2giLCJtYW5hZ2VGb3JtSW5kaXYiLCJpbml0aWFsaXNlUG9wb3ZlcnMiLCJwb3BvdmVyIiwiaHRtbCIsImNvbnRhaW5lciIsInBsYWNlbWVudCIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJmb3JFYWNoIiwiYnRuIiwiYWRkRXZlbnRMaXN0ZW5lciIsImFkZEZvcm1Ub0NvbGxlY3Rpb24iLCJlIiwiY29sbGVjdGlvbkhvbGRlciIsInF1ZXJ5U2VsZWN0b3IiLCJjdXJyZW50VGFyZ2V0IiwiZGF0YXNldCIsImNvbGxlY3Rpb25Ib2xkZXJDbGFzcyIsIml0ZW0iLCJjcmVhdGVFbGVtZW50IiwiaW5uZXJIVE1MIiwicHJvdG90eXBlIiwicmVwbGFjZSIsImluZGV4IiwiYXBwZW5kQ2hpbGQiLCJzdHlsZSIsInZpc2liaWxpdHkiLCJhZGRGb3JtRGVsZXRlTGluayIsImZvcm1MaSIsInJlbW92ZUZvcm1CdXR0b24iLCJjbGFzc0xpc3QiLCJhZGQiLCJpbm5lclRleHQiLCJhcHBlbmQiLCJwcmV2ZW50RGVmYXVsdCIsInJlbW92ZSIsImJveCIsImJ1dHRvbiIsInRvZ2dsZSIsImNsb3Nlc3QiLCJ0b2dnbGVDbGFzcyIsImNoZWNrZWQiLCJzdG9wUHJvcGFnYXRpb24iLCJjbGljayIsImhyZWYiLCJzcGxpdCIsInZhbCIsImNoZWNrRm9ybVZhbGlkaXR5IiwiZmFkZU91dCIsIiRmb3JtIiwiYWpheCIsInByb3AiLCJtZXRob2QiLCJkYXRhIiwic2VyaWFsaXplIiwiZGF0YVR5cGUiLCJzdWNjZXNzIiwicmVzcG9uc2UiLCJmYWRlSW4iLCJmb3JtSWQiLCJnZXRFbGVtZW50QnlJZCIsInN1YnN0ciIsImNoZWNrVmFsaWRpdHkiLCJyZXBvcnRWYWxpZGl0eSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtDQUdBO0FBQ0EsdUI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDWkE7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0ZBO0FBQ0E7Q0FHQTs7QUFDQSxJQUFJQSxLQUFLLEdBQUdDLDREQUFBLENBQWUsY0FBZixFQUErQkMsd0ZBQS9CLENBQVosQyxDQUVBOztBQUNBLElBQUlDLE1BQU0sR0FBR0gsS0FBSyxDQUFDRyxNQUFOLENBQWFDLElBQWIsQ0FBa0IsSUFBSUYsMEZBQUosRUFBbEIsQ0FB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LEVBSEg7QUFJSEMsZ0JBQVEsRUFBRSxNQUpQO0FBS0hDLGVBQU8sRUFBRSxpQkFBVUMsUUFBVixFQUFvQjtBQUN6QjlELFdBQUMsQ0FBQyxlQUFELENBQUQsQ0FBbUJTLElBQW5CLENBQXdCLHNIQUF4QjtBQUNBVCxXQUFDLENBQUMsZUFBRCxDQUFELENBQW1CK0QsTUFBbkIsQ0FBMEIsR0FBMUI7QUFDSDtBQVJFLE9BQVA7QUFVSDtBQUNKLEdBZkQ7QUFnQkg7O0FBRUQsU0FBU1gsaUJBQVQsQ0FBMkJZLE1BQTNCLEVBQW1DO0FBQy9CLE1BQUksQ0FBQy9ELFFBQVEsQ0FBQ2dFLGNBQVQsQ0FBd0JELE1BQU0sQ0FBQ0UsTUFBUCxDQUFjLENBQWQsQ0FBeEIsRUFBMENDLGFBQTFDLEVBQUwsRUFBZ0U7QUFDNURsRSxZQUFRLENBQUNnRSxjQUFULENBQXdCRCxNQUFNLENBQUNFLE1BQVAsQ0FBYyxDQUFkLENBQXhCLEVBQTBDRSxjQUExQztBQUNBLFdBQU8sS0FBUDtBQUNILEdBSEQsTUFHTztBQUNILFdBQU8sSUFBUDtBQUNIO0FBQ0osQzs7Ozs7Ozs7Ozs7O0FDbEhEIiwiZmlsZSI6ImFwcC1mcm9udGVuZC42YTFlOTA0NC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBXZWxjb21lIHRvIHlvdXIgYXBwJ3MgbWFpbiBKYXZhU2NyaXB0IGZpbGUhXG4gKlxuICogV2UgcmVjb21tZW5kIGluY2x1ZGluZyB0aGUgYnVpbHQgdmVyc2lvbiBvZiB0aGlzIEphdmFTY3JpcHQgZmlsZVxuICogKGFuZCBpdHMgQ1NTIGZpbGUpIGluIHlvdXIgYmFzZSBsYXlvdXQgKGJhc2UuaHRtbC50d2lnKS5cbiAqL1xuXG4vLyBhbnkgQ1NTIHlvdSBpbXBvcnQgd2lsbCBvdXRwdXQgaW50byBhIHNpbmdsZSBjc3MgZmlsZSAoYXBwLmNzcyBpbiB0aGlzIGNhc2UpXG5pbXBvcnQgJy4vYXBwLnNjc3MnO1xuaW1wb3J0ICcuL2FwcC5qcyc7XG5cbi8vIHN0YXJ0IHRoZSBTdGltdWx1cyBhcHBsaWNhdGlvblxuLy9pbXBvcnQgJy4vYm9vdHN0cmFwJzsiLCJpbXBvcnQgJ2Jvb3RzdHJhcCc7XG5cbmltcG9ydCBcIi4uL2pzL3NjcmlwdFwiO1xuaW1wb3J0IFwiLi4vanMvYnVsbGVcIjtcbiIsImltcG9ydCAqIGFzIGFtNGNvcmUgZnJvbSBcIkBhbWNoYXJ0cy9hbWNoYXJ0czQvY29yZVwiO1xuaW1wb3J0ICogYXMgYW00Y2hhcnRzIGZyb20gXCJAYW1jaGFydHMvYW1jaGFydHM0L2NoYXJ0c1wiO1xuaW1wb3J0ICogYXMgYW00cGx1Z2luc19mb3JjZURpcmVjdGVkIGZyb20gXCJAYW1jaGFydHMvYW1jaGFydHM0L3BsdWdpbnMvZm9yY2VEaXJlY3RlZFwiO1xuXG4vLyBDcmVhdGUgY2hhcnRcbmxldCBjaGFydCA9IGFtNGNvcmUuY3JlYXRlKFwiY2FydG8tYnVsbGVzXCIsIGFtNHBsdWdpbnNfZm9yY2VEaXJlY3RlZC5Gb3JjZURpcmVjdGVkVHJlZSk7XG5cbi8vIENyZWF0ZSBzZXJpZXNcbmxldCBzZXJpZXMgPSBjaGFydC5zZXJpZXMucHVzaChuZXcgYW00cGx1Z2luc19mb3JjZURpcmVjdGVkLkZvcmNlRGlyZWN0ZWRTZXJpZXMoKSlcblxuc2VyaWVzLmRhdGFTb3VyY2UudXJsID0gcm91dGVzLmFwcF9jYXJ0b19qc29uO1xuLy8gU2V0IGRhdGFcbi8vIHNlcmllcy5kYXRhID0gW3tcbi8vICAgICBcIm5hbWVcIjogXCJOb3MgcsOpdm9sdGVzXCIsXG4vLyAgICAgXCJsaW5rXCI6IFtcIk5vcyByw6p2ZXNcIl0sXG4vLyAgICAgXCJjaGlsZHJlblwiOiBbe1xuLy8gICAgICAgICBcIm5hbWVcIjogXCJBMVwiLCBcInZhbHVlXCI6IDEwMFxuLy8gICAgIH0sIHtcbi8vICAgICAgICAgXCJuYW1lXCI6IFwiQTJcIiwgXCJ2YWx1ZVwiOiA2MFxuLy8gICAgIH0sIHtcbi8vICAgICAgICAgXCJuYW1lXCI6IFwiQTNcIiwgXCJ2YWx1ZVwiOiAzMFxuLy8gICAgIH1dXG4vLyB9LCB7XG4vLyAgICAgXCJuYW1lXCI6IFwiTm9zIHLDqnZlc1wiLFxuLy8gICAgIFwibGlua1wiOiBbXCJMZXMgYWN0aW9ucyBcXG4gaW5zcGlyYW50ZXNcIl0sXG4vLyAgICAgXCJjaGlsZHJlblwiOiBbe1xuLy8gICAgICAgICBcIm5hbWVcIjogXCJCMVwiLCBcInZhbHVlXCI6IDEzNVxuLy8gICAgIH0sIHtcbi8vICAgICAgICAgXCJuYW1lXCI6IFwiQjJcIiwgXCJ2YWx1ZVwiOiA5OFxuLy8gICAgIH0sIHtcbi8vICAgICAgICAgXCJuYW1lXCI6IFwiQjNcIiwgXCJ2YWx1ZVwiOiA1NlxuLy8gICAgIH1dXG4vLyB9LCB7XG4vLyAgICAgXCJuYW1lXCI6IFwiTGVzIGFjdGlvbnMgXFxuIGluc3BpcmFudGVzXCIsXG4vLyAgICAgXCJsaW5rXCI6IFtcIkxlcyBhY3Rpb25zIFxcbiDDoCBib29zdGVyXCJdLFxuLy8gICAgIFwiY2hpbGRyZW5cIjogW3tcbi8vICAgICAgICAgXCJuYW1lXCI6IFwiQzFcIiwgXCJ2YWx1ZVwiOiAzMzVcbi8vICAgICB9LCB7XG4vLyAgICAgICAgIFwibmFtZVwiOiBcIkMyXCIsIFwidmFsdWVcIjogMTQ4XG4vLyAgICAgfSwge1xuLy8gICAgICAgICBcIm5hbWVcIjogXCJDM1wiLCBcInZhbHVlXCI6IDEyNlxuLy8gICAgIH0sIHtcbi8vICAgICAgICAgXCJuYW1lXCI6IFwiQzRcIiwgXCJ2YWx1ZVwiOiAyNlxuLy8gICAgIH1dXG4vLyB9LCB7XG4vLyAgICAgXCJuYW1lXCI6IFwiTGVzIGFjdGlvbnMgXFxuIMOgIGJvb3N0ZXJcIixcbi8vICAgICBcImxpbmtcIjogW1wiTm9zIHLDqXZvbHRlc1wiXSxcbi8vICAgICBcImNoaWxkcmVuXCI6IFt7XG4vLyAgICAgICAgIFwibmFtZVwiOiBcIkQxXCIsIFwidmFsdWVcIjogNDE1XG4vLyAgICAgfSwge1xuLy8gICAgICAgICBcIm5hbWVcIjogXCJEMlwiLCBcInZhbHVlXCI6IDE0OFxuLy8gICAgIH0sIHtcbi8vICAgICAgICAgXCJuYW1lXCI6IFwiRDNcIiwgXCJ2YWx1ZVwiOiA4OVxuLy8gICAgIH0sIHtcbi8vICAgICAgICAgXCJuYW1lXCI6IFwiRDRcIiwgXCJ2YWx1ZVwiOiA2NFxuLy8gICAgIH0sIHtcbi8vICAgICAgICAgXCJuYW1lXCI6IFwiRDVcIiwgXCJ2YWx1ZVwiOiAxNlxuLy8gICAgIH1dXG4vLyB9XTtcblxuc2VyaWVzLm5vZGVzLnRlbXBsYXRlLmV2ZW50cy5vbihcImhpdFwiLCBmdW5jdGlvbihldmVudCkge1xuICAgIGNvbnNvbGUubG9nKGV2ZW50LnRhcmdldC5kYXRhSXRlbS5uYik7XG59KTtcblxuc2VyaWVzLm1hbnlCb2R5U3RyZW5ndGggPSAtMjU7XG5zZXJpZXMubGlua3MudGVtcGxhdGUuc3RyZW5ndGggPSAyO1xuc2VyaWVzLmNlbnRlclN0cmVuZ3RoID0gMS4yO1xuXG4vL2FjdGl2ZSBsZSB6b29tXG5jaGFydC56b29tYWJsZSA9IHRydWU7XG4vL05vbWJyZSBkZSBsZXZlbCBhZmZpY2jDqSBwYXIgZMOpZmF1dFxuc2VyaWVzLm1heExldmVscyA9IDFcblxuLy9saW5rIGVudHJlIFwiZnJlcmVcIlxuLy8gc2VyaWVzLmRhdGFGaWVsZHMuaWQgPSBcIm5hbWVcIjtcbi8vIHNlcmllcy5kYXRhRmllbGRzLmxpbmtXaXRoID0gXCJsaW5rXCI7XG5cbi8vZGlzdGFuY2UgZW50cmUgbGVzIGJ1bGxlc1xuc2VyaWVzLmxpbmtzLnRlbXBsYXRlLmRpc3RhbmNlID0gMS43O1xuXG4vLyBTZXQgdXAgZGF0YSBmaWVsZHNcbnNlcmllcy5kYXRhRmllbGRzLm5hbWUgPSBcIm5hbWVcIjtcbnNlcmllcy5kYXRhRmllbGRzLmNoaWxkcmVuID0gXCJjaGlsZHJlblwiO1xuc2VyaWVzLmRhdGFGaWVsZHMubmIgPSBcIm5iXCI7XG5cbi8vIEFkZCBsYWJlbHNcbnNlcmllcy5ub2Rlcy50ZW1wbGF0ZS5sYWJlbC50ZXh0ID0gXCJ7bmFtZX1cIjtcbnNlcmllcy5mb250U2l6ZSA9IDIwO1xuc2VyaWVzLm1pblJhZGl1cyA9IDcwO1xuc2VyaWVzLm1heFJhZGl1cyA9IDEwMDtcblxuLy9Db3VsZXVyIGRlcyBidWxsZXNcbnNlcmllcy5jb2xvcnMubGlzdCA9IFtcbiAgICBhbTRjb3JlLmNvbG9yKFwiI2RjNWIyZlwiKSxcbiAgICBhbTRjb3JlLmNvbG9yKFwiI2ZjZTc2N1wiKSxcbiAgICBhbTRjb3JlLmNvbG9yKFwiIzk3NTMzYVwiKSxcbiAgICBhbTRjb3JlLmNvbG9yKFwiIzU2OGI2ZlwiKVxuXTtcblxuLy9BcHBhcmVuY2UgZGVzIGxpZW5zIGVudHJlIGxlcyBidWxsZXNcbnNlcmllcy5saW5rcy50ZW1wbGF0ZS5zdHJva2VXaWR0aCA9IDU7XG5zZXJpZXMubGlua3MudGVtcGxhdGUuc3Ryb2tlT3BhY2l0eSA9IDE7XG5cbi8vdG9vbHRpcFxuc2VyaWVzLm5vZGVzLnRlbXBsYXRlLnRvb2x0aXBUZXh0ID0gXCJ7bmJ9XCI7IiwiJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24gKCkge1xuICAgIG1lbnVUb2dnbGUoKTtcbiAgICBtYW5hZ2VGb3JtQ29udGFjdCgpO1xuICAgIG1hbmFnZUZvcm1TZWFyY2goKTtcbiAgICBtYW5hZ2VGb3JtSW5kaXYoKTtcbiAgICBpbml0aWFsaXNlUG9wb3ZlcnMoKTtcbn0pO1xuXG5mdW5jdGlvbiBpbml0aWFsaXNlUG9wb3ZlcnMoKSB7XG4gICAgJCgnW2RhdGEtdG9nZ2xlPVwicG9wb3ZlclwiXScpLnBvcG92ZXIoe1xuICAgICAgICBodG1sOiB0cnVlLFxuICAgICAgICBjb250YWluZXI6ICcubWFwJyxcbiAgICAgICAgcGxhY2VtZW50OiAndG9wJyxcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gbWFuYWdlRm9ybUluZGl2KCkge1xuICAgIGRvY3VtZW50XG4gICAgICAgIC5xdWVyeVNlbGVjdG9yQWxsKCcuYWRkX2l0ZW1fbGluaycpXG4gICAgICAgIC5mb3JFYWNoKGJ0biA9PiBidG4uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGFkZEZvcm1Ub0NvbGxlY3Rpb24pKTtcbn1cblxuY29uc3QgYWRkRm9ybVRvQ29sbGVjdGlvbiA9IChlKSA9PiB7XG4gICAgY29uc3QgY29sbGVjdGlvbkhvbGRlciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy4nICsgZS5jdXJyZW50VGFyZ2V0LmRhdGFzZXQuY29sbGVjdGlvbkhvbGRlckNsYXNzKTtcbiAgICBjb25zdCBpdGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKTtcbiAgICBpdGVtLmlubmVySFRNTCA9IGNvbGxlY3Rpb25Ib2xkZXJcbiAgICAgICAgLmRhdGFzZXRcbiAgICAgICAgLnByb3RvdHlwZVxuICAgICAgICAucmVwbGFjZShcbiAgICAgICAgICAgIC9fX25hbWVfXy9nLFxuICAgICAgICAgICAgY29sbGVjdGlvbkhvbGRlci5kYXRhc2V0LmluZGV4XG4gICAgICAgICk7XG5cbiAgICBjb2xsZWN0aW9uSG9sZGVyLmFwcGVuZENoaWxkKGl0ZW0pO1xuXG4gICAgY29sbGVjdGlvbkhvbGRlci5kYXRhc2V0LmluZGV4Kys7XG5cbiAgICBpZiAoY29sbGVjdGlvbkhvbGRlci5kYXRhc2V0LmluZGV4ID49IDYpIHtcbiAgICAgICAgZS5jdXJyZW50VGFyZ2V0LnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJztcbiAgICB9XG4gICAgLy8gYWRkIGEgZGVsZXRlIGxpbmsgdG8gdGhlIG5ldyBmb3JtXG4gICAgYWRkRm9ybURlbGV0ZUxpbmsoaXRlbSwgZS5jdXJyZW50VGFyZ2V0KTtcbn07XG5cbmNvbnN0IGFkZEZvcm1EZWxldGVMaW5rID0gKGZvcm1MaSwgY3VycmVudFRhcmdldCkgPT4ge1xuICAgIGNvbnN0IGNvbGxlY3Rpb25Ib2xkZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuJyArIGN1cnJlbnRUYXJnZXQuZGF0YXNldC5jb2xsZWN0aW9uSG9sZGVyQ2xhc3MpO1xuICAgIGNvbnN0IHJlbW92ZUZvcm1CdXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKVxuICAgIHJlbW92ZUZvcm1CdXR0b24uY2xhc3NMaXN0LmFkZCgnYnV0dG9uLWdyZWVuJywgJ2J1dHRvbi1yZW1vdmUnKVxuICAgIHJlbW92ZUZvcm1CdXR0b24uaW5uZXJUZXh0ID0gJ1N1cHByaW1lcidcblxuICAgIGZvcm1MaS5hcHBlbmQocmVtb3ZlRm9ybUJ1dHRvbik7XG5cbiAgICByZW1vdmVGb3JtQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGUpID0+IHtcbiAgICAgICAgY29sbGVjdGlvbkhvbGRlci5kYXRhc2V0LmluZGV4LS07XG4gICAgICAgIGlmIChjb2xsZWN0aW9uSG9sZGVyLmRhdGFzZXQuaW5kZXggPD0gNikge1xuICAgICAgICAgICAgY3VycmVudFRhcmdldC5zdHlsZS52aXNpYmlsaXR5ID0gJ3Zpc2libGUnO1xuICAgICAgICB9XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgICBmb3JtTGkucmVtb3ZlKCk7XG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIG1lbnVUb2dnbGUoKSB7XG4gICAgdmFyIGJveCA9ICQoJy5tZW51LWNvbnRlbnQnKTtcbiAgICB2YXIgYnV0dG9uID0gJCgnLnRvZ2dsZScpO1xuICAgIGJ1dHRvbi5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGJveC50b2dnbGUoJ3Nsb3cnKTtcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gbWFuYWdlRm9ybVNlYXJjaCgpIHtcbiAgICAkKFwiLmRyb3Bkb3duLXNlYXJjaFwiKS5vbihcImNoYW5nZVwiLCBcImlucHV0W3R5cGU9J2NoZWNrYm94J11cIiwgZnVuY3Rpb24gKCkge1xuICAgICAgICAkKHRoaXMpLmNsb3Nlc3QoXCJsaVwiKS50b2dnbGVDbGFzcyhcImFjdGl2ZVwiLCB0aGlzLmNoZWNrZWQpO1xuICAgIH0pO1xuXG4gICAgJChkb2N1bWVudCkub24oJ2NsaWNrJywgJy5hbGxvdy1mb2N1cycsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfSk7XG5cbiAgICAkKCcucGFnaW5hdGlvbiBhJykuY2xpY2soZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgY29uc29sZS5sb2codGhpcy5ocmVmLnNwbGl0KCdwYWdlPScpWzFdKTtcbiAgICAgICAgJCgnLmhpZGRlbi1wYWdlJykudmFsKHRoaXMuaHJlZi5zcGxpdCgncGFnZT0nKVsxXSk7XG4gICAgICAgICQoJy5zZWFyY2gtYnV0dG9uJykuY2xpY2soKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0pO1xufVxuXG5mdW5jdGlvbiBtYW5hZ2VGb3JtQ29udGFjdCgpIHtcbiAgICAkKCcjY29udGFjdF9sY2NhcCcpLnZhbCgnYmxvcCcpO1xuICAgICQoJyNjb250YWN0LWZvcm0tYnRuJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoY2hlY2tGb3JtVmFsaWRpdHkoJyNjb250YWN0LWZvcm0nKSkge1xuICAgICAgICAgICAgJCgnI2NvbnRhY3QtZm9ybScpLmZhZGVPdXQoMjAwKTtcbiAgICAgICAgICAgICRmb3JtID0gJCgnI2NvbnRhY3QtZm9ybScpO1xuICAgICAgICAgICAgJC5hamF4KHtcbiAgICAgICAgICAgICAgICB1cmw6ICRmb3JtLnByb3AoJ2FjdGlvbicpLFxuICAgICAgICAgICAgICAgIG1ldGhvZDogJGZvcm0ucHJvcCgnbWV0aG9kJyksXG4gICAgICAgICAgICAgICAgZGF0YTogJGZvcm0uc2VyaWFsaXplKCksXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6IFwianNvblwiLFxuICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICAkKCcjY29udGFjdC1mb3JtJykuaHRtbCgnPHAgY2xhc3M9XCJzdWNjZXNzLXBvc3RcIj5NZXJjaSBwb3VyIHZvdHJlIG1lc3NhZ2UsIG5vdXMgdm91cyByJmVhY3V0ZTtwb25kcm9ucyBkYW5zIGxlcyBwbHVzIGJyZWZzIGQmZWFjdXRlO2xhaXMuPC9wPicpO1xuICAgICAgICAgICAgICAgICAgICAkKCcjY29udGFjdC1mb3JtJykuZmFkZUluKDUwMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gY2hlY2tGb3JtVmFsaWRpdHkoZm9ybUlkKSB7XG4gICAgaWYgKCFkb2N1bWVudC5nZXRFbGVtZW50QnlJZChmb3JtSWQuc3Vic3RyKDEpKS5jaGVja1ZhbGlkaXR5KCkpIHtcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZm9ybUlkLnN1YnN0cigxKSkucmVwb3J0VmFsaWRpdHkoKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxufSIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxuZXhwb3J0IHt9OyJdLCJzb3VyY2VSb290IjoiIn0=