"use strict"; (self["webpackChunk"] = self["webpackChunk"] || []).push([["app"],{ /***/ "./assets/app.js": /*!***********************!*\ !*** ./assets/app.js ***! \***********************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { __webpack_require__.r(__webpack_exports__); /* harmony import */ var core_js_modules_web_timers_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/web.timers.js */ "./node_modules/core-js/modules/web.timers.js"); /* harmony import */ var core_js_modules_web_timers_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_timers_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js"); /* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _js_getCodeBarre__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./js/getCodeBarre */ "./assets/js/getCodeBarre.js"); /* provided dependency */ var $ = __webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js"); /* * Welcome to your app's main JavaScript file! * * We recommend including the built version of this JavaScript file * (and its CSS file) in your base layout (base.html.twig). */ // any CSS you import will output into a single css file (app.css in this case) // start the Stimulus application $(document).ready(function () { setTimeout(function () { // utils.init(); _js_getCodeBarre__WEBPACK_IMPORTED_MODULE_2__["default"].init(); }, 200); }); /***/ }), /***/ "./assets/js/getCodeBarre.js": /*!***********************************!*\ !*** ./assets/js/getCodeBarre.js ***! \***********************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ GetEvent) /* harmony export */ }); /* harmony import */ var core_js_modules_es_date_to_string_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.date.to-string.js */ "./node_modules/core-js/modules/es.date.to-string.js"); /* harmony import */ var core_js_modules_es_date_to_string_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_date_to_string_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var core_js_modules_es_array_for_each_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.for-each.js */ "./node_modules/core-js/modules/es.array.for-each.js"); /* harmony import */ var core_js_modules_es_array_for_each_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_for_each_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ "./node_modules/core-js/modules/es.object.to-string.js"); /* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ "./node_modules/core-js/modules/web.dom-collections.for-each.js"); /* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var core_js_modules_web_timers_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/web.timers.js */ "./node_modules/core-js/modules/web.timers.js"); /* harmony import */ var core_js_modules_web_timers_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_timers_js__WEBPACK_IMPORTED_MODULE_4__); /* 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"); /* 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__); /* harmony import */ var core_js_modules_es_error_cause_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.error.cause.js */ "./node_modules/core-js/modules/es.error.cause.js"); /* harmony import */ var core_js_modules_es_error_cause_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_error_cause_js__WEBPACK_IMPORTED_MODULE_6__); /* harmony import */ var core_js_modules_es_error_to_string_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.error.to-string.js */ "./node_modules/core-js/modules/es.error.to-string.js"); /* harmony import */ var core_js_modules_es_error_to_string_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_error_to_string_js__WEBPACK_IMPORTED_MODULE_7__); /* harmony import */ var core_js_modules_es_array_is_array_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.array.is-array.js */ "./node_modules/core-js/modules/es.array.is-array.js"); /* harmony import */ var core_js_modules_es_array_is_array_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_is_array_js__WEBPACK_IMPORTED_MODULE_8__); /* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ "./node_modules/core-js/modules/es.symbol.js"); /* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_9__); /* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ "./node_modules/core-js/modules/es.symbol.description.js"); /* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_10__); /* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ "./node_modules/core-js/modules/es.symbol.iterator.js"); /* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_11__); /* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ "./node_modules/core-js/modules/es.array.iterator.js"); /* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_12__); /* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ "./node_modules/core-js/modules/es.string.iterator.js"); /* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_13__); /* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ "./node_modules/core-js/modules/web.dom-collections.iterator.js"); /* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_14__); /* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ "./node_modules/core-js/modules/es.array.from.js"); /* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_15__); /* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ "./node_modules/core-js/modules/es.array.slice.js"); /* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_16__); /* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ "./node_modules/core-js/modules/es.function.name.js"); /* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_17__); /* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ "./node_modules/core-js/modules/es.regexp.exec.js"); /* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_18__); /* harmony import */ var core_js_modules_es_regexp_test_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! core-js/modules/es.regexp.test.js */ "./node_modules/core-js/modules/es.regexp.test.js"); /* harmony import */ var core_js_modules_es_regexp_test_js__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_test_js__WEBPACK_IMPORTED_MODULE_19__); /* provided dependency */ var $ = __webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js"); function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 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); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } var GetEvent = /*#__PURE__*/function () { function GetEvent() { _classCallCheck(this, GetEvent); } _createClass(GetEvent, null, [{ key: "init", value: function init() { this.getEvent(); } }, { key: "getEvent", value: function getEvent() { var saisie = $('#saisie'); saisie.focus(); var value; var $info = $('.info'); var $infoDon = $('#info-don'); var $infoDonneur = $('#info-donneur'); var $infoPsl = $('#info-psl'); var $don = $('#don'); var $nom = $('#nom'); var $prenom = $('#prenom'); var $naissance = $('#naissance'); var $typeDon = $('#typeDon'); var $typePoche = $('#typePoche'); var $nbreTube = $('#nbreTube'); var $step = $('#step'); var $indication = $('#indication'); var $evolution = $('#evolution'); var $label = $('#label'); var $type = $('#type'); var $current = $('#current'); var $todo = $('#todo'); var $picturePoche = $('#picturePoche'); var $pictureTube = $('#pictureTube'); var $input = $('#inputRange'); var $displayError = $('.error'); var $displaySuccess = $('.displaySuccess'); document.addEventListener('keydown', function (event) { saisie.focus(); if (event.code == 'Tab') { value = saisie.val(); saisie.val(''); $.ajax({ url: '/api/get-code-barre-type', method: "POST", dataType: "json", data: { 'codeBarre': value }, success: function success(response) { switch (response.data.step) { case '0': if (response.data.status == 'success') { $don.html(response.data.codeBarre); $nom.html(response.data.nom); $prenom.html(response.data.prenom); $naissance.html(new Date(response.data.birthdate).toLocaleDateString()); $typeDon.html(response.data.type_don); $nbreTube.html(response.data.nbre_tube); $step.html('Pour passer à la suite'); $indication.html('Scannez le DMU'); $pictureTube.css('display', 'none'); $picturePoche.css('display', 'flex'); $info.css('visibility', 'visible'); saisie.focus(); } if (response.data.status == 'init') { var pochesImg = $('.sang'); _toConsumableArray(pochesImg).forEach(function (sang) { sang.remove(); }); $don.html(response.data.codeBarre); $nom.html(response.data.nom); $prenom.html(response.data.prenom); $naissance.html(new Date(response.data.birthdate).toLocaleDateString()); $typeDon.html(response.data.type_don); $nbreTube.html(response.data.nbre_tube); $step.html('Pour passer à la suite'); $indication.html('Scannez le DMU'); $typePoche.html(''); $info.css('visibility', 'visible'); $evolution.css('visibility', 'hidden'); saisie.focus(); } if (response.data.status == 'error') { saisie.focus(); $displayError.css('display', "flex"); setTimeout(function () { $displayError.css('display', 'none'); }, 5000); } break; case '1': if (response.data.status == 'success') { $typePoche.html(response.data.nbre_poche); $step.html('ETAPE 1 / 2'); $indication.html('Scannez les étiquettes des poches'); saisie.focus(); $evolution.css('visibility', 'visible'); } if (response.data.status == 'error_donneur') { $displayError.html('erreur donneur'); $displayError.css('display', "flex"); setTimeout(function () { $displayError.css('display', 'none'); }, 5000); saisie.focus(); } if (response.data.status == 'error_doublon') { $displayError.html('erreur doublon'); $displayError.css('display', "flex"); setTimeout(function () { $displayError.css('display', 'none'); }, 5000); saisie.focus(); } case '2': if (response.data.status == 'success') { console.log('step 2 success !!'); $typePoche.html(response.data.nbre_poche); $current.html(response.data.nbre_poche); $type.html('Poches'); $todo.html(response.data.nbre_poche_max); $input.attr('max', response.data.nbre_poche_max); $input.attr('value', response.data.nbre_poche); if (response.data.nbre_poche != response.data.nbre_poche_max && response.data.nbre_poche != 0) { $picturePoche.append('
'); } saisie.focus(); } if (response.data.status == 'final') { $typePoche.html(response.data.nbre_poche); $current.html(response.data.nbre_poche); $input.attr('max', response.data.nbre_poche_max); $input.attr('value', response.data.nbre_poche); $indication.html('validez avec un scan de poche!'); $picturePoche.append(''); saisie.focus(); } if (response.data.status == 'error_scan') { $displayError.html("Mauvais type d'étiquette"); $displayError.css('display', "flex"); setTimeout(function () { $displayError.css('display', 'none'); }, 5000); saisie.focus(); } if (response.data.status == 'error_doublon') { $displayError.html('Etiquette déjà scannée'); $displayError.css('display', "flex"); setTimeout(function () { $displayError.css('display', 'none'); }, 5000); saisie.focus(); } if (response.data.status == 'error_donneur') { $displayError.html('Ne correspond pas au donneur'); $displayError.css('display', "flex"); setTimeout(function () { $displayError.css('display', 'none'); }, 5000); saisie.focus(); } break; case '3': if (response.data.status == "success") { $picturePoche.css('display', 'none'); var _pochesImg = $('.sang'); _toConsumableArray(_pochesImg).forEach(function (sang) { sang.remove(); }); $pictureTube.css('display', 'flex'); $indication.html('Scannez les étiquettes de tubes!'); $input.attr('max', response.data.nbre_tube_max); $todo.html(response.data.nbre_tube_max); $input.attr('value', 0); $current.html(0); $type.html('Tubes'); } if (response.data.status == "error_scan") { $displayError.html("Mauvais type d'étiquette"); $displayError.css('display', "flex"); setTimeout(function () { $displayError.css('display', 'none'); }, 5000); } break; case '4': if (response.data.status == 'success') { $step.html('ETAPE 2 / 2'); $nbreTube.html(response.data.nbre_tube); $current.html(response.data.nbre_tube); $input.attr('max', response.data.nbre_tube_max); $type.html('Tubes'); $todo.html(response.data.nbre_tube_max); $input.attr('value', response.data.nbre_tube); console.log(response.data.nbre_tube); $pictureTube.append(''); saisie.focus(); } if (response.data.status == 'final') { $nbreTube.html(response.data.nbre_tube); $current.html(response.data.nbre_tube_max); $input.attr('max', response.data.nbre_tube_max); $type.html('Tubes'); $todo.html(response.data.nbre_tube_max); $input.attr('value', response.data.nbre_tube); $pictureTube.append(''); $displaySuccess.html('Patient ' + response.data.prenom + ' ' + response.data.nom + ' traité avec succès'); $displaySuccess.css('display', 'flex'); setTimeout(function () { location.reload(); $displaySuccess.css('display', 'none'); }, 5000); saisie.focus(); } if (response.data.status == 'error_scan') { $displayError.html("Mauvais type d'étiquette"); $displayError.css('display', "flex"); setTimeout(function () { $displayError.css('display', 'none'); }, 5000); saisie.focus(); } if (response.data.status == 'error_doublon') { $displayError.html('Etiquette déjà scannée'); $displayError.css('display', "flex"); setTimeout(function () { $displayError.css('display', 'none'); }, 5000); saisie.focus(); } if (response.data.status == 'error_donneur') { $displayError.html('Ne correspond pas au donneur'); $displayError.css('display', "flex"); setTimeout(function () { $displayError.css('display', 'none'); }, 5000); saisie.focus(); } break; } } }); } }); } }]); return GetEvent; }(); /***/ }) }, /******/ __webpack_require__ => { // webpackRuntimeModules /******/ var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId)) /******/ __webpack_require__.O(0, ["vendors-node_modules_core-js_modules_es_array_for-each_js-node_modules_core-js_modules_es_arr-9c7bdc"], () => (__webpack_exec__("./assets/app.js"))); /******/ var __webpack_exports__ = __webpack_require__.O(); /******/ } ]); //# sourceMappingURL=data:application/json;charset=utf-8;base64,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Q2xEZixhQUFhLENBQUN3QixHQUFHLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQztvQkFDcENuRCxVQUFVLENBQUMsWUFBTTtzQkFDYjJCLGFBQWEsQ0FBQ3dCLEdBQUcsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDO29CQUN4QyxDQUFDLEVBQUUsSUFBSSxDQUFDO29CQUNSaEQsTUFBTSxDQUFDQyxLQUFLLEVBQUU7a0JBRWxCO2tCQUNBO2NBQU07WUFFbEI7VUFFSixDQUFDLENBQUM7UUFDTjtNQUNKLENBQUMsQ0FBQztJQUNOO0VBQUM7RUFBQTtBQUFBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2FwcC5qcyIsIndlYnBhY2s6Ly8vLi9hc3NldHMvanMvZ2V0Q29kZUJhcnJlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBXZWxjb21lIHRvIHlvdXIgYXBwJ3MgbWFpbiBKYXZhU2NyaXB0IGZpbGUhXG4gKlxuICogV2UgcmVjb21tZW5kIGluY2x1ZGluZyB0aGUgYnVpbHQgdmVyc2lvbiBvZiB0aGlzIEphdmFTY3JpcHQgZmlsZVxuICogKGFuZCBpdHMgQ1NTIGZpbGUpIGluIHlvdXIgYmFzZSBsYXlvdXQgKGJhc2UuaHRtbC50d2lnKS5cbiAqL1xuXG4vLyBhbnkgQ1NTIHlvdSBpbXBvcnQgd2lsbCBvdXRwdXQgaW50byBhIHNpbmdsZSBjc3MgZmlsZSAoYXBwLmNzcyBpbiB0aGlzIGNhc2UpXG5pbXBvcnQgJ2pxdWVyeSc7XG4vLyBzdGFydCB0aGUgU3RpbXVsdXMgYXBwbGljYXRpb25cbmltcG9ydCBHZXRFdmVudCBmcm9tICcuL2pzL2dldENvZGVCYXJyZSc7XG5cbiQoZG9jdW1lbnQpLnJlYWR5KCgpPT57XG4gICAgc2V0VGltZW91dCgoKT0+e1xuICAgICAgICAvLyB1dGlscy5pbml0KCk7XG4gICAgICAgIEdldEV2ZW50LmluaXQoKVxuXG4gICAgfSwgMjAwKTtcbn0pIiwiZXhwb3J0IGRlZmF1bHQgY2xhc3MgR2V0RXZlbnR7XG4gICAgc3RhdGljIGluaXQoKXtcbiAgICAgICAgdGhpcy5nZXRFdmVudCgpXG4gICAgfVxuXG4gICAgc3RhdGljIGdldEV2ZW50KCl7XG4gICAgICAgIGxldCBzYWlzaWUgID0gJCgnI3NhaXNpZScpO1xuICAgICAgICBzYWlzaWUuZm9jdXMoKTtcbiAgICAgICAgbGV0IHZhbHVlO1xuICAgICAgICBsZXQgJGluZm8gPSAkKCcuaW5mbycpO1xuICAgICAgICBsZXQgJGluZm9Eb24gPSAkKCcjaW5mby1kb24nKTtcbiAgICAgICAgbGV0ICRpbmZvRG9ubmV1ciA9ICQoJyNpbmZvLWRvbm5ldXInKTtcbiAgICAgICAgbGV0ICRpbmZvUHNsID0gJCgnI2luZm8tcHNsJyk7XG4gICAgICAgIGxldCAkZG9uID0gJCgnI2RvbicpO1xuICAgICAgICBsZXQgJG5vbSA9ICQoJyNub20nKTtcbiAgICAgICAgbGV0ICRwcmVub20gPSAkKCcjcHJlbm9tJyk7XG4gICAgICAgIGxldCAkbmFpc3NhbmNlID0gJCgnI25haXNzYW5jZScpO1xuICAgICAgICBsZXQgJHR5cGVEb24gPSAkKCcjdHlwZURvbicpO1xuICAgICAgICBsZXQgJHR5cGVQb2NoZSA9ICQoJyN0eXBlUG9jaGUnKTtcbiAgICAgICAgbGV0ICRuYnJlVHViZSA9ICQoJyNuYnJlVHViZScpO1xuICAgICAgICBsZXQgJHN0ZXAgPSAkKCcjc3RlcCcpO1xuICAgICAgICBsZXQgJGluZGljYXRpb24gPSAkKCcjaW5kaWNhdGlvbicpO1xuICAgICAgICBsZXQgJGV2b2x1dGlvbiA9ICQoJyNldm9sdXRpb24nKTtcbiAgICAgICAgbGV0ICRsYWJlbCA9ICQoJyNsYWJlbCcpO1xuICAgICAgICBsZXQgJHR5cGUgPSAkKCcjdHlwZScpO1xuICAgICAgICBsZXQgJGN1cnJlbnQgPSAkKCcjY3VycmVudCcpO1xuICAgICAgICBsZXQgJHRvZG8gPSAkKCcjdG9kbycpO1xuICAgICAgICBsZXQgJHBpY3R1cmVQb2NoZSA9ICQoJyNwaWN0dXJlUG9jaGUnKTtcbiAgICAgICAgbGV0ICRwaWN0dXJlVHViZSA9ICQoJyNwaWN0dXJlVHViZScpO1xuICAgICAgICBsZXQgJGlucHV0ID0gJCgnI2lucHV0UmFuZ2UnKTtcbiAgICAgICAgbGV0ICRkaXNwbGF5RXJyb3IgPSAkKCcuZXJyb3InKTtcbiAgICAgICAgbGV0ICRkaXNwbGF5U3VjY2VzcyA9ICQoJy5kaXNwbGF5U3VjY2VzcycpO1xuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICBzYWlzaWUuZm9jdXMoKTtcbiAgICAgICAgICAgIGlmKGV2ZW50LmNvZGUgPT0gJ1RhYicpe1xuICAgICAgICAgICAgICAgIHZhbHVlID0gc2Fpc2llLnZhbCgpO1xuICAgICAgICAgICAgICAgIHNhaXNpZS52YWwoJycpXG4gICAgICAgICAgICAgICAgJC5hamF4KHtcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAnL2FwaS9nZXQtY29kZS1iYXJyZS10eXBlJyxcbiAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6IFwianNvblwiLFxuICAgICAgICAgICAgICAgICAgICBkYXRhOiB7J2NvZGVCYXJyZSc6IHZhbHVlfSxcbiAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24ocmVzcG9uc2Upe1xuICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoKHJlc3BvbnNlLmRhdGEuc3RlcCl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnMCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlc3BvbnNlLmRhdGEuc3RhdHVzID09ICdzdWNjZXNzJyl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZG9uLmh0bWwocmVzcG9uc2UuZGF0YS5jb2RlQmFycmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5vbS5odG1sKHJlc3BvbnNlLmRhdGEubm9tKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwcmVub20uaHRtbChyZXNwb25zZS5kYXRhLnByZW5vbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbmFpc3NhbmNlLmh0bWwobmV3IERhdGUocmVzcG9uc2UuZGF0YS5iaXJ0aGRhdGUpLnRvTG9jYWxlRGF0ZVN0cmluZygpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0eXBlRG9uLmh0bWwocmVzcG9uc2UuZGF0YS50eXBlX2Rvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbmJyZVR1YmUuaHRtbChyZXNwb25zZS5kYXRhLm5icmVfdHViZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3RlcC5odG1sKCdQb3VyIHBhc3NlciDDoCBsYSBzdWl0ZScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGluZGljYXRpb24uaHRtbCgnU2Nhbm5leiBsZSBETVUnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwaWN0dXJlVHViZS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBpY3R1cmVQb2NoZS5jc3MoJ2Rpc3BsYXknLCAnZmxleCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGluZm8uY3NzKCd2aXNpYmlsaXR5JywgJ3Zpc2libGUnKVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWlzaWUuZm9jdXMoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlc3BvbnNlLmRhdGEuc3RhdHVzID09ICdpbml0Jyl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcG9jaGVzSW1nID0gJCgnLnNhbmcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsuLi5wb2NoZXNJbWddLmZvckVhY2goc2FuZz0+e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbmcucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRvbi5odG1sKHJlc3BvbnNlLmRhdGEuY29kZUJhcnJlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRub20uaHRtbChyZXNwb25zZS5kYXRhLm5vbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcHJlbm9tLmh0bWwocmVzcG9uc2UuZGF0YS5wcmVub20pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5haXNzYW5jZS5odG1sKG5ldyBEYXRlKHJlc3BvbnNlLmRhdGEuYmlydGhkYXRlKS50b0xvY2FsZURhdGVTdHJpbmcoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHlwZURvbi5odG1sKHJlc3BvbnNlLmRhdGEudHlwZV9kb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5icmVUdWJlLmh0bWwocmVzcG9uc2UuZGF0YS5uYnJlX3R1YmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHN0ZXAuaHRtbCgnUG91ciBwYXNzZXIgw6AgbGEgc3VpdGUnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbmRpY2F0aW9uLmh0bWwoJ1NjYW5uZXogbGUgRE1VJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHlwZVBvY2hlLmh0bWwoJycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGluZm8uY3NzKCd2aXNpYmlsaXR5JywgJ3Zpc2libGUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2b2x1dGlvbi5jc3MoJ3Zpc2liaWxpdHknLCAnaGlkZGVuJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhaXNpZS5mb2N1cygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlc3BvbnNlLmRhdGEuc3RhdHVzID09ICdlcnJvcicpe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Fpc2llLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGlzcGxheUVycm9yLmNzcygnZGlzcGxheScsIFwiZmxleFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkaXNwbGF5RXJyb3IuY3NzKCdkaXNwbGF5JywgJ25vbmUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgNTAwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICcxJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2UuZGF0YS5zdGF0dXMgPT0gJ3N1Y2Nlc3MnKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0eXBlUG9jaGUuaHRtbChyZXNwb25zZS5kYXRhLm5icmVfcG9jaGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3RlcC5odG1sKCdFVEFQRSAxIC8gMicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGluZGljYXRpb24uaHRtbCgnU2Nhbm5leiBsZXMgw6l0aXF1ZXR0ZXMgZGVzIHBvY2hlcycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Fpc2llLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZvbHV0aW9uLmNzcygndmlzaWJpbGl0eScsICd2aXNpYmxlJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2UuZGF0YS5zdGF0dXMgPT0gJ2Vycm9yX2Rvbm5ldXInKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkaXNwbGF5RXJyb3IuaHRtbCgnZXJyZXVyIGRvbm5ldXInKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRpc3BsYXlFcnJvci5jc3MoJ2Rpc3BsYXknLCBcImZsZXhcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGlzcGxheUVycm9yLmNzcygnZGlzcGxheScsICdub25lJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDUwMDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Fpc2llLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2UuZGF0YS5zdGF0dXMgPT0gJ2Vycm9yX2RvdWJsb24nKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkaXNwbGF5RXJyb3IuaHRtbCgnZXJyZXVyIGRvdWJsb24nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRpc3BsYXlFcnJvci5jc3MoJ2Rpc3BsYXknLCBcImZsZXhcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGlzcGxheUVycm9yLmNzcygnZGlzcGxheScsICdub25lJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDUwMDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Fpc2llLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICcyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2UuZGF0YS5zdGF0dXMgPT0gJ3N1Y2Nlc3MnKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdzdGVwIDIgc3VjY2VzcyAhIScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHlwZVBvY2hlLmh0bWwocmVzcG9uc2UuZGF0YS5uYnJlX3BvY2hlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGN1cnJlbnQuaHRtbChyZXNwb25zZS5kYXRhLm5icmVfcG9jaGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHlwZS5odG1sKCdQb2NoZXMnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0b2RvLmh0bWwocmVzcG9uc2UuZGF0YS5uYnJlX3BvY2hlX21heClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbnB1dC5hdHRyKCdtYXgnLCByZXNwb25zZS5kYXRhLm5icmVfcG9jaGVfbWF4KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGlucHV0LmF0dHIoJ3ZhbHVlJywgcmVzcG9uc2UuZGF0YS5uYnJlX3BvY2hlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2UuZGF0YS5uYnJlX3BvY2hlICE9cmVzcG9uc2UuZGF0YS5uYnJlX3BvY2hlX21heCAmJiByZXNwb25zZS5kYXRhLm5icmVfcG9jaGUgIT0gMCl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBpY3R1cmVQb2NoZS5hcHBlbmQoJzxkaXYgY2xhc3M9XCJzYW5nXCI+PGltZyBzcmM9XCIvcG9jaGVzL1BvY2hlX3NhbmcyLnBuZ1wiPjwvZGl2PicpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWlzaWUuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5kYXRhLnN0YXR1cyA9PSAnZmluYWwnKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0eXBlUG9jaGUuaHRtbChyZXNwb25zZS5kYXRhLm5icmVfcG9jaGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY3VycmVudC5odG1sKHJlc3BvbnNlLmRhdGEubmJyZV9wb2NoZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbnB1dC5hdHRyKCdtYXgnLCByZXNwb25zZS5kYXRhLm5icmVfcG9jaGVfbWF4KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGlucHV0LmF0dHIoJ3ZhbHVlJywgcmVzcG9uc2UuZGF0YS5uYnJlX3BvY2hlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGluZGljYXRpb24uaHRtbCgndmFsaWRleiBhdmVjIHVuIHNjYW4gZGUgcG9jaGUhJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwaWN0dXJlUG9jaGUuYXBwZW5kKCc8ZGl2IGNsYXNzPVwic2FuZ1wiPjxpbWcgc3JjPVwiL3BvY2hlcy9Qb2NoZV9zYW5nMi5wbmdcIj48L2Rpdj4nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Fpc2llLmZvY3VzKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5kYXRhLnN0YXR1cyA9PSAnZXJyb3Jfc2Nhbicpe1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGlzcGxheUVycm9yLmh0bWwoXCJNYXV2YWlzIHR5cGUgZCfDqXRpcXVldHRlXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGlzcGxheUVycm9yLmNzcygnZGlzcGxheScsIFwiZmxleFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkaXNwbGF5RXJyb3IuY3NzKCdkaXNwbGF5JywgJ25vbmUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgNTAwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWlzaWUuZm9jdXMoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlc3BvbnNlLmRhdGEuc3RhdHVzID09ICdlcnJvcl9kb3VibG9uJyl7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkaXNwbGF5RXJyb3IuaHRtbCgnRXRpcXVldHRlIGTDqWrDoCBzY2FubsOpZScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGlzcGxheUVycm9yLmNzcygnZGlzcGxheScsIFwiZmxleFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkaXNwbGF5RXJyb3IuY3NzKCdkaXNwbGF5JywgJ25vbmUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgNTAwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWlzaWUuZm9jdXMoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlc3BvbnNlLmRhdGEuc3RhdHVzID09ICdlcnJvcl9kb25uZXVyJyl7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkaXNwbGF5RXJyb3IuaHRtbCgnTmUgY29ycmVzcG9uZCBwYXMgYXUgZG9ubmV1cicpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGlzcGxheUVycm9yLmNzcygnZGlzcGxheScsIFwiZmxleFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkaXNwbGF5RXJyb3IuY3NzKCdkaXNwbGF5JywgJ25vbmUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgNTAwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWlzaWUuZm9jdXMoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJzMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5kYXRhLnN0YXR1cyA9PSBcInN1Y2Nlc3NcIil7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGljdHVyZVBvY2hlLmNzcygnZGlzcGxheScsICdub25lJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcG9jaGVzSW1nID0gJCgnLnNhbmcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsuLi5wb2NoZXNJbWddLmZvckVhY2goc2FuZz0+e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbmcucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBpY3R1cmVUdWJlLmNzcygnZGlzcGxheScsICdmbGV4Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW5kaWNhdGlvbi5odG1sKCdTY2FubmV6IGxlcyDDqXRpcXVldHRlcyBkZSB0dWJlcyEnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbnB1dC5hdHRyKCdtYXgnLCByZXNwb25zZS5kYXRhLm5icmVfdHViZV9tYXgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdG9kby5odG1sKHJlc3BvbnNlLmRhdGEubmJyZV90dWJlX21heClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbnB1dC5hdHRyKCd2YWx1ZScsIDApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY3VycmVudC5odG1sKDApXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0eXBlLmh0bWwoJ1R1YmVzJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5kYXRhLnN0YXR1cyA9PSBcImVycm9yX3NjYW5cIil7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkaXNwbGF5RXJyb3IuaHRtbChcIk1hdXZhaXMgdHlwZSBkJ8OpdGlxdWV0dGVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkaXNwbGF5RXJyb3IuY3NzKCdkaXNwbGF5JywgXCJmbGV4XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRpc3BsYXlFcnJvci5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCA1MDAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICc0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2UuZGF0YS5zdGF0dXMgPT0gJ3N1Y2Nlc3MnKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzdGVwLmh0bWwoJ0VUQVBFIDIgLyAyJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbmJyZVR1YmUuaHRtbChyZXNwb25zZS5kYXRhLm5icmVfdHViZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjdXJyZW50Lmh0bWwocmVzcG9uc2UuZGF0YS5uYnJlX3R1YmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW5wdXQuYXR0cignbWF4JywgcmVzcG9uc2UuZGF0YS5uYnJlX3R1YmVfbWF4KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHR5cGUuaHRtbCgnVHViZXMnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRvZG8uaHRtbChyZXNwb25zZS5kYXRhLm5icmVfdHViZV9tYXgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW5wdXQuYXR0cigndmFsdWUnLCByZXNwb25zZS5kYXRhLm5icmVfdHViZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCByZXNwb25zZS5kYXRhLm5icmVfdHViZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwaWN0dXJlVHViZS5hcHBlbmQoJzxkaXYgY2xhc3M9XCJzYW5nXCI+PGltZyBzcmM9XCIvdHViZXMvVHViZScrcmVzcG9uc2UuZGF0YS5uYnJlX3R1YmUrJ19jaGVjay5wbmdcIj48L2Rpdj4nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Fpc2llLmZvY3VzKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5kYXRhLnN0YXR1cyA9PSAnZmluYWwnKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuYnJlVHViZS5odG1sKHJlc3BvbnNlLmRhdGEubmJyZV90dWJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGN1cnJlbnQuaHRtbChyZXNwb25zZS5kYXRhLm5icmVfdHViZV9tYXgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW5wdXQuYXR0cignbWF4JywgcmVzcG9uc2UuZGF0YS5uYnJlX3R1YmVfbWF4KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHR5cGUuaHRtbCgnVHViZXMnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRvZG8uaHRtbChyZXNwb25zZS5kYXRhLm5icmVfdHViZV9tYXgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW5wdXQuYXR0cigndmFsdWUnLCByZXNwb25zZS5kYXRhLm5icmVfdHViZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwaWN0dXJlVHViZS5hcHBlbmQoJzxkaXYgY2xhc3M9XCJzYW5nXCI+PGltZyBzcmM9XCIvdHViZXMvVHViZScrcmVzcG9uc2UuZGF0YS5uYnJlX3R1YmUrJ19jaGVjay5wbmdcIj48L2Rpdj4nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRpc3BsYXlTdWNjZXNzLmh0bWwoJ1BhdGllbnQgJysgcmVzcG9uc2UuZGF0YS5wcmVub20rJyAnK3Jlc3BvbnNlLmRhdGEubm9tICsgJyB0cmFpdMOpIGF2ZWMgc3VjY8OocycpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGlzcGxheVN1Y2Nlc3MuY3NzKCdkaXNwbGF5JywgJ2ZsZXgnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRpc3BsYXlTdWNjZXNzLmNzcygnZGlzcGxheScsICdub25lJylcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgNTAwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWlzaWUuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5kYXRhLnN0YXR1cyA9PSAnZXJyb3Jfc2Nhbicpe1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGlzcGxheUVycm9yLmh0bWwoXCJNYXV2YWlzIHR5cGUgZCfDqXRpcXVldHRlXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGlzcGxheUVycm9yLmNzcygnZGlzcGxheScsIFwiZmxleFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkaXNwbGF5RXJyb3IuY3NzKCdkaXNwbGF5JywgJ25vbmUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgNTAwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWlzaWUuZm9jdXMoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlc3BvbnNlLmRhdGEuc3RhdHVzID09ICdlcnJvcl9kb3VibG9uJyl7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkaXNwbGF5RXJyb3IuaHRtbCgnRXRpcXVldHRlIGTDqWrDoCBzY2FubsOpZScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGlzcGxheUVycm9yLmNzcygnZGlzcGxheScsIFwiZmxleFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkaXNwbGF5RXJyb3IuY3NzKCdkaXNwbGF5JywgJ25vbmUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgNTAwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWlzaWUuZm9jdXMoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlc3BvbnNlLmRhdGEuc3RhdHVzID09ICdlcnJvcl9kb25uZXVyJyl7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkaXNwbGF5RXJyb3IuaHRtbCgnTmUgY29ycmVzcG9uZCBwYXMgYXUgZG9ubmV1cicpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGlzcGxheUVycm9yLmNzcygnZGlzcGxheScsIFwiZmxleFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkaXNwbGF5RXJyb3IuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDUwMDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Fpc2llLmZvY3VzKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICB9XG59Il0sIm5hbWVzIjpbIkdldEV2ZW50IiwiJCIsImRvY3VtZW50IiwicmVhZHkiLCJzZXRUaW1lb3V0IiwiaW5pdCIsImdldEV2ZW50Iiwic2Fpc2llIiwiZm9jdXMiLCJ2YWx1ZSIsIiRpbmZvIiwiJGluZm9Eb24iLCIkaW5mb0Rvbm5ldXIiLCIkaW5mb1BzbCIsIiRkb24iLCIkbm9tIiwiJHByZW5vbSIsIiRuYWlzc2FuY2UiLCIkdHlwZURvbiIsIiR0eXBlUG9jaGUiLCIkbmJyZVR1YmUiLCIkc3RlcCIsIiRpbmRpY2F0aW9uIiwiJGV2b2x1dGlvbiIsIiRsYWJlbCIsIiR0eXBlIiwiJGN1cnJlbnQiLCIkdG9kbyIsIiRwaWN0dXJlUG9jaGUiLCIkcGljdHVyZVR1YmUiLCIkaW5wdXQiLCIkZGlzcGxheUVycm9yIiwiJGRpc3BsYXlTdWNjZXNzIiwiYWRkRXZlbnRMaXN0ZW5lciIsImV2ZW50IiwiY29kZSIsInZhbCIsImFqYXgiLCJ1cmwiLCJtZXRob2QiLCJkYXRhVHlwZSIsImRhdGEiLCJzdWNjZXNzIiwicmVzcG9uc2UiLCJzdGVwIiwic3RhdHVzIiwiaHRtbCIsImNvZGVCYXJyZSIsIm5vbSIsInByZW5vbSIsIkRhdGUiLCJiaXJ0aGRhdGUiLCJ0b0xvY2FsZURhdGVTdHJpbmciLCJ0eXBlX2RvbiIsIm5icmVfdHViZSIsImNzcyIsInBvY2hlc0ltZyIsImZvckVhY2giLCJzYW5nIiwicmVtb3ZlIiwibmJyZV9wb2NoZSIsImNvbnNvbGUiLCJsb2ciLCJuYnJlX3BvY2hlX21heCIsImF0dHIiLCJhcHBlbmQiLCJuYnJlX3R1YmVfbWF4IiwibG9jYXRpb24iLCJyZWxvYWQiXSwic291cmNlUm9vdCI6IiJ9