<?php

use Twig\Environment;
use Twig\Error\LoaderError;
use Twig\Error\RuntimeError;
use Twig\Extension\CoreExtension;
use Twig\Extension\SandboxExtension;
use Twig\Markup;
use Twig\Sandbox\SecurityError;
use Twig\Sandbox\SecurityNotAllowedTagError;
use Twig\Sandbox\SecurityNotAllowedFilterError;
use Twig\Sandbox\SecurityNotAllowedFunctionError;
use Twig\Source;
use Twig\Template;

/* @public_path/build/client.js */
class __TwigTemplate_f7fc9264b1d1aa29bbab0c72db42bd93b56dd2ced422c4a0b4080a7a60fd9eff extends Template
{
    private $source;
    private $macros = [];

    public function __construct(Environment $env)
    {
        parent::__construct($env);

        $this->source = $this->getSourceContext();

        $this->parent = false;

        $this->blocks = [
        ];
    }

    protected function doDisplay(array $context, array $blocks = [])
    {
        $macros = $this->macros;
        $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
        $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->enter($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "@public_path/build/client.js"));

        $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02 = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
        $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->enter($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "@public_path/build/client.js"));

        yield "(self[\"webpackChunk\"] = self[\"webpackChunk\"] || []).push([[\"client\"],{

/***/ \"./assets/js/client.js\":
/*!*****************************!*\\
  !*** ./assets/js/client.js ***!
  \\*****************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! core-js/modules/es.array.index-of.js */ \"./node_modules/core-js/modules/es.array.index-of.js\");

__webpack_require__(/*! core-js/modules/es.array.includes.js */ \"./node_modules/core-js/modules/es.array.includes.js\");

__webpack_require__(/*! core-js/modules/es.string.includes.js */ \"./node_modules/core-js/modules/es.string.includes.js\");

__webpack_require__(/*! core-js/modules/es.array.for-each.js */ \"./node_modules/core-js/modules/es.array.for-each.js\");

__webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ \"./node_modules/core-js/modules/web.dom-collections.for-each.js\");

__webpack_require__(/*! core-js/modules/web.timers.js */ \"./node_modules/core-js/modules/web.timers.js\");

__webpack_require__(/*! core-js/modules/es.array.find.js */ \"./node_modules/core-js/modules/es.array.find.js\");

__webpack_require__(/*! core-js/modules/es.array.map.js */ \"./node_modules/core-js/modules/es.array.map.js\");

__webpack_require__(/*! core-js/modules/es.function.name.js */ \"./node_modules/core-js/modules/es.function.name.js\");

__webpack_require__(/*! core-js/modules/es.string.trim.js */ \"./node_modules/core-js/modules/es.string.trim.js\");

var \$ = __webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\");

window.formChanged = false;

function unsaveChanged(event) {
  var activeElement = null;

  if (navigator.userAgent.indexOf(\"Chrome\") !== -1) {
    activeElement = document.activeElement;
  } else {
    activeElement = event.originalTarget.activeElement;
  }

  if (window.formChanged && (!activeElement || activeElement.id != 'btn-save-client' && activeElement.id != 'save-pref-planification' && !\$(activeElement).hasClass('btn-success'))) {
    if (!window.confirm(\"Attention, si vous quitter la page, vos modifications en cours ne seront pas sauvegardées\")) {
      event.preventDefault();
      return;
    } else {
      // localStorage.setItem('sidebarminim', false);
      window.formChanged = false;
    }
  } //on supprime le lock sur fermeture de l'onglet


  var idlock = \$('#lock-id').val();

  if (idlock) {
    var xhr = new XMLHttpRequest();
    xhr.open(\"DELETE\", \"/lock/\" + idlock, false); // false = synchrone

    xhr.send();
  }
}

window.addEventListener('beforeunload', unsaveChanged);
\$('body').on('change', '#check_meme_adresse_equipement_existant', function (e) {
  if (\$(this).is(':checked')) {
    \$('#list_equipement_existant').show();
    \$('#add_equipement_new').hide();
  } else {
    \$('#list_equipement_existant').hide();
    \$('#equipement_existant_select').val('');
    \$('#add_equipement_new').show();
  }
});
\$('body').on('click', '#add_agent_qualification', function (e) {
  var datagridAgentQualification = \$('#agent-grid-qualification').dxDataGrid('instance');
  datagridAgentQualification.addRow();
});
\$('body').on('change', '#type_client', function (e) {
  if (\$(this).val() == \"2\") {
    \$('#categorie_pro').parent().removeClass('hide');
    \$('#client_entreprise').parent().removeClass('hide');
    \$('#equipement_tva').val('4');
  } else {
    \$('#categorie_pro').parent().addClass('hide');
    \$('#client_entreprise').parent().addClass('hide');
    \$('#equipement_tva').val('5');
  }
});
\$('body').on('change', '.equipement-zone', function (e) {
  if (\$(this).val() == 6) {
    \$(\$(this).data('target')).css('visibility', 'inherit');
  } else {
    \$(\$(this).data('target')).css('visibility', 'hidden');
  }
});
\$('body').on('click', '.add_complement_adresse', function (e) {
  var targetGrid = \$(\$(this).data('target-grid')).dxDataGrid('instance');
  targetGrid.addRow();
});
\$('body').on('change', '.form-input-change', function (e) {
  var form = \$(this).attr('form');
  var id_equipement = \$('#' + form).data('idequipement');
  \$('#simulateur_data_change-' + id_equipement).val(\$(e.target).attr('name'));
  var html_grid = \$('#' + form).submit();
}); // \$('body').on('click', '.toggle-sidebar-client', function(e) {
//     if (\$('#sidebar-client').hasClass('minim')) {
//         localStorage.setItem('sidebarminim', false);
//         \$(this).removeClass('fa-chevron-right').addClass('fa-chevron-left');
//         \$('#sidebar-client').removeClass('minim ');
//         \$('.sidebar-client-bottom').addClass('minim');
//         \$('.bloc_picto').removeClass('hide').addClass('hide');
//         \$('#body-client').addClass('minim ');
//         \$('.bloc_fiche_3').removeClass('bloc_fiche_3').addClass('bloc_fiche_2');
//         \$('.bloc_fiche_technique').removeClass('bloc_fiche_full').addClass('bloc_fiche_2');
//         \$('.preferences_planification').removeClass('minim');
//     } else {
//         localStorage.setItem('sidebarminim', true);
//         \$(this).removeClass('fa-chevron-left').addClass('fa-chevron-right');
//         \$('#sidebar-client').addClass('minim ');
//         \$('#body-client').removeClass('minim ');
//         \$('.bloc_picto').removeClass('hide');
//         \$('.sidebar-client-bottom').removeClass('minim');
//         \$('.bloc_fiche_technique').removeClass('bloc_fiche_2').addClass('bloc_fiche_full');
//         \$('.bloc_fiche_2').removeClass('bloc_fiche_2').addClass('bloc_fiche_3');
//         \$('.preferences_planification').removeClass('minim').addClass('minim');
//     }
// });

\$('body').on(\"changed.bs.select\", function (e, clickedIndex, newValue, oldValue) {
  var value = e.target.options[clickedIndex].value;
  var text = e.target.options[clickedIndex].text;

  if (\$('#tr-' + value).length != 0 || oldValue.includes(value)) {
    \$('#tr-' + value).remove();
  } else {
    var tr = document.createElement('tr');
    \$(tr).attr('id', 'tr-' + value);
    tr.innerHTML = '<td>' + text + '</td><td></td>';
    \$('#simulateur-table-options tbody').append(tr.outerHTML);
  }
});
\$('body').on('click', '.choix-block', function (e) {
  var current_target = \$('.choix-block.bg-vert').data('target');
  var target = \$(this).data('target');
  \$('.choix-block').removeClass('bg-vert border-vert').addClass('border-grey-medium');
  \$(this).addClass('border-vert').addClass('bg-vert');

  if (current_target != null && current_target != target) {
    \$(current_target).hide();
  }

  \$('#form_add_equipement_type').val(target);
  \$(target).show();
  \$('#submit-add-equipement').show();
});
\$('#submit-add-equipement').on('click', function (e) {
  e.preventDefault(); //si on est en type recherche d'équipement et que l'équipement est toujours actif, on met un message

  if (\$('#form_add_equipement_type').val() == '#choix-recherche-equipement') {
    var \$selected = \$('select[name=equipement_search_value] option:selected');

    if (\$selected.length == 1) {
      if (\$selected.data('actif') == 1) {
        var link = '<a href=\"' + \$selected.data('link') + '\" target=\"_blank\">allez voir</a>';
        var message = \"Attention, cet équipement est toujours actif chez un autre client : \" + link + \". <br>Voulez vous tout de même ajouter cet équipement à ce client ?\";
        var result = DevExpress.ui.dialog.confirm(message, \"Equipement actif\");
        result.done(function (dialogResult) {
          if (dialogResult) {
            window.formChanged = false;
            \$('#form-add-equipement').submit();
          }
        });
        return false;
      }
    }
  }

  return true;
});
\$('body').on('submit', '#form-change-souscripteur', function (e) {
  if (\$('#new_client_souscripteur').val() != undefined && \$('#new_client_souscripteur').val() != '' || \$('#form-change-souscripteur-type').val() == 'new' && (\$('#client_nom-nouveau_souscripteur').val() != '' || \$('#client_entreprise-nouveau_souscripteur').val() != '') && \$('input[name=\"change-equipements[]\"]:checked').length != 0) {
    \$('#close-popup-changement-souscripteur').click();
    window.formChanged = false;
    return true;
  } else {
    \$('#messages-popup-change').show();
    \$('#messages-popup-change .alert').html(\$('#message-to-display').html());
    \$('#messages-popup-change .alert').show();
    return false;
  } // if (\$('#new_client_souscripteur').va)

});
\$('body').on('submit', '.submit-add-utilisateur', function (e) {
  //on check selon le type si
  var idequipement = \$(this).data('id-equipement');
  var type = \$('#form-add-utilisateur-type-' + idequipement).val();

  if (type == 'recherche') {
    if (\$('#new_client_utilisateur-' + idequipement).val() != undefined && \$('#new_client_utilisateur-' + idequipement).val() != '') {
      return true;
    } else {
      \$('#messages-popup-change').show();
      \$('#messages-popup-change .alert').html(\$('#message-to-display-recherche' + idequipement).html());
      \$('#messages-popup-change .alert').show();
      return false;
    }
  }

  if (type == 'new') {
    var type_client = \$('#type_client-' + idequipement).val();

    if (type_client == 1 && \$('#client_nom-' + idequipement).val() != undefined && \$('#client_nom-' + idequipement).val() != '' || type_client == 2 && \$('#client_entreprise-' + idequipement).val() != undefined && \$('#client_entreprise-' + idequipement).val() != '') {
      return true;
    } else {
      \$('#messages-popup-add-utilisateur-' + idequipement).show();
      \$('#messages-popup-add-utilisateur-' + idequipement + ' .alert').html(\$('#message-to-display-new' + idequipement).html());
      \$('#messages-popup-add-utilisateur-' + idequipement + ' .alert').show();
      return false;
    }
  }

  return false;
});
\$('body').on('change', '.change_equipement', function (e) {
  var form = \$(this).data('form-change');
  var name = \$(this).attr('name');
  var idequipement = \$(this).data('idequipement');
  \$(form + ' > input[name=type_change]').val(name);
  \$(form + ' > input[name=data_value]').val(\$(this).val());
  \$(form).data('target-html', \$(this).data('target'));
  \$(form).submit(); //on Ajoute un truc pour gérer l'affichage du numéro de serie complémentaire si c'est pac ou pas

  if (\$(this).val() == \"10\") {
    \$('#numero_serie_secondaire-' + idequipement).removeClass('hide');
  } else {
    \$('#numero_serie_secondaire-' + idequipement).addClass('hide');
  }
});
\$('body').on('click', '#btn-save-client', function (e) {
  e.preventDefault();
  var form = \$(this).attr('form');
  var realError = false;
  var idEquipement = \$('input[name=\"id_equipement_update\"]').val();

  if (\$('#' + form)[0].checkValidity() == false) {
    \$('#' + form)[0].reportValidity();
    \$('#' + form)[0].forEach(function (e) {
      if (e.validity.valid == false) {
        if (\$(e).data('idequipement') == idEquipement || \$(e).data('idequipement') == undefined && \$(e).is(':visible')) {
          realError = true;
        }
      }
    });
    if (realError) e.preventDefault();else \$('#' + form).submit();
  } else {
    \$('#' + form).submit();
  }
});
\$('body').on('submit', '.form-cas-particulier', function (e) {
  eval(\$(this).data('js'));
});
\$('body').on('click', '#btn-modif-client-equipement', function (e) {
  localStorage.setItem('scrollClient', window.scrollY);
});
\$('body').on('click', '.telephone-fr', function (e) {
  //si on repasse en numéro fr
  var target_mask = 'input[name=\"' + \$(this).data('target-mask') + '\"]';
  var target_value = 'input[name=\"' + \$(this).data('target-input-fr') + '\"]';

  if (\$(this).hasClass('opacity-25')) {
    \$(this).removeClass('opacity-25');
    \$(target_mask).mask('00.00.00.00.00', {
      translation: {
        '0': {
          pattern: /[0-9]/,
          recursive: false
        }
      }
    });
    \$(target_mask).attr('minlength', '14').attr('pattern', '[0-9]{2}.[0-9]{2}.[0-9]{2}.[0-9]{2}.[0-9]{2}');
    \$(target_value).val(1);
  } else {
    \$(target_value).val(0);
    \$(this).addClass('opacity-25');
    \$(target_mask).mask('9999999999');
    \$(target_mask).removeAttr('minlength').removeAttr('pattern');
  }
});
\$('body').on('click', '#btn-open-change-souscripteur', function (e) {
  \$('input[name=\"change-equipements[]\"]:checked').each(function (e) {
    \$(this).prop('checked', true);
    \$(this).attr('checked', '');
    \$(\$(this).data('change-target')).show();
  });
  \$('input[name=\"change-equipements[]\"]:not(:checked)').each(function (e) {
    \$(this).prop('checked', false);
    \$(this).removeAttr('checked');
    \$(\$(this).data('change-target')).hide();
  });
}); //gestion des règles de préferences de planification
//a partir de doit etre plus petit que avant le
//entre \"\" et \"\" doit être compris entre a partir du et avant le

\$('body').on('change', '.pref_a_partir_du', function (e) {
  var name_input_avant_le = 'input[name=date_avant_le]';
  var name_input_entre_debut = 'input[name=date_entre_debut]';
  var name_input_entre_fin = 'input[name=date_entre_fin]';
  var name_a_partir_du = 'input[name=date_a_partir_du]';

  if (!\$(this).val()) {
    if (\$(name_input_entre_debut).val() != '') \$(name_a_partir_du).datepicker('option', 'minDate', \$(name_input_entre_debut).datepicker('getDate'));else {
      \$(name_input_avant_le).datepicker('option', 'minDate', null);
      \$(name_input_entre_debut).datepicker(\"option\", \"minDate\", null);
      \$(name_input_entre_fin).datepicker(\"option\", \"minDate\", null);
      \$(name_a_partir_du).datepicker('option', 'minDate', null);
    }
  } else {
    var thisDate = \$(this).datepicker('getDate');
    if (!\$(name_input_avant_le).val()) \$(name_input_avant_le).datepicker('option', 'minDate', thisDate);
    if (!\$(name_input_entre_debut).val()) \$(name_input_entre_debut).datepicker('option', 'minDate', thisDate);
    if (!\$(name_input_entre_fin).val()) \$(name_input_entre_fin).datepicker('option', 'minDate', thisDate);
  }
});
\$('body').on('change', '.pref_avant_le', function (e) {
  var name_a_partir_du = 'input[name=date_a_partir_du]';
  var name_input_entre_debut = 'input[name=date_entre_debut]';
  var name_input_entre_fin = 'input[name=date_entre_fin]';
  var name_input_avant_le = 'input[name=date_avant_le]';

  if (!\$(this).val()) {
    if (\$(name_input_entre_fin).val() != '') \$(name_a_partir_du).datepicker('option', 'maxDate', \$(name_input_entre_fin).datepicker('getDate'));else {
      \$(name_a_partir_du).datepicker('option', 'maxDate', null);
      \$(name_input_entre_debut).datepicker(\"option\", \"maxDate\", null);
      \$(name_input_entre_fin).datepicker(\"option\", \"maxDate\", null);
      \$(name_input_avant_le).datepicker('option', 'maxDate', null);
    }
  } else {
    var thisDate = \$(this).datepicker('getDate');
    thisDate.setDate(thisDate.getDate() - 1);
    \$(name_a_partir_du).datepicker(\"option\", \"maxDate\", thisDate);
    if (!\$(name_input_entre_debut).val()) \$(name_input_entre_debut).datepicker(\"option\", \"maxDate\", thisDate);
    if (!\$(name_input_entre_fin).val()) \$(name_input_entre_fin).datepicker(\"option\", \"maxDate\", thisDate);
    if (thisDate < \$(name_a_partir_du).datepicker('getDate')) \$(name_a_partir_du).val('');
  }
});
\$('body').on('change', '.pref_entre_debut', function (e) {
  var name_a_partir_du = 'input[name=date_a_partir_du]';
  var name_input_avant_le = 'input[name=date_avant_le]';
  var name_input_entre_fin = 'input[name=date_entre_fin]';
  var name_input_entre_debut = 'input[name=date_entre_debut]';

  if (!\$(this).val()) {
    if (\$(name_a_partir_du).val() != '') \$(name_input_entre_fin).datepicker('option', 'minDate', \$(name_a_partir_du).datepicker('getDate'));else {
      \$(name_input_entre_fin).datepicker('option', 'minDate', null);
      \$(name_a_partir_du).datepicker('option', 'minDate', null);
      \$(name_input_avant_le).datepicker('option', 'minDate', null);
      \$(name_input_entre_debut).datepicker('option', 'minDate', null);
    }
  } else {
    var thisDate = \$(this).datepicker('getDate');
    \$(name_input_entre_fin).datepicker('option', 'minDate', thisDate);
    if (thisDate > \$(name_input_entre_fin).datepicker('getDate')) \$(name_input_entre_fin).val('');
    \$(name_a_partir_du).datepicker('option', 'minDate', thisDate);
    \$(name_input_avant_le).datepicker('option', 'minDate', thisDate);
  }
});
\$('body').on('change', '.pref_entre_fin', function (e) {
  var name_a_partir_du = 'input[name=date_a_partir_du]';
  var name_input_avant_le = 'input[name=date_avant_le]';
  var name_input_entre_debut = 'input[name=date_entre_debut]';
  var name_input_entre_fin = 'input[name=date_entre_fin]';

  if (!\$(this).val()) {
    if (\$(name_input_avant_le).val() != '') \$(name_input_entre_debut).datepicker('option', 'maxDate', \$(name_input_avant_le).datepicker('getDate'));else {
      \$(name_input_entre_debut).datepicker('option', 'maxDate', null);
      \$(name_a_partir_du).datepicker('option', 'maxDate', null);
      \$(name_input_avant_le).datepicker('option', 'maxDate', null);
      \$(name_input_entre_fin).datepicker('option', 'maxDate', null);
    }
  } else {
    var thisDate = \$(this).datepicker('getDate');
    \$(name_input_entre_debut).datepicker('option', 'maxDate', thisDate);
    if (thisDate < \$(name_input_entre_debut).datepicker('getDate')) \$(name_input_entre_debut).val('');
    \$(name_a_partir_du).datepicker('option', 'maxDate', thisDate);
    \$(name_input_avant_le).datepicker('option', 'maxDate', thisDate);
  }
});
\$('body').on('click', '.picto-group-contrat', function (e) {
  \$.ajax({
    method: \"GET\",
    url: \$(this).data('path'),
    dataType: \"json\",
    success: function success(data) {
      data.forEach(function (e) {
        window.open(e);
      });
    }
  });
});
\$('body').on('click', '.intervention_client', function () {
  // 1. Retirer le background de tous
  \$('.intervention_client').css('background', ''); // 2. Appliquer le background sur l'élément cliqué

  \$(this).css('background', '#F2F2F2'); // 3. Récupérer l'id de l'intervention

  var id = \$(this).data('id'); // 4. Charger le template via AJAX

  \$.ajax({
    url: '/equipement/intervention/result/' + id,
    type: 'GET',
    success: function success(html) {
      \$('#result_intervention_client').html(html);
    }
  });
  \$.ajax({
    url: '/equipement/intervention/facturation/' + id,
    // à adapter selon ta route
    type: 'GET',
    success: function success(html) {
      \$('#result_intervention_client_facturation').html(html);
    }
  });
});
document.removeEventListener('ready turbo:load', loadClient);
\$(document).on('ready turbo:load', loadClient);

function toggleDateFormatForMultipleInputs(dateInputIds, checkboxId) {
  var formatCheckbox = document.getElementById(checkboxId);
  var newFormat = \$('#' + checkboxId)[0].checked ? 'dd MM' : 'dd/mm/yy';
  dateInputIds.forEach(function (dateInputId) {
    \$('#' + dateInputId).datepicker('option', 'dateFormat', newFormat);
  });
  formatCheckbox.addEventListener('change', function () {
    var newFormat = \$('#' + checkboxId)[0].checked ? 'dd MM' : 'dd/mm/yy';
    dateInputIds.forEach(function (dateInputId) {
      \$('#' + dateInputId).datepicker('option', 'dateFormat', newFormat);
    });
  });
}

function loadClient(e) {
  window.formChanged = false;
  var scrollValue = localStorage.getItem('scrollClient'); // var sidebarminim = localStorage.getItem('sidebarminim');

  if (scrollValue > 0) {
    setTimeout(function () {
      \$('html, body').animate({
        scrollTop: scrollValue
      });
    }, 750);
    localStorage.setItem('scrollClient', 0);
  }

  \$('.input-datepicker').each(function () {
    var format = \$(this).data('format');
    var minDate = \$(this).data('min');
    var maxDate = \$(this).data('max');
    \$(this).datepicker({
      format: format,
      language: 'fr',
      showButtonPanel: true,
      minDate: minDate,
      maxDate: maxDate,
      clearText: \"Effacer\",
      beforeShow: function beforeShow(input, inst) {
        setTimeout(function () {
          var buttonPane = \$(inst.dpDiv).find('.ui-datepicker-buttonpane'); // Ajouter un bouton Effacer

          \$('<button>', {
            text: 'Effacer',
            click: function click() {
              \$(input).val(''); // Vider l'input

              \$(input).datepicker('setDate', null); // Réinitialiser le Datepicker

              \$(input).trigger('change');
            }
          }).appendTo(buttonPane).addClass('ui-datepicker-clear ui-state-default ui-priority-primary ui-corner-all');
        }, 1);
      }
    });
  });
  toggleDateFormatForMultipleInputs(['planification_entre_debut', 'planification_entre_fin'], 'inclusion_recurrente');
  toggleDateFormatForMultipleInputs(['date_apres_le'], 'apres_recurrente');
  toggleDateFormatForMultipleInputs(['date_avant_le'], 'avant_recurrente'); // if (sidebarminim == \"true\") {
  //     \$('.toggle-sidebar-client').click();
  // }

  \$('.input_tel:not(.not_fr)').mask('00.00.00.00.00', {
    translation: {
      '0': {
        pattern: /[0-9]/,
        recursive: false
      }
    }
  });
  \$('.input_tel.not_fr').mask('9999999999');
  \$('.input_numero_serie').mask('SSSS SSSSSS SSSS', {
    translation: {
      'S': {
        pattern: /[A-Za-z0-9]/
      }
    }
  });
  localStorage.setItem('activeTab', '');
  \$('.form_resilier_contrat').each(function (e) {
    \$(this)[0].reset();
  });

  if (\$('#type_client option:selected').val() == \"2\") {
    \$('#categorie_pro').parent().removeClass('hide');
    \$('#client_entreprise').parent().removeClass('hide');
    \$('#equipement_tva').val(4);
  }

  \$('input,select').change(function () {
    if (!\$(this).data('formchanged')) {
      window.formChanged = true;
    }
  });
  document.removeEventListener(\"turbo:before-visit\", unsaveChanged);
  document.addEventListener(\"turbo:before-visit\", unsaveChanged);
  document.addEventListener(\"turbo:link\", function (event) {
    window.formChanged = false;
  });
  if (\$('select[name=equipement_zone_1] option:selected').val() == 6) \$(\$('select[name=equipement_zone_1]').data('target')).css('visibility', 'inherit');
  if (\$('select[name=equipement_zone_2] option:selected').val() == 6) \$(\$('select[name=equipement_zone_2]').data('target')).css('visibility', 'inherit');
  if (\$('select[name=equipement_zone_3] option:selected').val() == 6) \$(\$('select[name=equipement_zone_3]').data('target')).css('visibility', 'inherit');
  \$('input[name=client_adresse_auto]').autocomplete({
    source: function source(request, response) {
      \$.ajax({
        method: \"GET\",
        url: 'https://api-adresse.data.gouv.fr/search/?q=' + \$(\"input[name='client_adresse_auto']\").val() + '&type=housenumber&autocomplete=1&limit10&lat&lon',
        dataType: \"json\",
        success: function success(data) {
          response(\$.map(data.features, function (item) {
            var adresses = []; // Ici on est obligé d'ajouter les CP dans un array pour ne pas avoir plusieurs fois le même

            if (\$.inArray(item.properties.label, adresses) == -1 && item.properties.housenumber && item.properties.postcode) {
              adresses.push(item.properties.label);
              return {
                label: item.properties.label,
                city: item.properties.city,
                postcode: item.properties.postcode,
                name: item.properties.name,
                coordinates: item.geometry.coordinates
              };
            }
          }));
        }
      });
    },
    // On remplit aussi la ville
    select: function select(event, ui) {
      var id_site = \$(this).data('idsite');
      var element = \$(this);
      \$(\"input[name='souscripteur_code_postal']\").val(ui.item.postcode);
      \$(\"input[name='souscripteur_ville']\").val(ui.item.city);
      \$(\"input[name='souscripteur_adresse']\").val(ui.item.name);
      \$(\"input[name='souscripteur_coordinates']\").val(ui.item.coordinates);

      if (id_site != '') {
        \$.ajax({
          method: \"POST\",
          url: '/secteur/compare/secteur_site/' + id_site + '',
          dataType: \"json\",
          data: {
            \"coordinates\": ui.item.coordinates
          },
          success: function success(data) {
            if (data.error == true) {
              \$(element).next().show();
              \$(element).next().addClass('alert alert-danger');
              \$(element).next().css('display', 'flex');
              \$(element).next().css('align-items', 'center');
              \$(element).next().html('<i class=\"fa fa-warning\"></i>' + data.message);
            } else {
              \$(element).next().removeClass('alert alert-danger');
              \$(element).next().hide();
            }
          }
        });
      }
    }
  });
  \$('input[name=equipement_localisation_add]').autocomplete({
    source: function source(request, response) {
      \$.ajax({
        method: \"GET\",
        url: 'https://api-adresse.data.gouv.fr/search/?q=' + \$(\"input[name='equipement_localisation_add']\").val() + '&type=housenumber&autocomplete=1&limit=10',
        dataType: \"json\",
        success: function success(data) {
          response(\$.map(data.features, function (item) {
            var adresses = []; // Ici on est obligé d'ajouter les CP dans un array pour ne pas avoir plusieurs fois le même

            if (\$.inArray(item.properties.label, adresses) == -1 && item.properties.housenumber) {
              adresses.push(item.properties.label);
              return {
                label: item.properties.label,
                city: item.properties.city,
                postcode: item.properties.postcode,
                name: item.properties.name,
                coordinates: item.geometry.coordinates
              };
            }
          }));
        }
      });
    },
    // On remplit aussi la ville
    select: function select(event, ui) {
      var element = \$(this);
      \$(\"input[name='code_postal_add']\").val(ui.item.postcode);
      \$(\"input[name='ville_add']\").val(ui.item.city);
      \$(\"input[name='adresse_add']\").val(ui.item.name);
      \$(\"input[name='coordinates_add']\").val(ui.item.coordinates);
    }
  });
  \$('body').on('click', '.btn-cp', function (e) {
    \$('.btn-cp').removeClass('bg-vert');
    \$(this).addClass('bg-vert');
    var id_equipement = \$(this).data('equipement');

    if (\$(this).attr('id') == 'btn-chantier-' + id_equipement) {
      \$('#cp-num-chantier-' + id_equipement).prop('required', true);
      \$('#salarie_chantier-' + id_equipement).val('chantier');
    } else {
      \$('#cp-num-chantier-' + id_equipement).prop('required', false);
      \$('#salarie_chantier-' + id_equipement).val('salarie');
    }
  });
  \$('body').on('click', '.detail-client', function (e) {
    var id_select = \$(this).data('select-id');
    var value = \$('#' + id_select).val();
    \$(this).data('content-template-ajax', '/clients/detail_client/' + value);
  });
  \$('body').on('click', '#salarie-frisquet', function (e) {
    if (\$(this).attr('disabled')) {
      e.preventDefault();
    } else {
      if (\$(this).hasClass('active')) {
        \$(this).removeClass('active');
        \$('input[name=salarie_frisquet]').val(false);
      } else {
        \$(this).addClass('active');
        \$('input[name=salarie_frisquet]').val(true);
      }
    }
  });
  \$('body').on('click', '#client-chantier', function (e) {
    if (\$(this).attr('disabled')) {
      e.preventDefault();
    } else {
      if (\$(this).hasClass('active')) {
        \$(this).removeClass('active');
        \$('input[name=equipement_chantier]').prop('disabled', true);
        \$('input[name=equipement_chantier]').val('');
      } else {
        \$(this).addClass('active');
        \$('input[name=equipement_chantier]').prop('disabled', false);
      }
    }
  });
  \$(document).click(function (event) {
    // Vérifiez si le clic est en dehors de #myElement
    if (\$(event.target).attr('id') != 'show-equipements' && \$(event.target).parent().attr('id') != 'show-equipements') {
      if (!\$(event.target).closest('#list-equipements').length) {
        // Cacher l'élément si il est visible
        if (!\$('#list-equipements').is(':hidden')) {
          \$('#list-equipements').hide();
        }
      }
    }
  });
  \$('body').on('click', '#show-equipements', function (e) {
    if (!\$('#list-equipements').is(':hidden')) {
      \$('#list-equipements').hide();
    } else {
      \$('#list-equipements').show();
    }
  });
  \$('#list-equipements').click(function (event) {
    event.stopPropagation();
  });
  \$('body').on('click', '#reset-preferences', function (e) {
    e.preventDefault();
    \$('#form-preferences-planification')[0].reset();
    \$('.planification').val('');
    \$('#form-preferences-planification select').each(function (e) {
      \$(this).find('option:first').prop('selected', true);
    });
    \$('#form-preferences-planification input[type=checkbox]').each(function (e) {
      \$(this).prop('checked', false);
      \$(this).removeAttr('checked');
    });
    \$('.input-datepicker').each(function () {
      \$(this).datepicker('setDate', null);
      \$(this).datepicker('option', 'minDate', null);
      \$(this).datepicker('option', 'maxDate', null);
    });
  });
  \$('body').on('click', '#submit-gestion-pref', function (e) {
    if (!\$('input[name=\"equipement_dupliquer[]\"]').is(':checked')) {
      e.preventDefault();
      return false;
    }
  }); //gestion recherche client dans souscripteur et utilisateur

  \$('#popup-changement-souscripteur input[name=numero_client]').mask('00 00 00000', {
    translation: {
      '0': {
        pattern: /[0-9]/,
        recursive: false
      }
    }
  });
  \$('#popup-add-utilisateur input[name=numero_client]').mask('00 00 00000', {
    translation: {
      '0': {
        pattern: /[0-9]/,
        recursive: false
      }
    }
  });
  \$('.input_affecter_equipement').prop('disabled', 'disabled');
  \$('.input_creer_client').prop('disabled', 'disabled');
  \$('.input_affecter_equipement').on('change', function (e) {
    var form = '#' + \$(this).attr('form');

    if (\$(this).is(':checked')) {
      \$(form + ' .span_affecter_equipement').addClass('color-primary');
      \$(form + ' .nouveau_client_creation').hide();
      \$(form + ' .nouveau_client_recherche').show();
      \$(form + ' .submit-form').removeAttr('disabled');
      \$(form + ' input[name=type_add]').val('recherche');
      \$(form + ' .input_creer_client').prop('checked', false);
      \$(form + ' .span_creer_client').removeClass('color-primary');
    } else {
      \$(form + ' .submit-form').attr('disabled');
      \$(form + ' .submit-form').prop('disabled', 'disabled');
      \$(form + ' .span_affecter_equipement').removeClass('color-primary');
      \$(form + ' .nouveau_client_recherche').hide();
      \$(form + ' input[name=type_add]').val('');
    }
  });
  \$('.input_creer_client').on('change', function (e) {
    if (\$(this).is(':checked')) {
      var form = '#' + \$(this).attr('form');
      \$(form + ' .span_creer_client').addClass('color-primary');
      \$(form + ' .submit-form').removeAttr('disabled');
      \$(form + ' input[name=type_add]').val('new');
      \$(form + ' .nouveau_client_creation--title').text('Numero Client : -');

      if (\$(form + ' input[name=client_nom]').is(':visible')) {
        \$(form + ' .nouveau_client_creation--nom').text(\$(form + ' input[name=etat_civil]:selected').text() + ' ' + \$(form + ' input[name=client_nom').val() + ' ' + \$(form + ' input[name=client_prenom').val());
      } else {
        \$(form + ' .nouveau_client_creation--nom').text(\$(form + ' input[name=client_entreprise').val());
      }

      \$(form + ' .nouveau_client_creation--emails').text(\$(form + ' input[name=email').val());
      \$(form + ' .nouveau_client_creation--adresse').text('');
      \$(form + ' .nouveau_client_creation').show();
      \$(form + ' .nouveau_client_recherche').hide();
      \$(form + ' input[name=input_affecter_equipement]').prop('checked', false);
      \$(form + ' .span_affecter_equipement').removeClass('color-primary');
    } else {
      \$(form + ' .span_creer_client').removeClass('color-primary');
      \$(form + ' .nouveau_client_creation').hide();
      \$(form + ' .submit-form').attr('disabled');
      \$(form + ' .submit-form').prop('disabled', 'disabled');
      \$(form + ' input[name=type_add]').val('');
    }
  });
  \$('body').on('click', '#reset-form-change-souscripteur,#reset-form-change-utilisateur', function (e) {
    \$('#form-changement-souscripteur')[0].reset();
    \$('#form-add-utilisateur')[0].reset();
    \$('.result-souscripteur-client').hide();
    \$('.nouveau_client_recherche').hide();
    \$('.nouveau_client_creation').hide();
    \$('.input_affecter_equipement').prop('checked', false);
    \$('.input_creer_client').prop('checked', false);
  });
  var currentRequest = null;
  var debounceTimer;
  \$('body').on('input', 'input[name=client_nom],input[name=client_entreprise],input[name=client_prenom],input[name=email],input[name=numero_client],select[name=categorie_pro]', function (e) {
    var nom_form = '#' + \$(this).attr('form'); // Annule l'événement précédent s'il est encore en cours

    clearTimeout(debounceTimer);

    if (\$(nom_form + ' select[name=type_client]').val() == 1 && \$(nom_form + ' input[name=client_nom]').val().trim().length > 2 || \$(nom_form + ' select[name=type_client]').val() == 2 && \$(nom_form + ' input[name=client_entreprise]').val().trim().length > 2 && \$(nom_form + ' select[name=categorie_pro]').val() != '') {
      \$(nom_form + ' input[name=input_creer_client]').removeAttr('disabled');
    } else {
      \$(nom_form + ' input[name=input_creer_client]').attr('disabled');
      \$(nom_form + ' input[name=input_creer_client]').prop('disabled', 'disabled');
    }

    var formData = \$('#' + \$(this).attr('form')).serialize();
    debounceTimer = setTimeout(function () {
      if (\$(nom_form + ' input[name=client_nom]').val().trim().length > 2 || \$(nom_form + ' input[name=client_prenom]').val().trim().length > 2 || \$(nom_form + ' input[name=email]').val().trim().length > 2 || \$(nom_form + ' input[name=client_entreprise]').val().trim().length > 2 || \$(nom_form + ' input[name=numero_client]').val().trim().length > 2) {
        // Annuler la requête précédente si elle est toujours en cours
        if (currentRequest != null) {
          currentRequest.abort(); // Annule la requête précédente
        }

        currentRequest = \$.ajax({
          method: \"POST\",
          url: '/clients/recherche',
          dataType: \"json\",
          data: formData,
          processData: false,
          success: function success(datas) {
            if (datas.source) {
              \$(nom_form + ' .result-souscripteur-client').css('max-height', '229px').css('min-height', '229px');
              \$(nom_form + ' input[name=input_affecter_equipement]').prop('disabled', 'disabled');
              \$(nom_form + ' .result-souscripteur-client').show();
            } else {
              \$(nom_form + ' input[name=input_affecter_equipement]').prop('disabled', 'disabled');
              \$(nom_form + ' input[name=input_affecter_equipement]').prop('checked', false);
              \$(nom_form + ' .nouveau_client_recherche').hide();
              \$(nom_form + ' .nouveau_client_recherche--title').text('');
              \$(nom_form + ' .nouveau_client_recherche--nom').text('');
              \$(nom_form + ' .nouveau_client_recherche--adresse').text('');
              \$(nom_form + ' .nouveau_client_recherche--emails').text('');
            }

            \$(nom_form + ' .result-souscripteur-client').dxDataGrid({
              dataSource: datas.source,
              columns: datas.colonnes,
              columnAutoWidth: true,
              showBorders: true,
              onInitialized: function onInitialized(e) {
                e.component.beginCustomLoading();
              },
              onContentReady: function onContentReady(e) {
                e.component.endCustomLoading();
              },
              selection: {
                mode: 'single'
              },
              onSelectionChanged: function onSelectionChanged(e) {
                // Handler of the \"selectionChanged\" event
                var allSelectedRowsData = e.selectedRowsData;

                if (allSelectedRowsData.length != 0) {
                  \$(nom_form + ' input[name=input_affecter_equipement]').removeAttr('disabled');
                  \$(nom_form + ' .nouveau_client_recherche--title').text('Numero Client : ' + allSelectedRowsData[0].numero_client);
                  \$(nom_form + ' .nouveau_client_recherche--nom').text(allSelectedRowsData[0].nom_complet);
                  \$(nom_form + ' .nouveau_client_recherche--adresse').text(allSelectedRowsData[0].adresse);
                  \$(nom_form + ' .nouveau_client_recherche--emails').text(allSelectedRowsData[0].email);
                  \$(nom_form + ' input[name=new_client_souscripteur]').val(allSelectedRowsData[0].id_client);

                  if (!\$(nom_form + ' input[name=input_affecter_equipement').is(':checked')) {
                    \$(nom_form + ' input[name=input_affecter_equipement]').click();
                  }
                }
              }
            });
          }
        });
      } else {
        if (\$(nom_form + ' .result-souscripteur-client').is(':visible')) {
          var grid = \$(nom_form + \" .result-souscripteur-client\").dxDataGrid(\"instance\");
          grid.option(\"dataSource\", []);
        }
      }
    }, 300);
  });
  \$('body').on('change', 'select[name=planifier_preference], select[name=planifier_partie_journee], select[name=planifier_agent]', function () {
    checkPreferencePlannification();
  });
  var lockId = \$('#lock-id').val();

  function checkLockExpiration() {
    if (lockId) {
      \$.ajax({
        url: \"/check_expiration_lock/\".concat(lockId),
        // Modifie l'URL selon ta route Symfony
        method: 'GET',
        dataType: 'json',
        success: function success(response) {
          if (response.expired) {
            //afficher la popup du choix de fermer la fiche ou raffraichir la page client
            // window.location.reload();
            if (\$('#popup-lock-expired-' + \$('#id_equipement_update').val()).is(':hidden')) {
              var popup_lock = \$('#popup-lock-expired-' + \$('#id_equipement_update').val()).dxPopup({
                width: \"auto\",
                height: \"auto\",
                maxHeight: \"90vh\",
                container: \".dx-viewport\",
                showTitle: true,
                title: \"Inactivité\",
                visible: false,
                dragEnabled: true,
                dragOutsideBoundary: true,
                closeOnOutsideClick: false,
                showCloseButton: true,
                elementAttr: {
                  \"class\": \"nobutton dark_shadow\"
                },
                position: {
                  at: \"center\",
                  my: \"center\",
                  collision: 'fit'
                }
              }).dxPopup('instance');
              \$('#popup-lock-expired-' + \$('#id_equipement_update').val()).show();
              popup_lock.show();
            }
          }
        },
        error: function error() {
          console.error('Erreur lors de la vérification du lock.');
        }
      });
    } else {
      console.log('pas de lock');
    }
  }

  function checkPreferencePlannification() {
    if (\$('select[name=planifier_preference] option:selected').val() == 'Indifférent') {
      \$('input[name=\"planifier_jour[]\"]').attr('disabled');
      \$('input[name=\"planifier_jour[]\"]').prop('disabled', true);
      \$('input[name=\"planifier_jour[]\"]').prop('checked', false);
    } else {
      \$('input[name=\"planifier_jour[]\"]').removeAttr('disabled');
      \$('input[name=\"planifier_jour[]\"]').prop('disabled', false);
    }

    if (\$('select[name=planifier_partie_journee] option:selected').val() == 'Indifférent') {
      \$('input[name=premiere_visite]').prop('disabled', true);
      \$('input[name=premiere_visite]').attr('disabled');
      \$('input[name=premiere_visite]').prop('checked', false);
      \$('select[name=planifier_plage_horaire] option:first').prop('selected', true);
      \$('select[name=planifier_plage_horaire]').prop('disabled', true);
      \$('select[name=planifier_plage_horaire]').attr('disabled');
    } else {
      \$('input[name=premiere_visite]').removeAttr('disabled');
      \$('input[name=premiere_visite]').prop('disabled', false);
      \$('select[name=planifier_plage_horaire]').prop('disabled', false);
      \$('select[name=planifier_plage_horaire]').removeAttr('disabled');
    }

    if (\$('select[name=planifier_agent] option:selected').val() == 'Indifférent') {
      \$('select[name=preference_agent]').prop('disabled', true);
      \$('select[name=preference_agent] option:first').prop('selected', true);
      \$('select[name=preference_agent]').attr('disabled');
    } else {
      \$('select[name=preference_agent]').prop('disabled', false);
      \$('select[name=preference_agent]').removeAttr('disabled');
    }
  }

  setInterval(checkLockExpiration, 60000);
  checkPreferencePlannification(); //on selectionne la premiere intervention si yen a une

  if (\$('.intervention_client').length > 0) {
    \$('.intervention_client').first().trigger('click');
  }
}

/***/ })

},
/******/ __webpack_require__ => { // webpackRuntimeModules
/******/ \"use strict\";
/******/ 
/******/ var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
/******/ __webpack_require__.O(0, [\"vendors-node_modules_core-js_internals_engine-user-agent_js-node_modules_core-js_internals_ex-b41e05\",\"vendors-node_modules_jquery_dist_jquery_js\",\"vendors-node_modules_core-js_internals_add-to-unscopables_js-node_modules_core-js_internals_a-5c631b\",\"vendors-node_modules_core-js_modules_es_array_find_js-node_modules_core-js_modules_es_array_f-a4378f\"], () => (__webpack_exec__(\"./assets/js/client.js\")));
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ }
]);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvanMvY2xpZW50LmpzIl0sIm5hbWVzIjpbIiQiLCJyZXF1aXJlIiwid2luZG93IiwiZm9ybUNoYW5nZWQiLCJ1bnNhdmVDaGFuZ2VkIiwiZXZlbnQiLCJhY3RpdmVFbGVtZW50IiwibmF2aWdhdG9yIiwidXNlckFnZW50IiwiaW5kZXhPZiIsImRvY3VtZW50Iiwib3JpZ2luYWxUYXJnZXQiLCJpZCIsImhhc0NsYXNzIiwiY29uZmlybSIsInByZXZlbnREZWZhdWx0IiwiaWRsb2NrIiwidmFsIiwieGhyIiwiWE1MSHR0cFJlcXVlc3QiLCJvcGVuIiwic2VuZCIsImFkZEV2ZW50TGlzdGVuZXIiLCJvbiIsImUiLCJpcyIsInNob3ciLCJoaWRlIiwiZGF0YWdyaWRBZ2VudFF1YWxpZmljYXRpb24iLCJkeERhdGFHcmlkIiwiYWRkUm93IiwicGFyZW50IiwicmVtb3ZlQ2xhc3MiLCJhZGRDbGFzcyIsImRhdGEiLCJjc3MiLCJ0YXJnZXRHcmlkIiwiZm9ybSIsImF0dHIiLCJpZF9lcXVpcGVtZW50IiwidGFyZ2V0IiwiaHRtbF9ncmlkIiwic3VibWl0IiwiY2xpY2tlZEluZGV4IiwibmV3VmFsdWUiLCJvbGRWYWx1ZSIsInZhbHVlIiwib3B0aW9ucyIsInRleHQiLCJsZW5ndGgiLCJpbmNsdWRlcyIsInJlbW92ZSIsInRyIiwiY3JlYXRlRWxlbWVudCIsImlubmVySFRNTCIsImFwcGVuZCIsIm91dGVySFRNTCIsImN1cnJlbnRfdGFyZ2V0IiwiJHNlbGVjdGVkIiwibGluayIsIm1lc3NhZ2UiLCJyZXN1bHQiLCJEZXZFeHByZXNzIiwidWkiLCJkaWFsb2ciLCJkb25lIiwiZGlhbG9nUmVzdWx0IiwidW5kZWZpbmVkIiwiY2xpY2siLCJodG1sIiwiaWRlcXVpcGVtZW50IiwidHlwZSIsInR5cGVfY2xpZW50IiwibmFtZSIsInJlYWxFcnJvciIsImlkRXF1aXBlbWVudCIsImNoZWNrVmFsaWRpdHkiLCJyZXBvcnRWYWxpZGl0eSIsImZvckVhY2giLCJ2YWxpZGl0eSIsInZhbGlkIiwiZXZhbCIsImxvY2FsU3RvcmFnZSIsInNldEl0ZW0iLCJzY3JvbGxZIiwidGFyZ2V0X21hc2siLCJ0YXJnZXRfdmFsdWUiLCJtYXNrIiwidHJhbnNsYXRpb24iLCJwYXR0ZXJuIiwicmVjdXJzaXZlIiwicmVtb3ZlQXR0ciIsImVhY2giLCJwcm9wIiwibmFtZV9pbnB1dF9hdmFudF9sZSIsIm5hbWVfaW5wdXRfZW50cmVfZGVidXQiLCJuYW1lX2lucHV0X2VudHJlX2ZpbiIsIm5hbWVfYV9wYXJ0aXJfZHUiLCJkYXRlcGlja2VyIiwidGhpc0RhdGUiLCJzZXREYXRlIiwiZ2V0RGF0ZSIsImFqYXgiLCJtZXRob2QiLCJ1cmwiLCJkYXRhVHlwZSIsInN1Y2Nlc3MiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwibG9hZENsaWVudCIsInRvZ2dsZURhdGVGb3JtYXRGb3JNdWx0aXBsZUlucHV0cyIsImRhdGVJbnB1dElkcyIsImNoZWNrYm94SWQiLCJmb3JtYXRDaGVja2JveCIsImdldEVsZW1lbnRCeUlkIiwibmV3Rm9ybWF0IiwiY2hlY2tlZCIsImRhdGVJbnB1dElkIiwic2Nyb2xsVmFsdWUiLCJnZXRJdGVtIiwic2V0VGltZW91dCIsImFuaW1hdGUiLCJzY3JvbGxUb3AiLCJmb3JtYXQiLCJtaW5EYXRlIiwibWF4RGF0ZSIsImxhbmd1YWdlIiwic2hvd0J1dHRvblBhbmVsIiwiY2xlYXJUZXh0IiwiYmVmb3JlU2hvdyIsImlucHV0IiwiaW5zdCIsImJ1dHRvblBhbmUiLCJkcERpdiIsImZpbmQiLCJ0cmlnZ2VyIiwiYXBwZW5kVG8iLCJyZXNldCIsImNoYW5nZSIsImF1dG9jb21wbGV0ZSIsInNvdXJjZSIsInJlcXVlc3QiLCJyZXNwb25zZSIsIm1hcCIsImZlYXR1cmVzIiwiaXRlbSIsImFkcmVzc2VzIiwiaW5BcnJheSIsInByb3BlcnRpZXMiLCJsYWJlbCIsImhvdXNlbnVtYmVyIiwicG9zdGNvZGUiLCJwdXNoIiwiY2l0eSIsImNvb3JkaW5hdGVzIiwiZ2VvbWV0cnkiLCJzZWxlY3QiLCJpZF9zaXRlIiwiZWxlbWVudCIsImVycm9yIiwibmV4dCIsImlkX3NlbGVjdCIsImNsb3Nlc3QiLCJzdG9wUHJvcGFnYXRpb24iLCJjdXJyZW50UmVxdWVzdCIsImRlYm91bmNlVGltZXIiLCJub21fZm9ybSIsImNsZWFyVGltZW91dCIsInRyaW0iLCJmb3JtRGF0YSIsInNlcmlhbGl6ZSIsImFib3J0IiwicHJvY2Vzc0RhdGEiLCJkYXRhcyIsImRhdGFTb3VyY2UiLCJjb2x1bW5zIiwiY29sb25uZXMiLCJjb2x1bW5BdXRvV2lkdGgiLCJzaG93Qm9yZGVycyIsIm9uSW5pdGlhbGl6ZWQiLCJjb21wb25lbnQiLCJiZWdpbkN1c3RvbUxvYWRpbmciLCJvbkNvbnRlbnRSZWFkeSIsImVuZEN1c3RvbUxvYWRpbmciLCJzZWxlY3Rpb24iLCJtb2RlIiwib25TZWxlY3Rpb25DaGFuZ2VkIiwiYWxsU2VsZWN0ZWRSb3dzRGF0YSIsInNlbGVjdGVkUm93c0RhdGEiLCJudW1lcm9fY2xpZW50Iiwibm9tX2NvbXBsZXQiLCJhZHJlc3NlIiwiZW1haWwiLCJpZF9jbGllbnQiLCJncmlkIiwib3B0aW9uIiwiY2hlY2tQcmVmZXJlbmNlUGxhbm5pZmljYXRpb24iLCJsb2NrSWQiLCJjaGVja0xvY2tFeHBpcmF0aW9uIiwiZXhwaXJlZCIsInBvcHVwX2xvY2siLCJkeFBvcHVwIiwid2lkdGgiLCJoZWlnaHQiLCJtYXhIZWlnaHQiLCJjb250YWluZXIiLCJzaG93VGl0bGUiLCJ0aXRsZSIsInZpc2libGUiLCJkcmFnRW5hYmxlZCIsImRyYWdPdXRzaWRlQm91bmRhcnkiLCJjbG9zZU9uT3V0c2lkZUNsaWNrIiwic2hvd0Nsb3NlQnV0dG9uIiwiZWxlbWVudEF0dHIiLCJwb3NpdGlvbiIsImF0IiwibXkiLCJjb2xsaXNpb24iLCJjb25zb2xlIiwibG9nIiwic2V0SW50ZXJ2YWwiLCJmaXJzdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElB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QXdDLFVBQXhDLEVBQW1ELElBQW5EO0FBQ0E3RixPQUFDLENBQUMsNENBQUQsQ0FBRCxDQUFnRDZGLElBQWhELENBQXFELFVBQXJELEVBQWdFLElBQWhFO0FBQ0E3RixPQUFDLENBQUMsK0JBQUQsQ0FBRCxDQUFtQ3NDLElBQW5DLENBQXdDLFVBQXhDO0FBQ0gsS0FKRCxNQUlPO0FBQ0h0QyxPQUFDLENBQUMsK0JBQUQsQ0FBRCxDQUFtQzZGLElBQW5DLENBQXdDLFVBQXhDLEVBQW1ELEtBQW5EO0FBQ0E3RixPQUFDLENBQUMsK0JBQUQsQ0FBRCxDQUFtQzJGLFVBQW5DLENBQThDLFVBQTlDO0FBQ0g7QUFDSjs7QUFDRGdJLGFBQVcsQ0FBQ3RCLG1CQUFELEVBQXNCLEtBQXRCLENBQVg7QUFDQUYsK0JBQTZCLEdBeGZWLENBMGZuQjs7QUFDQSxNQUFJbk0sQ0FBQyxDQUFDLHNCQUFELENBQUQsQ0FBMEJpRCxNQUExQixHQUFtQyxDQUF2QyxFQUEwQztBQUN0Q2pELEtBQUMsQ0FBQyxzQkFBRCxDQUFELENBQTBCNE4sS0FBMUIsR0FBa0N0RixPQUFsQyxDQUEwQyxPQUExQztBQUNIO0FBQ0osQyIsImZpbGUiOiJjbGllbnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCAkID0gcmVxdWlyZShcImpxdWVyeVwiKTtcclxud2luZG93LmZvcm1DaGFuZ2VkID0gZmFsc2U7XHJcbmZ1bmN0aW9uIHVuc2F2ZUNoYW5nZWQoZXZlbnQpIHtcclxuICAgIHZhciBhY3RpdmVFbGVtZW50ID0gbnVsbDtcclxuICAgIGlmIChuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoXCJDaHJvbWVcIikgIT09IC0xKSB7XHJcbiAgICAgICAgYWN0aXZlRWxlbWVudCA9ICBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICBhY3RpdmVFbGVtZW50ID0gIGV2ZW50Lm9yaWdpbmFsVGFyZ2V0LmFjdGl2ZUVsZW1lbnQ7XHJcbiAgICB9XHJcbiAgICBpZiAod2luZG93LmZvcm1DaGFuZ2VkICYmICghYWN0aXZlRWxlbWVudCB8fCAoYWN0aXZlRWxlbWVudC5pZCAhPSAnYnRuLXNhdmUtY2xpZW50JyAmJiBhY3RpdmVFbGVtZW50LmlkICE9ICdzYXZlLXByZWYtcGxhbmlmaWNhdGlvbicgJiYgISQoYWN0aXZlRWxlbWVudCkuaGFzQ2xhc3MoJ2J0bi1zdWNjZXNzJykpKSkge1xyXG4gICAgICAgIGlmICghd2luZG93LmNvbmZpcm0oXCJBdHRlbnRpb24sIHNpIHZvdXMgcXVpdHRlciBsYSBwYWdlLCB2b3MgbW9kaWZpY2F0aW9ucyBlbiBjb3VycyBuZSBzZXJvbnQgcGFzIHNhdXZlZ2FyZMOpZXNcIikpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy8gbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3NpZGViYXJtaW5pbScsIGZhbHNlKTtcclxuICAgICAgICAgICAgd2luZG93LmZvcm1DaGFuZ2VkID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy9vbiBzdXBwcmltZSBsZSBsb2NrIHN1ciBmZXJtZXR1cmUgZGUgbCdvbmdsZXRcclxuICAgIHZhciBpZGxvY2sgPSAkKCcjbG9jay1pZCcpLnZhbCgpO1xyXG4gICAgaWYgKGlkbG9jaykge1xyXG4gICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcclxuICAgICAgICB4aHIub3BlbihcIkRFTEVURVwiLCBcIi9sb2NrL1wiICsgaWRsb2NrLCBmYWxzZSk7IC8vIGZhbHNlID0gc3luY2hyb25lXHJcbiAgICAgICAgeGhyLnNlbmQoKTtcclxuICAgIH1cclxufVxyXG53aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignYmVmb3JldW5sb2FkJywgdW5zYXZlQ2hhbmdlZCk7XHJcbiQoJ2JvZHknKS5vbignY2hhbmdlJywnI2NoZWNrX21lbWVfYWRyZXNzZV9lcXVpcGVtZW50X2V4aXN0YW50JywgZnVuY3Rpb24oZSkge1xyXG4gICAgaWYoJCh0aGlzKS5pcygnOmNoZWNrZWQnKSkge1xyXG4gICAgICAgICQoJyNsaXN0X2VxdWlwZW1lbnRfZXhpc3RhbnQnKS5zaG93KCk7XHJcbiAgICAgICAgJCgnI2FkZF9lcXVpcGVtZW50X25ldycpLmhpZGUoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgJCgnI2xpc3RfZXF1aXBlbWVudF9leGlzdGFudCcpLmhpZGUoKTtcclxuICAgICAgICAkKCcjZXF1aXBlbWVudF9leGlzdGFudF9zZWxlY3QnKS52YWwoJycpO1xyXG4gICAgICAgICQoJyNhZGRfZXF1aXBlbWVudF9uZXcnKS5zaG93KCk7XHJcbiAgICB9XHJcbn0pXHJcbiQoJ2JvZHknKS5vbignY2xpY2snLCAnI2FkZF9hZ2VudF9xdWFsaWZpY2F0aW9uJywgZnVuY3Rpb24gKGUpIHtcclxuICAgIHZhciBkYXRhZ3JpZEFnZW50UXVhbGlmaWNhdGlvbiA9ICQoJyNhZ2VudC1ncmlkLXF1YWxpZmljYXRpb24nKS5keERhdGFHcmlkKCdpbnN0YW5jZScpO1xyXG4gICAgZGF0YWdyaWRBZ2VudFF1YWxpZmljYXRpb24uYWRkUm93KCk7XHJcbn0pO1xyXG5cclxuJCgnYm9keScpLm9uKCdjaGFuZ2UnLCAnI3R5cGVfY2xpZW50JywgZnVuY3Rpb24oZSkge1xyXG4gICAgaWYgKCQodGhpcykudmFsKCkgPT0gXCIyXCIpIHtcclxuICAgICAgICAkKCcjY2F0ZWdvcmllX3BybycpLnBhcmVudCgpLnJlbW92ZUNsYXNzKCdoaWRlJyk7XHJcbiAgICAgICAgJCgnI2NsaWVudF9lbnRyZXByaXNlJykucGFyZW50KCkucmVtb3ZlQ2xhc3MoJ2hpZGUnKTtcclxuICAgICAgICAkKCcjZXF1aXBlbWVudF90dmEnKS52YWwoJzQnKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgICQoJyNjYXRlZ29yaWVfcHJvJykucGFyZW50KCkuYWRkQ2xhc3MoJ2hpZGUnKTtcclxuICAgICAgICAkKCcjY2xpZW50X2VudHJlcHJpc2UnKS5wYXJlbnQoKS5hZGRDbGFzcygnaGlkZScpO1xyXG4gICAgICAgICQoJyNlcXVpcGVtZW50X3R2YScpLnZhbCgnNScpO1xyXG4gICAgfVxyXG59KTtcclxuXHJcbiQoJ2JvZHknKS5vbignY2hhbmdlJywgJy5lcXVpcGVtZW50LXpvbmUnLCBmdW5jdGlvbihlKSB7XHJcbiAgICBpZiAoJCh0aGlzKS52YWwoKSA9PSA2KSB7XHJcbiAgICAgICAgJCgkKHRoaXMpLmRhdGEoJ3RhcmdldCcpKS5jc3MoJ3Zpc2liaWxpdHknLCAnaW5oZXJpdCcpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICAkKCQodGhpcykuZGF0YSgndGFyZ2V0JykpLmNzcygndmlzaWJpbGl0eScsICdoaWRkZW4nKTtcclxuICAgIH1cclxufSk7XHJcblxyXG4kKCdib2R5Jykub24oJ2NsaWNrJywgJy5hZGRfY29tcGxlbWVudF9hZHJlc3NlJywgZnVuY3Rpb24gKGUpIHtcclxuICAgIHZhciB0YXJnZXRHcmlkID0gJCgkKHRoaXMpLmRhdGEoJ3RhcmdldC1ncmlkJykpLmR4RGF0YUdyaWQoJ2luc3RhbmNlJyk7XHJcbiAgICB0YXJnZXRHcmlkLmFkZFJvdygpO1xyXG59KTtcclxuXHJcbiQoJ2JvZHknKS5vbignY2hhbmdlJyxcclxuICAgICcuZm9ybS1pbnB1dC1jaGFuZ2UnXHJcbiAgICAsIGZ1bmN0aW9uKGUpIHtcclxuICAgICAgICB2YXIgZm9ybSA9ICQodGhpcykuYXR0cignZm9ybScpO1xyXG4gICAgICAgIHZhciBpZF9lcXVpcGVtZW50ID0gJCgnIycgKyBmb3JtKS5kYXRhKCdpZGVxdWlwZW1lbnQnKTtcclxuICAgICAgICAkKCcjc2ltdWxhdGV1cl9kYXRhX2NoYW5nZS0nICsgaWRfZXF1aXBlbWVudCkudmFsKCQoZS50YXJnZXQpLmF0dHIoJ25hbWUnKSk7XHJcbiAgICAgICAgdmFyIGh0bWxfZ3JpZCA9XHJcbiAgICAgICAgJCgnIycgKyBmb3JtKS5zdWJtaXQoKTtcclxuICAgIH0pO1xyXG5cclxuLy8gJCgnYm9keScpLm9uKCdjbGljaycsICcudG9nZ2xlLXNpZGViYXItY2xpZW50JywgZnVuY3Rpb24oZSkge1xyXG4vLyAgICAgaWYgKCQoJyNzaWRlYmFyLWNsaWVudCcpLmhhc0NsYXNzKCdtaW5pbScpKSB7XHJcbi8vICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3NpZGViYXJtaW5pbScsIGZhbHNlKTtcclxuLy8gICAgICAgICAkKHRoaXMpLnJlbW92ZUNsYXNzKCdmYS1jaGV2cm9uLXJpZ2h0JykuYWRkQ2xhc3MoJ2ZhLWNoZXZyb24tbGVmdCcpO1xyXG4vLyAgICAgICAgICQoJyNzaWRlYmFyLWNsaWVudCcpLnJlbW92ZUNsYXNzKCdtaW5pbSAnKTtcclxuLy8gICAgICAgICAkKCcuc2lkZWJhci1jbGllbnQtYm90dG9tJykuYWRkQ2xhc3MoJ21pbmltJyk7XHJcbi8vICAgICAgICAgJCgnLmJsb2NfcGljdG8nKS5yZW1vdmVDbGFzcygnaGlkZScpLmFkZENsYXNzKCdoaWRlJyk7XHJcbi8vICAgICAgICAgJCgnI2JvZHktY2xpZW50JykuYWRkQ2xhc3MoJ21pbmltICcpO1xyXG4vLyAgICAgICAgICQoJy5ibG9jX2ZpY2hlXzMnKS5yZW1vdmVDbGFzcygnYmxvY19maWNoZV8zJykuYWRkQ2xhc3MoJ2Jsb2NfZmljaGVfMicpO1xyXG4vLyAgICAgICAgICQoJy5ibG9jX2ZpY2hlX3RlY2huaXF1ZScpLnJlbW92ZUNsYXNzKCdibG9jX2ZpY2hlX2Z1bGwnKS5hZGRDbGFzcygnYmxvY19maWNoZV8yJyk7XHJcbi8vICAgICAgICAgJCgnLnByZWZlcmVuY2VzX3BsYW5pZmljYXRpb24nKS5yZW1vdmVDbGFzcygnbWluaW0nKTtcclxuLy8gICAgIH0gZWxzZSB7XHJcbi8vICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3NpZGViYXJtaW5pbScsIHRydWUpO1xyXG4vLyAgICAgICAgICQodGhpcykucmVtb3ZlQ2xhc3MoJ2ZhLWNoZXZyb24tbGVmdCcpLmFkZENsYXNzKCdmYS1jaGV2cm9uLXJpZ2h0Jyk7XHJcbi8vICAgICAgICAgJCgnI3NpZGViYXItY2xpZW50JykuYWRkQ2xhc3MoJ21pbmltICcpO1xyXG4vLyAgICAgICAgICQoJyNib2R5LWNsaWVudCcpLnJlbW92ZUNsYXNzKCdtaW5pbSAnKTtcclxuLy8gICAgICAgICAkKCcuYmxvY19waWN0bycpLnJlbW92ZUNsYXNzKCdoaWRlJyk7XHJcbi8vICAgICAgICAgJCgnLnNpZGViYXItY2xpZW50LWJvdHRvbScpLnJlbW92ZUNsYXNzKCdtaW5pbScpO1xyXG4vLyAgICAgICAgICQoJy5ibG9jX2ZpY2hlX3RlY2huaXF1ZScpLnJlbW92ZUNsYXNzKCdibG9jX2ZpY2hlXzInKS5hZGRDbGFzcygnYmxvY19maWNoZV9mdWxsJyk7XHJcbi8vICAgICAgICAgJCgnLmJsb2NfZmljaGVfMicpLnJlbW92ZUNsYXNzKCdibG9jX2ZpY2hlXzInKS5hZGRDbGFzcygnYmxvY19maWNoZV8zJyk7XHJcbi8vICAgICAgICAgJCgnLnByZWZlcmVuY2VzX3BsYW5pZmljYXRpb24nKS5yZW1vdmVDbGFzcygnbWluaW0nKS5hZGRDbGFzcygnbWluaW0nKTtcclxuLy8gICAgIH1cclxuLy8gfSk7XHJcblxyXG4kKCdib2R5Jykub24oXCJjaGFuZ2VkLmJzLnNlbGVjdFwiLFxyXG4gICAgZnVuY3Rpb24oZSwgY2xpY2tlZEluZGV4LCBuZXdWYWx1ZSwgb2xkVmFsdWUpIHtcclxuICAgICAgICB2YXIgdmFsdWUgPSBlLnRhcmdldC5vcHRpb25zW2NsaWNrZWRJbmRleF0udmFsdWU7XHJcbiAgICAgICAgdmFyIHRleHQgPSBlLnRhcmdldC5vcHRpb25zW2NsaWNrZWRJbmRleF0udGV4dDtcclxuICAgICAgICBpZiAoJCgnI3RyLScgKyB2YWx1ZSkubGVuZ3RoICE9IDAgfHwgb2xkVmFsdWUuaW5jbHVkZXModmFsdWUpKSB7XHJcbiAgICAgICAgICAgICQoJyN0ci0nICsgdmFsdWUpLnJlbW92ZSgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHZhciB0ciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7XHJcbiAgICAgICAgICAgICQodHIpLmF0dHIoJ2lkJywgJ3RyLScgKyB2YWx1ZSk7XHJcbiAgICAgICAgICAgIHRyLmlubmVySFRNTCA9ICc8dGQ+JysgdGV4dCArJzwvdGQ+PHRkPjwvdGQ+JztcclxuICAgICAgICAgICAgJCgnI3NpbXVsYXRldXItdGFibGUtb3B0aW9ucyB0Ym9keScpLmFwcGVuZCh0ci5vdXRlckhUTUwpO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuJCgnYm9keScpLm9uKCdjbGljaycsICcuY2hvaXgtYmxvY2snLCBmdW5jdGlvbihlKSB7XHJcbiAgICB2YXIgY3VycmVudF90YXJnZXQgPSAkKCcuY2hvaXgtYmxvY2suYmctdmVydCcpLmRhdGEoJ3RhcmdldCcpO1xyXG4gICAgdmFyIHRhcmdldCA9ICQodGhpcykuZGF0YSgndGFyZ2V0Jyk7XHJcbiAgICAkKCcuY2hvaXgtYmxvY2snKS5yZW1vdmVDbGFzcygnYmctdmVydCBib3JkZXItdmVydCcpLmFkZENsYXNzKCdib3JkZXItZ3JleS1tZWRpdW0nKTtcclxuICAgICQodGhpcykuYWRkQ2xhc3MoJ2JvcmRlci12ZXJ0JykuYWRkQ2xhc3MoJ2JnLXZlcnQnKTtcclxuXHJcbiAgICBpZiAoY3VycmVudF90YXJnZXQgIT0gbnVsbCAmJiBjdXJyZW50X3RhcmdldCAhPSB0YXJnZXQpIHtcclxuICAgICAgICAkKGN1cnJlbnRfdGFyZ2V0KS5oaWRlKCk7XHJcbiAgICB9XHJcbiAgICAkKCcjZm9ybV9hZGRfZXF1aXBlbWVudF90eXBlJykudmFsKHRhcmdldCk7XHJcbiAgICAkKHRhcmdldCkuc2hvdygpO1xyXG4gICAgJCgnI3N1Ym1pdC1hZGQtZXF1aXBlbWVudCcpLnNob3coKTtcclxufSk7XHJcblxyXG4kKCcjc3VibWl0LWFkZC1lcXVpcGVtZW50Jykub24oJ2NsaWNrJywgZnVuY3Rpb24oZSkge1xyXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgLy9zaSBvbiBlc3QgZW4gdHlwZSByZWNoZXJjaGUgZCfDqXF1aXBlbWVudCBldCBxdWUgbCfDqXF1aXBlbWVudCBlc3QgdG91am91cnMgYWN0aWYsIG9uIG1ldCB1biBtZXNzYWdlXHJcbiAgICBpZiAoJCgnI2Zvcm1fYWRkX2VxdWlwZW1lbnRfdHlwZScpLnZhbCgpID09ICcjY2hvaXgtcmVjaGVyY2hlLWVxdWlwZW1lbnQnKSB7XHJcbiAgICAgICAgdmFyICRzZWxlY3RlZCA9ICQoJ3NlbGVjdFtuYW1lPWVxdWlwZW1lbnRfc2VhcmNoX3ZhbHVlXSBvcHRpb246c2VsZWN0ZWQnKTtcclxuICAgICAgICBpZiAoJHNlbGVjdGVkLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgICAgICAgIGlmICgkc2VsZWN0ZWQuZGF0YSgnYWN0aWYnKSA9PSAxKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgbGluayA9ICc8YSBocmVmPVwiJysgJHNlbGVjdGVkLmRhdGEoJ2xpbmsnKSArJ1wiIHRhcmdldD1cIl9ibGFua1wiPmFsbGV6IHZvaXI8L2E+J1xyXG4gICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSBcIkF0dGVudGlvbiwgY2V0IMOpcXVpcGVtZW50IGVzdCB0b3Vqb3VycyBhY3RpZiBjaGV6IHVuIGF1dHJlIGNsaWVudCA6IFwiK2xpbmsrXCIuIDxicj5Wb3VsZXogdm91cyB0b3V0IGRlIG3Dqm1lIGFqb3V0ZXIgY2V0IMOpcXVpcGVtZW50IMOgIGNlIGNsaWVudCA/XCI7XHJcbiAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gIERldkV4cHJlc3MudWkuZGlhbG9nLmNvbmZpcm0obWVzc2FnZSwgXCJFcXVpcGVtZW50IGFjdGlmXCIpO1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0LmRvbmUoZnVuY3Rpb24oZGlhbG9nUmVzdWx0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRpYWxvZ1Jlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuZm9ybUNoYW5nZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAkKCcjZm9ybS1hZGQtZXF1aXBlbWVudCcpLnN1Ym1pdCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcblxyXG59KTtcclxuXHJcbiQoJ2JvZHknKS5vbignc3VibWl0JywgJyNmb3JtLWNoYW5nZS1zb3VzY3JpcHRldXInLCBmdW5jdGlvbihlKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgICAgKCgkKCcjbmV3X2NsaWVudF9zb3VzY3JpcHRldXInKS52YWwoKSAhPSB1bmRlZmluZWQgJiYgJCgnI25ld19jbGllbnRfc291c2NyaXB0ZXVyJykudmFsKCkgIT0gJycpKSB8fFxyXG4gICAgICAgICgkKCcjZm9ybS1jaGFuZ2Utc291c2NyaXB0ZXVyLXR5cGUnKS52YWwoKSA9PSAnbmV3JyAmJiAoJCgnI2NsaWVudF9ub20tbm91dmVhdV9zb3VzY3JpcHRldXInKS52YWwoKSAhPSAnJyB8fCAkKCcjY2xpZW50X2VudHJlcHJpc2Utbm91dmVhdV9zb3VzY3JpcHRldXInKS52YWwoKSAhPScnKSlcclxuICAgICAgICAmJiAkKCdpbnB1dFtuYW1lPVwiY2hhbmdlLWVxdWlwZW1lbnRzW11cIl06Y2hlY2tlZCcpLmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgICAgJCgnI2Nsb3NlLXBvcHVwLWNoYW5nZW1lbnQtc291c2NyaXB0ZXVyJykuY2xpY2soKTtcclxuICAgICAgICB3aW5kb3cuZm9ybUNoYW5nZWQgPSBmYWxzZTtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgJCgnI21lc3NhZ2VzLXBvcHVwLWNoYW5nZScpLnNob3coKTtcclxuICAgICAgICAkKCcjbWVzc2FnZXMtcG9wdXAtY2hhbmdlIC5hbGVydCcpLmh0bWwoJCgnI21lc3NhZ2UtdG8tZGlzcGxheScpLmh0bWwoKSk7XHJcbiAgICAgICAgJCgnI21lc3NhZ2VzLXBvcHVwLWNoYW5nZSAuYWxlcnQnKS5zaG93KCk7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gaWYgKCQoJyNuZXdfY2xpZW50X3NvdXNjcmlwdGV1cicpLnZhKVxyXG5cclxufSk7XHJcbiQoJ2JvZHknKS5vbignc3VibWl0JywgJy5zdWJtaXQtYWRkLXV0aWxpc2F0ZXVyJywgZnVuY3Rpb24oZSkge1xyXG4gICAgLy9vbiBjaGVjayBzZWxvbiBsZSB0eXBlIHNpXHJcbiAgICB2YXIgaWRlcXVpcGVtZW50ID0gJCh0aGlzKS5kYXRhKCdpZC1lcXVpcGVtZW50Jyk7XHJcbiAgICB2YXIgdHlwZSA9ICQoJyNmb3JtLWFkZC11dGlsaXNhdGV1ci10eXBlLScgKyBpZGVxdWlwZW1lbnQpLnZhbCgpO1xyXG4gICAgaWYgKHR5cGUgPT0gJ3JlY2hlcmNoZScpIHtcclxuICAgICAgICBpZiAoJCgnI25ld19jbGllbnRfdXRpbGlzYXRldXItJyArIGlkZXF1aXBlbWVudCkudmFsKCkgIT0gdW5kZWZpbmVkICYmICQoJyNuZXdfY2xpZW50X3V0aWxpc2F0ZXVyLScgKyBpZGVxdWlwZW1lbnQpLnZhbCgpICE9ICcnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICQoJyNtZXNzYWdlcy1wb3B1cC1jaGFuZ2UnKS5zaG93KCk7XHJcbiAgICAgICAgICAgICQoJyNtZXNzYWdlcy1wb3B1cC1jaGFuZ2UgLmFsZXJ0JykuaHRtbCgkKCcjbWVzc2FnZS10by1kaXNwbGF5LXJlY2hlcmNoZScraWRlcXVpcGVtZW50KS5odG1sKCkpO1xyXG4gICAgICAgICAgICAkKCcjbWVzc2FnZXMtcG9wdXAtY2hhbmdlIC5hbGVydCcpLnNob3coKTtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0eXBlID09ICduZXcnKSB7XHJcbiAgICAgICAgdmFyIHR5cGVfY2xpZW50ID0gJCgnI3R5cGVfY2xpZW50LScgK2lkZXF1aXBlbWVudCkudmFsKCk7XHJcbiAgICAgICAgaWYgKCh0eXBlX2NsaWVudCA9PSAxICYmICQoJyNjbGllbnRfbm9tLScgKyBpZGVxdWlwZW1lbnQpLnZhbCgpICE9IHVuZGVmaW5lZCAmJiAkKCcjY2xpZW50X25vbS0nICsgaWRlcXVpcGVtZW50KS52YWwoKSAhPSAnJylcclxuICAgICAgICAgICAgfHwgKHR5cGVfY2xpZW50ID09IDIgJiYgJCgnI2NsaWVudF9lbnRyZXByaXNlLScgKyBpZGVxdWlwZW1lbnQpLnZhbCgpICE9IHVuZGVmaW5lZCAmJiAkKCcjY2xpZW50X2VudHJlcHJpc2UtJyArIGlkZXF1aXBlbWVudCkudmFsKCkgIT0gJycpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICQoJyNtZXNzYWdlcy1wb3B1cC1hZGQtdXRpbGlzYXRldXItJyArIGlkZXF1aXBlbWVudCkuc2hvdygpO1xyXG4gICAgICAgICAgICAkKCcjbWVzc2FnZXMtcG9wdXAtYWRkLXV0aWxpc2F0ZXVyLScgKyBpZGVxdWlwZW1lbnQrJyAuYWxlcnQnKS5odG1sKCQoJyNtZXNzYWdlLXRvLWRpc3BsYXktbmV3JytpZGVxdWlwZW1lbnQpLmh0bWwoKSk7XHJcbiAgICAgICAgICAgICQoJyNtZXNzYWdlcy1wb3B1cC1hZGQtdXRpbGlzYXRldXItJyArIGlkZXF1aXBlbWVudCsnIC5hbGVydCcpLnNob3coKTtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxufSk7XHJcblxyXG4kKCdib2R5Jykub24oJ2NoYW5nZScsICcuY2hhbmdlX2VxdWlwZW1lbnQnLCBmdW5jdGlvbihlKSB7XHJcbiAgICB2YXIgZm9ybSA9ICQodGhpcykuZGF0YSgnZm9ybS1jaGFuZ2UnKTtcclxuICAgIHZhciBuYW1lID0gJCh0aGlzKS5hdHRyKCduYW1lJyk7XHJcbiAgICB2YXIgaWRlcXVpcGVtZW50ID0gJCh0aGlzKS5kYXRhKCdpZGVxdWlwZW1lbnQnKTtcclxuICAgICQoZm9ybSArICcgPiBpbnB1dFtuYW1lPXR5cGVfY2hhbmdlXScpLnZhbChuYW1lKTtcclxuICAgICQoZm9ybSArICcgPiBpbnB1dFtuYW1lPWRhdGFfdmFsdWVdJykudmFsKCQodGhpcykudmFsKCkpO1xyXG4gICAgJChmb3JtKS5kYXRhKCd0YXJnZXQtaHRtbCcsICQodGhpcykuZGF0YSgndGFyZ2V0JykpO1xyXG4gICAgJChmb3JtKS5zdWJtaXQoKTtcclxuICAgIC8vb24gQWpvdXRlIHVuIHRydWMgcG91ciBnw6lyZXIgbCdhZmZpY2hhZ2UgZHUgbnVtw6lybyBkZSBzZXJpZSBjb21wbMOpbWVudGFpcmUgc2kgYydlc3QgcGFjIG91IHBhc1xyXG4gICAgaWYgKCQodGhpcykudmFsKCkgPT0gXCIxMFwiKSB7XHJcbiAgICAgICAgJCgnI251bWVyb19zZXJpZV9zZWNvbmRhaXJlLScgKyBpZGVxdWlwZW1lbnQpLnJlbW92ZUNsYXNzKCdoaWRlJyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgICQoJyNudW1lcm9fc2VyaWVfc2Vjb25kYWlyZS0nICsgaWRlcXVpcGVtZW50KS5hZGRDbGFzcygnaGlkZScpO1xyXG4gICAgfVxyXG59KTtcclxuXHJcbiQoJ2JvZHknKS5vbignY2xpY2snLCAnI2J0bi1zYXZlLWNsaWVudCcsIGZ1bmN0aW9uKGUpIHtcclxuICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgIHZhciBmb3JtID0gJCh0aGlzKS5hdHRyKCdmb3JtJyk7XHJcbiAgICB2YXIgcmVhbEVycm9yID0gZmFsc2U7XHJcblxyXG4gICAgdmFyIGlkRXF1aXBlbWVudCA9ICAkKCdpbnB1dFtuYW1lPVwiaWRfZXF1aXBlbWVudF91cGRhdGVcIl0nKS52YWwoKTtcclxuXHJcbiAgICBpZiAoJCgnIycgKyBmb3JtKVswXS5jaGVja1ZhbGlkaXR5KCkgPT0gZmFsc2UpIHtcclxuICAgICAgICAkKCcjJyArIGZvcm0pWzBdLnJlcG9ydFZhbGlkaXR5KCk7XHJcbiAgICAgICAgJCgnIycrZm9ybSlbMF0uZm9yRWFjaChmdW5jdGlvbihlKSB7XHJcbiAgICAgICAgICAgIGlmIChlLnZhbGlkaXR5LnZhbGlkID09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoJChlKS5kYXRhKCdpZGVxdWlwZW1lbnQnKSA9PSBpZEVxdWlwZW1lbnQgfHwgKCQoZSkuZGF0YSgnaWRlcXVpcGVtZW50JykgPT0gdW5kZWZpbmVkICYmICQoZSkuaXMoJzp2aXNpYmxlJykpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVhbEVycm9yID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIGlmIChyZWFsRXJyb3IpZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGVsc2UgICQoJyMnICsgZm9ybSkuc3VibWl0KCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgICQoJyMnICsgZm9ybSkuc3VibWl0KCk7XHJcbiAgICB9XHJcbn0pO1xyXG5cclxuJCgnYm9keScpLm9uKCdzdWJtaXQnLCAnLmZvcm0tY2FzLXBhcnRpY3VsaWVyJywgZnVuY3Rpb24oZSkge1xyXG4gICAgZXZhbCgkKHRoaXMpLmRhdGEoJ2pzJykpO1xyXG59KTtcclxuXHJcbiQoJ2JvZHknKS5vbignY2xpY2snLCAnI2J0bi1tb2RpZi1jbGllbnQtZXF1aXBlbWVudCcsIGZ1bmN0aW9uKGUpIHtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdzY3JvbGxDbGllbnQnLCB3aW5kb3cuc2Nyb2xsWSk7XHJcbn0pO1xyXG4kKCdib2R5Jykub24oJ2NsaWNrJywgJy50ZWxlcGhvbmUtZnInLCBmdW5jdGlvbihlKSB7XHJcbiAgICAvL3NpIG9uIHJlcGFzc2UgZW4gbnVtw6lybyBmclxyXG4gICAgdmFyIHRhcmdldF9tYXNrID0gJ2lucHV0W25hbWU9XCInKyAkKHRoaXMpLmRhdGEoJ3RhcmdldC1tYXNrJykgKydcIl0nO1xyXG4gICAgdmFyIHRhcmdldF92YWx1ZSA9ICdpbnB1dFtuYW1lPVwiJysgJCh0aGlzKS5kYXRhKCd0YXJnZXQtaW5wdXQtZnInKSArJ1wiXSc7XHJcbiAgICBpZiAoJCh0aGlzKS5oYXNDbGFzcygnb3BhY2l0eS0yNScpKSB7XHJcbiAgICAgICAgJCh0aGlzKS5yZW1vdmVDbGFzcygnb3BhY2l0eS0yNScpO1xyXG4gICAgICAgICQodGFyZ2V0X21hc2spLm1hc2soJzAwLjAwLjAwLjAwLjAwJyx7dHJhbnNsYXRpb246ICB7JzAnOiB7cGF0dGVybjogL1swLTldLywgcmVjdXJzaXZlOiBmYWxzZX19fSk7XHJcbiAgICAgICAgJCh0YXJnZXRfbWFzaykuYXR0cignbWlubGVuZ3RoJywgJzE0JykuYXR0cigncGF0dGVybicsICdbMC05XXsyfS5bMC05XXsyfS5bMC05XXsyfS5bMC05XXsyfS5bMC05XXsyfScpO1xyXG4gICAgICAgICQodGFyZ2V0X3ZhbHVlKS52YWwoMSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgICQodGFyZ2V0X3ZhbHVlKS52YWwoMCk7XHJcbiAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygnb3BhY2l0eS0yNScpO1xyXG4gICAgICAgICQodGFyZ2V0X21hc2spLm1hc2soJzk5OTk5OTk5OTknKTtcclxuICAgICAgICAkKHRhcmdldF9tYXNrKS5yZW1vdmVBdHRyKCdtaW5sZW5ndGgnKS5yZW1vdmVBdHRyKCdwYXR0ZXJuJyk7XHJcbiAgICB9XHJcbn0pXHJcblxyXG4kKCdib2R5Jykub24oJ2NsaWNrJywgJyNidG4tb3Blbi1jaGFuZ2Utc291c2NyaXB0ZXVyJywgZnVuY3Rpb24oZSkge1xyXG4gICQoJ2lucHV0W25hbWU9XCJjaGFuZ2UtZXF1aXBlbWVudHNbXVwiXTpjaGVja2VkJykuZWFjaChmdW5jdGlvbihlKSB7XHJcbiAgICAgICQodGhpcykucHJvcCgnY2hlY2tlZCcsdHJ1ZSk7XHJcbiAgICAgICQodGhpcykuYXR0cignY2hlY2tlZCcsICcnKTtcclxuICAgICAgJCgkKHRoaXMpLmRhdGEoJ2NoYW5nZS10YXJnZXQnKSkuc2hvdygpO1xyXG4gIH0pO1xyXG4gICQoJ2lucHV0W25hbWU9XCJjaGFuZ2UtZXF1aXBlbWVudHNbXVwiXTpub3QoOmNoZWNrZWQpJykuZWFjaChmdW5jdGlvbihlKSB7XHJcbiAgICAgICAgJCh0aGlzKS5wcm9wKCdjaGVja2VkJyxmYWxzZSk7XHJcbiAgICAgICAgJCh0aGlzKS5yZW1vdmVBdHRyKCdjaGVja2VkJyk7XHJcbiAgICAgICAgJCgkKHRoaXMpLmRhdGEoJ2NoYW5nZS10YXJnZXQnKSkuaGlkZSgpO1xyXG4gIH0pO1xyXG59KTtcclxuXHJcblxyXG5cclxuLy9nZXN0aW9uIGRlcyByw6hnbGVzIGRlIHByw6lmZXJlbmNlcyBkZSBwbGFuaWZpY2F0aW9uXHJcbi8vYSBwYXJ0aXIgZGUgZG9pdCBldHJlIHBsdXMgcGV0aXQgcXVlIGF2YW50IGxlXHJcbi8vZW50cmUgXCJcIiBldCBcIlwiIGRvaXQgw6p0cmUgY29tcHJpcyBlbnRyZSBhIHBhcnRpciBkdSBldCBhdmFudCBsZVxyXG5cclxuJCgnYm9keScpLm9uKCdjaGFuZ2UnLCAnLnByZWZfYV9wYXJ0aXJfZHUnLCBmdW5jdGlvbihlKSB7XHJcbiAgICB2YXIgbmFtZV9pbnB1dF9hdmFudF9sZSA9ICdpbnB1dFtuYW1lPWRhdGVfYXZhbnRfbGVdJztcclxuICAgIHZhciBuYW1lX2lucHV0X2VudHJlX2RlYnV0ID0gJ2lucHV0W25hbWU9ZGF0ZV9lbnRyZV9kZWJ1dF0nO1xyXG4gICAgdmFyIG5hbWVfaW5wdXRfZW50cmVfZmluID0gJ2lucHV0W25hbWU9ZGF0ZV9lbnRyZV9maW5dJztcclxuICAgIHZhciBuYW1lX2FfcGFydGlyX2R1ID0gJ2lucHV0W25hbWU9ZGF0ZV9hX3BhcnRpcl9kdV0nO1xyXG4gICAgaWYoISQodGhpcykudmFsKCkpIHtcclxuICAgICAgICBpZiAoJChuYW1lX2lucHV0X2VudHJlX2RlYnV0KS52YWwoKSAhPSAnJykgJChuYW1lX2FfcGFydGlyX2R1KS5kYXRlcGlja2VyKCdvcHRpb24nLCAnbWluRGF0ZScsICQobmFtZV9pbnB1dF9lbnRyZV9kZWJ1dCkuZGF0ZXBpY2tlcignZ2V0RGF0ZScpKTtcclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgJChuYW1lX2lucHV0X2F2YW50X2xlKS5kYXRlcGlja2VyKCdvcHRpb24nLCAnbWluRGF0ZScsIG51bGwpO1xyXG4gICAgICAgICAgICAkKG5hbWVfaW5wdXRfZW50cmVfZGVidXQpLmRhdGVwaWNrZXIoXCJvcHRpb25cIiwgXCJtaW5EYXRlXCIsIG51bGwpO1xyXG4gICAgICAgICAgICAkKG5hbWVfaW5wdXRfZW50cmVfZmluKS5kYXRlcGlja2VyKFwib3B0aW9uXCIsIFwibWluRGF0ZVwiLCBudWxsKTtcclxuICAgICAgICAgICAgJChuYW1lX2FfcGFydGlyX2R1KS5kYXRlcGlja2VyKCdvcHRpb24nLCAnbWluRGF0ZScsIG51bGwpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHZhciB0aGlzRGF0ZSA9ICQodGhpcykuZGF0ZXBpY2tlcignZ2V0RGF0ZScpO1xyXG4gICAgICAgIGlmICghJChuYW1lX2lucHV0X2F2YW50X2xlKS52YWwoKSkgJChuYW1lX2lucHV0X2F2YW50X2xlKS5kYXRlcGlja2VyKCdvcHRpb24nLCAnbWluRGF0ZScsIHRoaXNEYXRlKTtcclxuICAgICAgICBpZiAoISQobmFtZV9pbnB1dF9lbnRyZV9kZWJ1dCkudmFsKCkpICQobmFtZV9pbnB1dF9lbnRyZV9kZWJ1dCkuZGF0ZXBpY2tlcignb3B0aW9uJywgJ21pbkRhdGUnLCB0aGlzRGF0ZSk7XHJcbiAgICAgICAgaWYgKCEkKG5hbWVfaW5wdXRfZW50cmVfZmluKS52YWwoKSkgJChuYW1lX2lucHV0X2VudHJlX2ZpbikuZGF0ZXBpY2tlcignb3B0aW9uJywgJ21pbkRhdGUnLCB0aGlzRGF0ZSk7XHJcbiAgICB9XHJcbn0pO1xyXG5cclxuJCgnYm9keScpLm9uKCdjaGFuZ2UnLCAnLnByZWZfYXZhbnRfbGUnLCBmdW5jdGlvbihlKSB7XHJcbiAgICB2YXIgbmFtZV9hX3BhcnRpcl9kdSA9ICdpbnB1dFtuYW1lPWRhdGVfYV9wYXJ0aXJfZHVdJztcclxuICAgIHZhciBuYW1lX2lucHV0X2VudHJlX2RlYnV0ID0gJ2lucHV0W25hbWU9ZGF0ZV9lbnRyZV9kZWJ1dF0nO1xyXG4gICAgdmFyIG5hbWVfaW5wdXRfZW50cmVfZmluID0gJ2lucHV0W25hbWU9ZGF0ZV9lbnRyZV9maW5dJztcclxuICAgIHZhciBuYW1lX2lucHV0X2F2YW50X2xlID0gJ2lucHV0W25hbWU9ZGF0ZV9hdmFudF9sZV0nO1xyXG4gICAgaWYoISQodGhpcykudmFsKCkpIHtcclxuICAgICAgICBpZiAoJChuYW1lX2lucHV0X2VudHJlX2ZpbikudmFsKCkgIT0gJycpICQobmFtZV9hX3BhcnRpcl9kdSkuZGF0ZXBpY2tlcignb3B0aW9uJywgJ21heERhdGUnLCAkKG5hbWVfaW5wdXRfZW50cmVfZmluKS5kYXRlcGlja2VyKCdnZXREYXRlJykpO1xyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAkKG5hbWVfYV9wYXJ0aXJfZHUpLmRhdGVwaWNrZXIoJ29wdGlvbicsICdtYXhEYXRlJywgbnVsbCk7XHJcbiAgICAgICAgICAgICQobmFtZV9pbnB1dF9lbnRyZV9kZWJ1dCkuZGF0ZXBpY2tlcihcIm9wdGlvblwiLCBcIm1heERhdGVcIiwgbnVsbCk7XHJcbiAgICAgICAgICAgICQobmFtZV9pbnB1dF9lbnRyZV9maW4pLmRhdGVwaWNrZXIoXCJvcHRpb25cIiwgXCJtYXhEYXRlXCIsIG51bGwpO1xyXG4gICAgICAgICAgICAkKG5hbWVfaW5wdXRfYXZhbnRfbGUpLmRhdGVwaWNrZXIoJ29wdGlvbicsICdtYXhEYXRlJyxudWxsKTtcclxuICAgICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIHZhciB0aGlzRGF0ZSA9ICQodGhpcykuZGF0ZXBpY2tlcignZ2V0RGF0ZScpO1xyXG4gICAgICAgIHRoaXNEYXRlLnNldERhdGUodGhpc0RhdGUuZ2V0RGF0ZSgpIC0gMSk7XHJcblxyXG4gICAgICAgICQobmFtZV9hX3BhcnRpcl9kdSkuZGF0ZXBpY2tlcihcIm9wdGlvblwiLCBcIm1heERhdGVcIiwgdGhpc0RhdGUpO1xyXG4gICAgICAgIGlmICghJChuYW1lX2lucHV0X2VudHJlX2RlYnV0KS52YWwoKSkgJChuYW1lX2lucHV0X2VudHJlX2RlYnV0KS5kYXRlcGlja2VyKFwib3B0aW9uXCIsIFwibWF4RGF0ZVwiLCB0aGlzRGF0ZSk7XHJcbiAgICAgICAgaWYgKCEkKG5hbWVfaW5wdXRfZW50cmVfZmluKS52YWwoKSkgJChuYW1lX2lucHV0X2VudHJlX2ZpbikuZGF0ZXBpY2tlcihcIm9wdGlvblwiLCBcIm1heERhdGVcIiwgdGhpc0RhdGUpO1xyXG4gICAgICAgIGlmKHRoaXNEYXRlIDwgJChuYW1lX2FfcGFydGlyX2R1KS5kYXRlcGlja2VyKCdnZXREYXRlJykpICQobmFtZV9hX3BhcnRpcl9kdSkudmFsKCcnKTtcclxuICAgIH1cclxufSk7XHJcbiQoJ2JvZHknKS5vbignY2hhbmdlJywgJy5wcmVmX2VudHJlX2RlYnV0JywgZnVuY3Rpb24oZSkge1xyXG4gICAgdmFyIG5hbWVfYV9wYXJ0aXJfZHUgPSAnaW5wdXRbbmFtZT1kYXRlX2FfcGFydGlyX2R1XSc7XHJcbiAgICB2YXIgbmFtZV9pbnB1dF9hdmFudF9sZSA9ICdpbnB1dFtuYW1lPWRhdGVfYXZhbnRfbGVdJztcclxuICAgIHZhciBuYW1lX2lucHV0X2VudHJlX2ZpbiA9ICdpbnB1dFtuYW1lPWRhdGVfZW50cmVfZmluXSc7XHJcbiAgICB2YXIgbmFtZV9pbnB1dF9lbnRyZV9kZWJ1dCA9ICdpbnB1dFtuYW1lPWRhdGVfZW50cmVfZGVidXRdJztcclxuICAgIGlmKCEkKHRoaXMpLnZhbCgpKSB7XHJcbiAgICAgICAgaWYgKCQobmFtZV9hX3BhcnRpcl9kdSkudmFsKCkgIT0gJycpICQobmFtZV9pbnB1dF9lbnRyZV9maW4pLmRhdGVwaWNrZXIoJ29wdGlvbicsICdtaW5EYXRlJywgJChuYW1lX2FfcGFydGlyX2R1KS5kYXRlcGlja2VyKCdnZXREYXRlJykpO1xyXG4gICAgICAgIGVsc2UgIHtcclxuICAgICAgICAgICAgJChuYW1lX2lucHV0X2VudHJlX2ZpbikuZGF0ZXBpY2tlcignb3B0aW9uJywgJ21pbkRhdGUnLCBudWxsKTtcclxuICAgICAgICAgICAgJChuYW1lX2FfcGFydGlyX2R1KS5kYXRlcGlja2VyKCdvcHRpb24nLCAnbWluRGF0ZScsIG51bGwpO1xyXG4gICAgICAgICAgICAkKG5hbWVfaW5wdXRfYXZhbnRfbGUpLmRhdGVwaWNrZXIoJ29wdGlvbicsICdtaW5EYXRlJyxudWxsKTtcclxuICAgICAgICAgICAgJChuYW1lX2lucHV0X2VudHJlX2RlYnV0KS5kYXRlcGlja2VyKCdvcHRpb24nLCAnbWluRGF0ZScsbnVsbCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICB2YXIgdGhpc0RhdGUgPSAkKHRoaXMpLmRhdGVwaWNrZXIoJ2dldERhdGUnKTtcclxuICAgICAgICAkKG5hbWVfaW5wdXRfZW50cmVfZmluKS5kYXRlcGlja2VyKCdvcHRpb24nLCAnbWluRGF0ZScsIHRoaXNEYXRlKTtcclxuICAgICAgICBpZih0aGlzRGF0ZSA+ICQobmFtZV9pbnB1dF9lbnRyZV9maW4pLmRhdGVwaWNrZXIoJ2dldERhdGUnKSkgJChuYW1lX2lucHV0X2VudHJlX2ZpbikudmFsKCcnKTtcclxuICAgICAgICAkKG5hbWVfYV9wYXJ0aXJfZHUpLmRhdGVwaWNrZXIoJ29wdGlvbicsICdtaW5EYXRlJywgdGhpc0RhdGUpO1xyXG4gICAgICAgICQobmFtZV9pbnB1dF9hdmFudF9sZSkuZGF0ZXBpY2tlcignb3B0aW9uJywgJ21pbkRhdGUnLHRoaXNEYXRlKTtcclxuICAgIH1cclxufSk7XHJcbiQoJ2JvZHknKS5vbignY2hhbmdlJywgJy5wcmVmX2VudHJlX2ZpbicsIGZ1bmN0aW9uKGUpIHtcclxuICAgIHZhciBuYW1lX2FfcGFydGlyX2R1ID0gJ2lucHV0W25hbWU9ZGF0ZV9hX3BhcnRpcl9kdV0nO1xyXG4gICAgdmFyIG5hbWVfaW5wdXRfYXZhbnRfbGUgPSAnaW5wdXRbbmFtZT1kYXRlX2F2YW50X2xlXSc7XHJcbiAgICB2YXIgbmFtZV9pbnB1dF9lbnRyZV9kZWJ1dCA9ICdpbnB1dFtuYW1lPWRhdGVfZW50cmVfZGVidXRdJztcclxuICAgIHZhciBuYW1lX2lucHV0X2VudHJlX2ZpbiA9ICdpbnB1dFtuYW1lPWRhdGVfZW50cmVfZmluXSc7XHJcblxyXG4gICAgaWYgKCEkKHRoaXMpLnZhbCgpKSB7XHJcbiAgICAgICAgaWYgKCQobmFtZV9pbnB1dF9hdmFudF9sZSkudmFsKCkgIT0gJycpICQobmFtZV9pbnB1dF9lbnRyZV9kZWJ1dCkuZGF0ZXBpY2tlcignb3B0aW9uJywgJ21heERhdGUnLCAkKG5hbWVfaW5wdXRfYXZhbnRfbGUpLmRhdGVwaWNrZXIoJ2dldERhdGUnKSk7XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICQobmFtZV9pbnB1dF9lbnRyZV9kZWJ1dCkuZGF0ZXBpY2tlcignb3B0aW9uJywgJ21heERhdGUnLG51bGwpO1xyXG4gICAgICAgICAgICAkKG5hbWVfYV9wYXJ0aXJfZHUpLmRhdGVwaWNrZXIoJ29wdGlvbicsICdtYXhEYXRlJywgbnVsbCk7XHJcbiAgICAgICAgICAgICQobmFtZV9pbnB1dF9hdmFudF9sZSkuZGF0ZXBpY2tlcignb3B0aW9uJywgJ21heERhdGUnLCBudWxsKTtcclxuICAgICAgICAgICAgJChuYW1lX2lucHV0X2VudHJlX2ZpbikuZGF0ZXBpY2tlcignb3B0aW9uJywgJ21heERhdGUnLG51bGwpO1xyXG4gICAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdmFyIHRoaXNEYXRlID0gJCh0aGlzKS5kYXRlcGlja2VyKCdnZXREYXRlJyk7XHJcbiAgICAgICAgJChuYW1lX2lucHV0X2VudHJlX2RlYnV0KS5kYXRlcGlja2VyKCdvcHRpb24nLCAnbWF4RGF0ZScsdGhpc0RhdGUpO1xyXG4gICAgICAgIGlmICgodGhpc0RhdGUpIDwgJChuYW1lX2lucHV0X2VudHJlX2RlYnV0KS5kYXRlcGlja2VyKCdnZXREYXRlJykpICQobmFtZV9pbnB1dF9lbnRyZV9kZWJ1dCkudmFsKCcnKTtcclxuICAgICAgICAkKG5hbWVfYV9wYXJ0aXJfZHUpLmRhdGVwaWNrZXIoJ29wdGlvbicsICdtYXhEYXRlJywgdGhpc0RhdGUpO1xyXG4gICAgICAgICQobmFtZV9pbnB1dF9hdmFudF9sZSkuZGF0ZXBpY2tlcignb3B0aW9uJywgJ21heERhdGUnLCB0aGlzRGF0ZSk7XHJcbiAgICB9XHJcbn0pO1xyXG5cclxuJCgnYm9keScpLm9uKCdjbGljaycsJy5waWN0by1ncm91cC1jb250cmF0JywgZnVuY3Rpb24oZSkge1xyXG4gICAgJC5hamF4KHtcclxuICAgICAgICBtZXRob2Q6IFwiR0VUXCIsXHJcbiAgICAgICAgdXJsOiAkKHRoaXMpLmRhdGEoJ3BhdGgnKSxcclxuICAgICAgICBkYXRhVHlwZTogXCJqc29uXCIsXHJcbiAgICAgICAgc3VjY2VzczogZnVuY3Rpb24oZGF0YSl7XHJcbiAgICAgICAgICAgZGF0YS5mb3JFYWNoKGZ1bmN0aW9uKGUpIHtcclxuICAgICAgICAgICAgICAgd2luZG93Lm9wZW4oZSk7XHJcbiAgICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICB9KVxyXG59KTtcclxuXHJcbiQoJ2JvZHknKS5vbignY2xpY2snLCAnLmludGVydmVudGlvbl9jbGllbnQnLCBmdW5jdGlvbigpIHtcclxuICAgIC8vIDEuIFJldGlyZXIgbGUgYmFja2dyb3VuZCBkZSB0b3VzXHJcbiAgICAkKCcuaW50ZXJ2ZW50aW9uX2NsaWVudCcpLmNzcygnYmFja2dyb3VuZCcsICcnKTtcclxuICAgIC8vIDIuIEFwcGxpcXVlciBsZSBiYWNrZ3JvdW5kIHN1ciBsJ8OpbMOpbWVudCBjbGlxdcOpXHJcbiAgICAkKHRoaXMpLmNzcygnYmFja2dyb3VuZCcsICcjRjJGMkYyJyk7XHJcblxyXG4gICAgLy8gMy4gUsOpY3Vww6lyZXIgbCdpZCBkZSBsJ2ludGVydmVudGlvblxyXG4gICAgdmFyIGlkID0gJCh0aGlzKS5kYXRhKCdpZCcpO1xyXG5cclxuICAgIC8vIDQuIENoYXJnZXIgbGUgdGVtcGxhdGUgdmlhIEFKQVhcclxuICAgICQuYWpheCh7XHJcbiAgICAgICAgdXJsOiAnL2VxdWlwZW1lbnQvaW50ZXJ2ZW50aW9uL3Jlc3VsdC8nICsgaWQsXHJcbiAgICAgICAgdHlwZTogJ0dFVCcsXHJcbiAgICAgICAgc3VjY2VzczogZnVuY3Rpb24oaHRtbCkge1xyXG4gICAgICAgICAgICAkKCcjcmVzdWx0X2ludGVydmVudGlvbl9jbGllbnQnKS5odG1sKGh0bWwpO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgICQuYWpheCh7XHJcbiAgICAgICAgdXJsOiAnL2VxdWlwZW1lbnQvaW50ZXJ2ZW50aW9uL2ZhY3R1cmF0aW9uLycgKyBpZCwgLy8gw6AgYWRhcHRlciBzZWxvbiB0YSByb3V0ZVxyXG4gICAgICAgIHR5cGU6ICdHRVQnLFxyXG4gICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKGh0bWwpIHtcclxuICAgICAgICAgICAgJCgnI3Jlc3VsdF9pbnRlcnZlbnRpb25fY2xpZW50X2ZhY3R1cmF0aW9uJykuaHRtbChodG1sKTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxufSk7XHJcblxyXG5cclxuZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVhZHkgdHVyYm86bG9hZCcsIGxvYWRDbGllbnQpO1xyXG4kKGRvY3VtZW50KS5vbigncmVhZHkgdHVyYm86bG9hZCcsIGxvYWRDbGllbnQpO1xyXG5mdW5jdGlvbiB0b2dnbGVEYXRlRm9ybWF0Rm9yTXVsdGlwbGVJbnB1dHMoZGF0ZUlucHV0SWRzLCBjaGVja2JveElkKSB7XHJcbiAgICBjb25zdCBmb3JtYXRDaGVja2JveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGNoZWNrYm94SWQpO1xyXG4gICAgY29uc3QgbmV3Rm9ybWF0ID0gJCgnIycgKyBjaGVja2JveElkKVswXS5jaGVja2VkID8gJ2RkIE1NJyA6ICdkZC9tbS95eSc7XHJcbiAgICBkYXRlSW5wdXRJZHMuZm9yRWFjaChmdW5jdGlvbiAoZGF0ZUlucHV0SWQpIHtcclxuICAgICAgICAkKCcjJyArIGRhdGVJbnB1dElkKS5kYXRlcGlja2VyKCdvcHRpb24nLCAnZGF0ZUZvcm1hdCcsIG5ld0Zvcm1hdCk7XHJcbiAgICB9KTtcclxuICAgIGZvcm1hdENoZWNrYm94LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBjb25zdCBuZXdGb3JtYXQgPSAkKCcjJyArIGNoZWNrYm94SWQpWzBdLmNoZWNrZWQgPyAnZGQgTU0nIDogJ2RkL21tL3l5JztcclxuICAgICAgICBkYXRlSW5wdXRJZHMuZm9yRWFjaChmdW5jdGlvbiAoZGF0ZUlucHV0SWQpIHtcclxuICAgICAgICAgICAgJCgnIycgKyBkYXRlSW5wdXRJZCkuZGF0ZXBpY2tlcignb3B0aW9uJywgJ2RhdGVGb3JtYXQnLCBuZXdGb3JtYXQpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbn1cclxuZnVuY3Rpb24gbG9hZENsaWVudChlKSB7XHJcbiAgICB3aW5kb3cuZm9ybUNoYW5nZWQgPSBmYWxzZTtcclxuXHJcbiAgICB2YXIgc2Nyb2xsVmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnc2Nyb2xsQ2xpZW50Jyk7XHJcbiAgICAvLyB2YXIgc2lkZWJhcm1pbmltID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3NpZGViYXJtaW5pbScpO1xyXG4gICAgaWYgKHNjcm9sbFZhbHVlID4gMCkge1xyXG4gICAgICAgIHNldFRpbWVvdXQoXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICAgICAgJCgnaHRtbCwgYm9keScpLmFuaW1hdGUoIHsgc2Nyb2xsVG9wOiBzY3JvbGxWYWx1ZSB9KTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgNzUwXHJcbiAgICAgICAgKTtcclxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnc2Nyb2xsQ2xpZW50JywgMCk7XHJcbiAgICB9XHJcblxyXG4gICAgJCgnLmlucHV0LWRhdGVwaWNrZXInKS5lYWNoKGZ1bmN0aW9uICgpIHtcclxuICAgICAgIHZhciBmb3JtYXQgPSAkKHRoaXMpLmRhdGEoJ2Zvcm1hdCcpO1xyXG4gICAgICAgdmFyIG1pbkRhdGUgPSAkKHRoaXMpLmRhdGEoJ21pbicpO1xyXG4gICAgICAgdmFyIG1heERhdGUgPSAkKHRoaXMpLmRhdGEoJ21heCcpO1xyXG4gICAgICAgICQodGhpcykuZGF0ZXBpY2tlcih7XHJcbiAgICAgICAgICAgIGZvcm1hdDogZm9ybWF0LFxyXG4gICAgICAgICAgICBsYW5ndWFnZSA6ICdmcicsXHJcbiAgICAgICAgICAgIHNob3dCdXR0b25QYW5lbDogdHJ1ZSxcclxuICAgICAgICAgICAgbWluRGF0ZTogbWluRGF0ZSxcclxuICAgICAgICAgICAgbWF4RGF0ZSA6IG1heERhdGUsXHJcbiAgICAgICAgICAgIGNsZWFyVGV4dDogXCJFZmZhY2VyXCIsXHJcbiAgICAgICAgICAgIGJlZm9yZVNob3c6IGZ1bmN0aW9uKGlucHV0LCBpbnN0KSB7XHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBidXR0b25QYW5lID0gJChpbnN0LmRwRGl2KS5maW5kKCcudWktZGF0ZXBpY2tlci1idXR0b25wYW5lJyk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8vIEFqb3V0ZXIgdW4gYm91dG9uIEVmZmFjZXJcclxuICAgICAgICAgICAgICAgICAgICAkKCc8YnV0dG9uPicsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogJ0VmZmFjZXInLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGlucHV0KS52YWwoJycpOyAvLyBWaWRlciBsJ2lucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGlucHV0KS5kYXRlcGlja2VyKCdzZXREYXRlJywgbnVsbCk7IC8vIFLDqWluaXRpYWxpc2VyIGxlIERhdGVwaWNrZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoaW5wdXQpLnRyaWdnZXIoJ2NoYW5nZScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSkuYXBwZW5kVG8oYnV0dG9uUGFuZSkuYWRkQ2xhc3MoJ3VpLWRhdGVwaWNrZXItY2xlYXIgdWktc3RhdGUtZGVmYXVsdCB1aS1wcmlvcml0eS1wcmltYXJ5IHVpLWNvcm5lci1hbGwnKTtcclxuICAgICAgICAgICAgICAgIH0sIDEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgfSk7XHJcblxyXG4gICAgdG9nZ2xlRGF0ZUZvcm1hdEZvck11bHRpcGxlSW5wdXRzKFsncGxhbmlmaWNhdGlvbl9lbnRyZV9kZWJ1dCcsICdwbGFuaWZpY2F0aW9uX2VudHJlX2ZpbiddLCAnaW5jbHVzaW9uX3JlY3VycmVudGUnKTtcclxuICAgIHRvZ2dsZURhdGVGb3JtYXRGb3JNdWx0aXBsZUlucHV0cyhbJ2RhdGVfYXByZXNfbGUnXSwgJ2FwcmVzX3JlY3VycmVudGUnKTtcclxuICAgIHRvZ2dsZURhdGVGb3JtYXRGb3JNdWx0aXBsZUlucHV0cyhbJ2RhdGVfYXZhbnRfbGUnXSwgJ2F2YW50X3JlY3VycmVudGUnKTtcclxuICAgIC8vIGlmIChzaWRlYmFybWluaW0gPT0gXCJ0cnVlXCIpIHtcclxuICAgIC8vICAgICAkKCcudG9nZ2xlLXNpZGViYXItY2xpZW50JykuY2xpY2soKTtcclxuICAgIC8vIH1cclxuICAgICQoJy5pbnB1dF90ZWw6bm90KC5ub3RfZnIpJykubWFzaygnMDAuMDAuMDAuMDAuMDAnLHt0cmFuc2xhdGlvbjogIHsnMCc6IHtwYXR0ZXJuOiAvWzAtOV0vLCByZWN1cnNpdmU6IGZhbHNlfX19KTtcclxuICAgICQoJy5pbnB1dF90ZWwubm90X2ZyJykubWFzaygnOTk5OTk5OTk5OScpO1xyXG5cclxuICAgICQoJy5pbnB1dF9udW1lcm9fc2VyaWUnKS5tYXNrKCdTU1NTIFNTU1NTUyBTU1NTJywge1xyXG4gICAgICAgIHRyYW5zbGF0aW9uOiB7XHJcbiAgICAgICAgICAgICdTJzogeyBwYXR0ZXJuOiAvW0EtWmEtejAtOV0vIH1cclxuICAgICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnYWN0aXZlVGFiJywgJycpO1xyXG4gICAgJCgnLmZvcm1fcmVzaWxpZXJfY29udHJhdCcpLmVhY2goZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICAkKHRoaXMpWzBdLnJlc2V0KCk7XHJcbiAgICB9KTtcclxuICAgIGlmICgkKCcjdHlwZV9jbGllbnQgb3B0aW9uOnNlbGVjdGVkJykudmFsKCkgPT0gXCIyXCIpIHtcclxuICAgICAgICAkKCcjY2F0ZWdvcmllX3BybycpLnBhcmVudCgpLnJlbW92ZUNsYXNzKCdoaWRlJyk7XHJcbiAgICAgICAgJCgnI2NsaWVudF9lbnRyZXByaXNlJykucGFyZW50KCkucmVtb3ZlQ2xhc3MoJ2hpZGUnKTtcclxuICAgICAgICAkKCcjZXF1aXBlbWVudF90dmEnKS52YWwoNCk7XHJcbiAgICB9XHJcblxyXG4gICAgJCgnaW5wdXQsc2VsZWN0JykuY2hhbmdlKGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIGlmICghJCh0aGlzKS5kYXRhKCdmb3JtY2hhbmdlZCcpKSB7XHJcbiAgICAgICAgICAgIHdpbmRvdy5mb3JtQ2hhbmdlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH0pO1xyXG5cclxuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0dXJibzpiZWZvcmUtdmlzaXRcIix1bnNhdmVDaGFuZ2VkKTtcclxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJ0dXJibzpiZWZvcmUtdmlzaXRcIiwgdW5zYXZlQ2hhbmdlZCk7XHJcblxyXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcInR1cmJvOmxpbmtcIiwoZXZlbnQpID0+IHtcclxuICAgICAgICB3aW5kb3cuZm9ybUNoYW5nZWQgPSBmYWxzZTtcclxuICAgIH0pO1xyXG5cclxuXHJcbiAgICBpZiAoJCgnc2VsZWN0W25hbWU9ZXF1aXBlbWVudF96b25lXzFdIG9wdGlvbjpzZWxlY3RlZCcpLnZhbCgpID09IDYpXHJcbiAgICAgICAgJCgkKCdzZWxlY3RbbmFtZT1lcXVpcGVtZW50X3pvbmVfMV0nKS5kYXRhKCd0YXJnZXQnKSkuY3NzKCd2aXNpYmlsaXR5JywgJ2luaGVyaXQnKTtcclxuICAgIGlmICgkKCdzZWxlY3RbbmFtZT1lcXVpcGVtZW50X3pvbmVfMl0gb3B0aW9uOnNlbGVjdGVkJykudmFsKCkgPT0gNilcclxuICAgICAgICAkKCQoJ3NlbGVjdFtuYW1lPWVxdWlwZW1lbnRfem9uZV8yXScpLmRhdGEoJ3RhcmdldCcpKS5jc3MoJ3Zpc2liaWxpdHknLCAnaW5oZXJpdCcpO1xyXG4gICAgaWYgKCQoJ3NlbGVjdFtuYW1lPWVxdWlwZW1lbnRfem9uZV8zXSBvcHRpb246c2VsZWN0ZWQnKS52YWwoKSA9PSA2KVxyXG4gICAgICAgICQoJCgnc2VsZWN0W25hbWU9ZXF1aXBlbWVudF96b25lXzNdJykuZGF0YSgndGFyZ2V0JykpLmNzcygndmlzaWJpbGl0eScsICdpbmhlcml0Jyk7XHJcblxyXG4gICAgJCgnaW5wdXRbbmFtZT1jbGllbnRfYWRyZXNzZV9hdXRvXScpLmF1dG9jb21wbGV0ZSh7XHJcbiAgICAgICAgc291cmNlOiBmdW5jdGlvbihyZXF1ZXN0LCByZXNwb25zZSkge1xyXG4gICAgICAgICAgICAkLmFqYXgoe1xyXG4gICAgICAgICAgICAgICAgbWV0aG9kOiBcIkdFVFwiLFxyXG4gICAgICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly9hcGktYWRyZXNzZS5kYXRhLmdvdXYuZnIvc2VhcmNoLz9xPScgKyAkKFwiaW5wdXRbbmFtZT0nY2xpZW50X2FkcmVzc2VfYXV0byddXCIpLnZhbCgpICsgJyZ0eXBlPWhvdXNlbnVtYmVyJmF1dG9jb21wbGV0ZT0xJmxpbWl0MTAmbGF0JmxvbicsXHJcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogXCJqc29uXCIsXHJcbiAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbihkYXRhKXtcclxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZSgkLm1hcChkYXRhLmZlYXR1cmVzLCBmdW5jdGlvbiAoaXRlbSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgYWRyZXNzZXMgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWNpIG9uIGVzdCBvYmxpZ8OpIGQnYWpvdXRlciBsZXMgQ1AgZGFucyB1biBhcnJheSBwb3VyIG5lIHBhcyBhdm9pciBwbHVzaWV1cnMgZm9pcyBsZSBtw6ptZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJC5pbkFycmF5KGl0ZW0ucHJvcGVydGllcy5sYWJlbCwgYWRyZXNzZXMpID09IC0xICYmIGl0ZW0ucHJvcGVydGllcy5ob3VzZW51bWJlciAmJiBpdGVtLnByb3BlcnRpZXMucG9zdGNvZGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkcmVzc2VzLnB1c2goaXRlbS5wcm9wZXJ0aWVzLmxhYmVsKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGxhYmVsOiBpdGVtLnByb3BlcnRpZXMubGFiZWwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2l0eTogaXRlbS5wcm9wZXJ0aWVzLmNpdHksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zdGNvZGU6IGl0ZW0ucHJvcGVydGllcy5wb3N0Y29kZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBpdGVtLnByb3BlcnRpZXMubmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb29yZGluYXRlczogaXRlbS5nZW9tZXRyeS5jb29yZGluYXRlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9LFxyXG4gICAgICAgIC8vIE9uIHJlbXBsaXQgYXVzc2kgbGEgdmlsbGVcclxuICAgICAgICBzZWxlY3Q6IGZ1bmN0aW9uKGV2ZW50LCB1aSkge1xyXG4gICAgICAgICAgICB2YXIgaWRfc2l0ZSA9ICQodGhpcykuZGF0YSgnaWRzaXRlJyk7XHJcbiAgICAgICAgICAgIHZhciBlbGVtZW50ID0gJCh0aGlzKTtcclxuICAgICAgICAgICAgJChcImlucHV0W25hbWU9J3NvdXNjcmlwdGV1cl9jb2RlX3Bvc3RhbCddXCIpLnZhbCh1aS5pdGVtLnBvc3Rjb2RlKTtcclxuICAgICAgICAgICAgJChcImlucHV0W25hbWU9J3NvdXNjcmlwdGV1cl92aWxsZSddXCIpLnZhbCh1aS5pdGVtLmNpdHkpO1xyXG4gICAgICAgICAgICAkKFwiaW5wdXRbbmFtZT0nc291c2NyaXB0ZXVyX2FkcmVzc2UnXVwiKS52YWwodWkuaXRlbS5uYW1lKTtcclxuICAgICAgICAgICAgJChcImlucHV0W25hbWU9J3NvdXNjcmlwdGV1cl9jb29yZGluYXRlcyddXCIpLnZhbCh1aS5pdGVtLmNvb3JkaW5hdGVzKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChpZF9zaXRlICE9ICcnKSB7XHJcbiAgICAgICAgICAgICAgICAkLmFqYXgoe1xyXG4gICAgICAgICAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAnL3NlY3RldXIvY29tcGFyZS9zZWN0ZXVyX3NpdGUvJytpZF9zaXRlKycnLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiBcImpzb25cIixcclxuICAgICAgICAgICAgICAgICAgICBkYXRhOiB7XCJjb29yZGluYXRlc1wiOiB1aS5pdGVtLmNvb3JkaW5hdGVzfSxcclxuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbihkYXRhKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuZXJyb3IgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChlbGVtZW50KS5uZXh0KCkuc2hvdygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChlbGVtZW50KS5uZXh0KCkuYWRkQ2xhc3MoJ2FsZXJ0IGFsZXJ0LWRhbmdlcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChlbGVtZW50KS5uZXh0KCkuY3NzKCdkaXNwbGF5JywgJ2ZsZXgnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZWxlbWVudCkubmV4dCgpLmNzcygnYWxpZ24taXRlbXMnLCAnY2VudGVyJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGVsZW1lbnQpLm5leHQoKS5odG1sKCc8aSBjbGFzcz1cImZhIGZhLXdhcm5pbmdcIj48L2k+JyArZGF0YS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZWxlbWVudCkubmV4dCgpLnJlbW92ZUNsYXNzKCdhbGVydCBhbGVydC1kYW5nZXInKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZWxlbWVudCkubmV4dCgpLmhpZGUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICAkKCdpbnB1dFtuYW1lPWVxdWlwZW1lbnRfbG9jYWxpc2F0aW9uX2FkZF0nKS5hdXRvY29tcGxldGUoe1xyXG4gICAgICAgIHNvdXJjZTogZnVuY3Rpb24ocmVxdWVzdCwgcmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgJC5hamF4KHtcclxuICAgICAgICAgICAgICAgIG1ldGhvZDogXCJHRVRcIixcclxuICAgICAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vYXBpLWFkcmVzc2UuZGF0YS5nb3V2LmZyL3NlYXJjaC8/cT0nICsgJChcImlucHV0W25hbWU9J2VxdWlwZW1lbnRfbG9jYWxpc2F0aW9uX2FkZCddXCIpLnZhbCgpICsgJyZ0eXBlPWhvdXNlbnVtYmVyJmF1dG9jb21wbGV0ZT0xJmxpbWl0PTEwJyxcclxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiBcImpzb25cIixcclxuICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKGRhdGEpe1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlKCQubWFwKGRhdGEuZmVhdHVyZXMsIGZ1bmN0aW9uIChpdGVtKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhZHJlc3NlcyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBJY2kgb24gZXN0IG9ibGlnw6kgZCdham91dGVyIGxlcyBDUCBkYW5zIHVuIGFycmF5IHBvdXIgbmUgcGFzIGF2b2lyIHBsdXNpZXVycyBmb2lzIGxlIG3Dqm1lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkLmluQXJyYXkoaXRlbS5wcm9wZXJ0aWVzLmxhYmVsLCBhZHJlc3NlcykgPT0gLTEgJiYgaXRlbS5wcm9wZXJ0aWVzLmhvdXNlbnVtYmVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZHJlc3Nlcy5wdXNoKGl0ZW0ucHJvcGVydGllcy5sYWJlbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBsYWJlbDogaXRlbS5wcm9wZXJ0aWVzLmxhYmVsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNpdHk6IGl0ZW0ucHJvcGVydGllcy5jaXR5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc3Rjb2RlOiBpdGVtLnByb3BlcnRpZXMucG9zdGNvZGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogaXRlbS5wcm9wZXJ0aWVzLm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29vcmRpbmF0ZXM6IGl0ZW0uZ2VvbWV0cnkuY29vcmRpbmF0ZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLyBPbiByZW1wbGl0IGF1c3NpIGxhIHZpbGxlXHJcbiAgICAgICAgc2VsZWN0OiBmdW5jdGlvbihldmVudCwgdWkpIHtcclxuICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSAkKHRoaXMpO1xyXG4gICAgICAgICAgICAkKFwiaW5wdXRbbmFtZT0nY29kZV9wb3N0YWxfYWRkJ11cIikudmFsKHVpLml0ZW0ucG9zdGNvZGUpO1xyXG4gICAgICAgICAgICAkKFwiaW5wdXRbbmFtZT0ndmlsbGVfYWRkJ11cIikudmFsKHVpLml0ZW0uY2l0eSk7XHJcbiAgICAgICAgICAgICQoXCJpbnB1dFtuYW1lPSdhZHJlc3NlX2FkZCddXCIpLnZhbCh1aS5pdGVtLm5hbWUpO1xyXG4gICAgICAgICAgICAkKFwiaW5wdXRbbmFtZT0nY29vcmRpbmF0ZXNfYWRkJ11cIikudmFsKHVpLml0ZW0uY29vcmRpbmF0ZXMpO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgICQoJ2JvZHknKS5vbignY2xpY2snLCAnLmJ0bi1jcCcsIGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgJCgnLmJ0bi1jcCcpLnJlbW92ZUNsYXNzKCdiZy12ZXJ0Jyk7XHJcbiAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygnYmctdmVydCcpO1xyXG4gICAgICAgIHZhciBpZF9lcXVpcGVtZW50ID0gJCh0aGlzKS5kYXRhKCdlcXVpcGVtZW50Jyk7XHJcbiAgICAgICAgaWYgKCQodGhpcykuYXR0cignaWQnKSA9PSAnYnRuLWNoYW50aWVyLScgKyBpZF9lcXVpcGVtZW50KSB7XHJcbiAgICAgICAgICAgICQoJyNjcC1udW0tY2hhbnRpZXItJyArIGlkX2VxdWlwZW1lbnQpLnByb3AoJ3JlcXVpcmVkJyx0cnVlKTtcclxuICAgICAgICAgICAgJCgnI3NhbGFyaWVfY2hhbnRpZXItJyArIGlkX2VxdWlwZW1lbnQgKS52YWwoJ2NoYW50aWVyJyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgJCgnI2NwLW51bS1jaGFudGllci0nICsgaWRfZXF1aXBlbWVudCkucHJvcCgncmVxdWlyZWQnLGZhbHNlKTtcclxuICAgICAgICAgICAgJCgnI3NhbGFyaWVfY2hhbnRpZXItJyArIGlkX2VxdWlwZW1lbnQpLnZhbCgnc2FsYXJpZScpO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgJCgnYm9keScpLm9uKCdjbGljaycsICcuZGV0YWlsLWNsaWVudCcsIGZ1bmN0aW9uKGUpIHtcclxuICAgICAgICB2YXIgaWRfc2VsZWN0ID0gJCh0aGlzKS5kYXRhKCdzZWxlY3QtaWQnKTtcclxuICAgICAgICB2YXIgdmFsdWUgPSAkKCcjJytpZF9zZWxlY3QpLnZhbCgpO1xyXG4gICAgICAgICQodGhpcykuZGF0YSgnY29udGVudC10ZW1wbGF0ZS1hamF4JywgJy9jbGllbnRzL2RldGFpbF9jbGllbnQvJyArIHZhbHVlKTtcclxuICAgIH0pO1xyXG5cclxuICAgICQoJ2JvZHknKS5vbignY2xpY2snLCAnI3NhbGFyaWUtZnJpc3F1ZXQnLCBmdW5jdGlvbihlKSB7XHJcbiAgICAgICAgaWYgKCQodGhpcykuYXR0cignZGlzYWJsZWQnKSkge1xyXG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKCQodGhpcykuaGFzQ2xhc3MoJ2FjdGl2ZScpKSB7XHJcbiAgICAgICAgICAgICAgICAkKHRoaXMpLnJlbW92ZUNsYXNzKCdhY3RpdmUnKTtcclxuICAgICAgICAgICAgICAgICQoJ2lucHV0W25hbWU9c2FsYXJpZV9mcmlzcXVldF0nKS52YWwoZmFsc2UpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygnYWN0aXZlJyk7XHJcbiAgICAgICAgICAgICAgICAkKCdpbnB1dFtuYW1lPXNhbGFyaWVfZnJpc3F1ZXRdJykudmFsKHRydWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSlcclxuICAgICQoJ2JvZHknKS5vbignY2xpY2snLCAnI2NsaWVudC1jaGFudGllcicsIGZ1bmN0aW9uKGUpIHtcclxuICAgICAgICBpZiAoJCh0aGlzKS5hdHRyKCdkaXNhYmxlZCcpKSB7XHJcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoJCh0aGlzKS5oYXNDbGFzcygnYWN0aXZlJykpIHtcclxuICAgICAgICAgICAgICAgICQodGhpcykucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpO1xyXG4gICAgICAgICAgICAgICAgJCgnaW5wdXRbbmFtZT1lcXVpcGVtZW50X2NoYW50aWVyXScpLnByb3AoJ2Rpc2FibGVkJyx0cnVlKTtcclxuICAgICAgICAgICAgICAgICQoJ2lucHV0W25hbWU9ZXF1aXBlbWVudF9jaGFudGllcl0nKS52YWwoJycpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygnYWN0aXZlJyk7XHJcbiAgICAgICAgICAgICAgICAkKCdpbnB1dFtuYW1lPWVxdWlwZW1lbnRfY2hhbnRpZXJdJykucHJvcCgnZGlzYWJsZWQnLGZhbHNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0pXHJcbiAgICAkKGRvY3VtZW50KS5jbGljayhmdW5jdGlvbihldmVudCkge1xyXG4gICAgICAgIC8vIFbDqXJpZmlleiBzaSBsZSBjbGljIGVzdCBlbiBkZWhvcnMgZGUgI215RWxlbWVudFxyXG4gICAgICAgIGlmICgkKGV2ZW50LnRhcmdldCkuYXR0cignaWQnKSAhPSAnc2hvdy1lcXVpcGVtZW50cycgJiYgJChldmVudC50YXJnZXQpLnBhcmVudCgpLmF0dHIoJ2lkJykgIT0gJ3Nob3ctZXF1aXBlbWVudHMnKSB7XHJcbiAgICAgICAgICAgIGlmICghJChldmVudC50YXJnZXQpLmNsb3Nlc3QoJyNsaXN0LWVxdWlwZW1lbnRzJykubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBDYWNoZXIgbCfDqWzDqW1lbnQgc2kgaWwgZXN0IHZpc2libGVcclxuICAgICAgICAgICAgICAgIGlmICghJCgnI2xpc3QtZXF1aXBlbWVudHMnKS5pcygnOmhpZGRlbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgJCgnI2xpc3QtZXF1aXBlbWVudHMnKS5oaWRlKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9KVxyXG4gICAgJCgnYm9keScpLm9uKCdjbGljaycsICcjc2hvdy1lcXVpcGVtZW50cycsIGZ1bmN0aW9uKGUpIHtcclxuICAgICAgICBpZiAoISQoJyNsaXN0LWVxdWlwZW1lbnRzJykuaXMoJzpoaWRkZW4nKSkge1xyXG4gICAgICAgICAgICAkKCcjbGlzdC1lcXVpcGVtZW50cycpLmhpZGUoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAkKCcjbGlzdC1lcXVpcGVtZW50cycpLnNob3coKTtcclxuICAgICAgICB9XHJcbiAgICB9KVxyXG4gICAgJCgnI2xpc3QtZXF1aXBlbWVudHMnKS5jbGljayhmdW5jdGlvbihldmVudCl7XHJcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB9KTtcclxuICAgICQoJ2JvZHknKS5vbignY2xpY2snLCAnI3Jlc2V0LXByZWZlcmVuY2VzJywgZnVuY3Rpb24oZSkge1xyXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAkKCcjZm9ybS1wcmVmZXJlbmNlcy1wbGFuaWZpY2F0aW9uJylbMF0ucmVzZXQoKTtcclxuICAgICAgICAkKCcucGxhbmlmaWNhdGlvbicpLnZhbCgnJyk7XHJcbiAgICAgICAgJCgnI2Zvcm0tcHJlZmVyZW5jZXMtcGxhbmlmaWNhdGlvbiBzZWxlY3QnKS5lYWNoKGZ1bmN0aW9uKGUpeyQodGhpcykuZmluZCgnb3B0aW9uOmZpcnN0JykucHJvcCgnc2VsZWN0ZWQnLHRydWUpO30pO1xyXG4gICAgICAgICQoJyNmb3JtLXByZWZlcmVuY2VzLXBsYW5pZmljYXRpb24gaW5wdXRbdHlwZT1jaGVja2JveF0nKS5lYWNoKGZ1bmN0aW9uKGUpIHtcclxuICAgICAgICAgICAgJCh0aGlzKS5wcm9wKCdjaGVja2VkJywgZmFsc2UpO1xyXG4gICAgICAgICAgICAkKHRoaXMpLnJlbW92ZUF0dHIoJ2NoZWNrZWQnKTtcclxuICAgICAgICB9KVxyXG4gICAgICAgICQoJy5pbnB1dC1kYXRlcGlja2VyJykuZWFjaChmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICQodGhpcykuZGF0ZXBpY2tlcignc2V0RGF0ZScsbnVsbCk7XHJcbiAgICAgICAgICAgICQodGhpcykuZGF0ZXBpY2tlcignb3B0aW9uJywgJ21pbkRhdGUnLCBudWxsKTtcclxuICAgICAgICAgICAgJCh0aGlzKS5kYXRlcGlja2VyKCdvcHRpb24nLCAnbWF4RGF0ZScsIG51bGwpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgJCgnYm9keScpLm9uKCdjbGljaycsICcjc3VibWl0LWdlc3Rpb24tcHJlZicsIGZ1bmN0aW9uKGUpIHtcclxuICAgICAgICBpZiAoISQoJ2lucHV0W25hbWU9XCJlcXVpcGVtZW50X2R1cGxpcXVlcltdXCJdJykuaXMoJzpjaGVja2VkJykpIHtcclxuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgLy9nZXN0aW9uIHJlY2hlcmNoZSBjbGllbnQgZGFucyBzb3VzY3JpcHRldXIgZXQgdXRpbGlzYXRldXJcclxuICAgICQoJyNwb3B1cC1jaGFuZ2VtZW50LXNvdXNjcmlwdGV1ciBpbnB1dFtuYW1lPW51bWVyb19jbGllbnRdJykubWFzaygnMDAgMDAgMDAwMDAnLHt0cmFuc2xhdGlvbjogIHsnMCc6IHtwYXR0ZXJuOiAvWzAtOV0vLCByZWN1cnNpdmU6IGZhbHNlfX19KTtcclxuICAgICQoJyNwb3B1cC1hZGQtdXRpbGlzYXRldXIgaW5wdXRbbmFtZT1udW1lcm9fY2xpZW50XScpLm1hc2soJzAwIDAwIDAwMDAwJyx7dHJhbnNsYXRpb246ICB7JzAnOiB7cGF0dGVybjogL1swLTldLywgcmVjdXJzaXZlOiBmYWxzZX19fSk7XHJcbiAgICAkKCcuaW5wdXRfYWZmZWN0ZXJfZXF1aXBlbWVudCcpLnByb3AoJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJyk7XHJcbiAgICAkKCcuaW5wdXRfY3JlZXJfY2xpZW50JykucHJvcCgnZGlzYWJsZWQnLCdkaXNhYmxlZCcpO1xyXG4gICAgJCgnLmlucHV0X2FmZmVjdGVyX2VxdWlwZW1lbnQnKS5vbignY2hhbmdlJyxmdW5jdGlvbihlKSB7XHJcbiAgICAgICAgdmFyIGZvcm0gPSAnIycrJCh0aGlzKS5hdHRyKCdmb3JtJyk7XHJcbiAgICAgICAgaWYgKCQodGhpcykuaXMoJzpjaGVja2VkJykpIHtcclxuICAgICAgICAgICAgJChmb3JtICsnIC5zcGFuX2FmZmVjdGVyX2VxdWlwZW1lbnQnKS5hZGRDbGFzcygnY29sb3ItcHJpbWFyeScpO1xyXG4gICAgICAgICAgICAkKGZvcm0gKycgLm5vdXZlYXVfY2xpZW50X2NyZWF0aW9uJykuaGlkZSgpO1xyXG4gICAgICAgICAgICAkKGZvcm0gKycgLm5vdXZlYXVfY2xpZW50X3JlY2hlcmNoZScpLnNob3coKTtcclxuICAgICAgICAgICAgJChmb3JtICsnIC5zdWJtaXQtZm9ybScpLnJlbW92ZUF0dHIoJ2Rpc2FibGVkJyk7XHJcbiAgICAgICAgICAgICQoZm9ybSArJyBpbnB1dFtuYW1lPXR5cGVfYWRkXScpLnZhbCgncmVjaGVyY2hlJyk7XHJcbiAgICAgICAgICAgICQoZm9ybSArJyAuaW5wdXRfY3JlZXJfY2xpZW50JykucHJvcCgnY2hlY2tlZCcsIGZhbHNlKTtcclxuICAgICAgICAgICAgJChmb3JtICsnIC5zcGFuX2NyZWVyX2NsaWVudCcpLnJlbW92ZUNsYXNzKCdjb2xvci1wcmltYXJ5Jyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgJChmb3JtICsnIC5zdWJtaXQtZm9ybScpLmF0dHIoJ2Rpc2FibGVkJyk7XHJcbiAgICAgICAgICAgICQoZm9ybSArJyAuc3VibWl0LWZvcm0nKS5wcm9wKCdkaXNhYmxlZCcsICdkaXNhYmxlZCcpO1xyXG4gICAgICAgICAgICAkKGZvcm0gKycgLnNwYW5fYWZmZWN0ZXJfZXF1aXBlbWVudCcpLnJlbW92ZUNsYXNzKCdjb2xvci1wcmltYXJ5Jyk7XHJcbiAgICAgICAgICAgICQoZm9ybSArJyAubm91dmVhdV9jbGllbnRfcmVjaGVyY2hlJykuaGlkZSgpO1xyXG4gICAgICAgICAgICAkKGZvcm0gKycgaW5wdXRbbmFtZT10eXBlX2FkZF0nKS52YWwoJycpO1xyXG4gICAgICAgIH1cclxuICAgIH0pXHJcbiAgICAkKCcuaW5wdXRfY3JlZXJfY2xpZW50Jykub24oJ2NoYW5nZScsZnVuY3Rpb24oZSkge1xyXG4gICAgICAgIGlmICgkKHRoaXMpLmlzKCc6Y2hlY2tlZCcpKSB7XHJcbiAgICAgICAgICAgIHZhciBmb3JtID0gJyMnKyQodGhpcykuYXR0cignZm9ybScpO1xyXG4gICAgICAgICAgICAkKGZvcm0rJyAuc3Bhbl9jcmVlcl9jbGllbnQnKS5hZGRDbGFzcygnY29sb3ItcHJpbWFyeScpO1xyXG4gICAgICAgICAgICAkKGZvcm0gKycgLnN1Ym1pdC1mb3JtJykucmVtb3ZlQXR0cignZGlzYWJsZWQnKTtcclxuICAgICAgICAgICAgJChmb3JtICsnIGlucHV0W25hbWU9dHlwZV9hZGRdJykudmFsKCduZXcnKTtcclxuICAgICAgICAgICAgJChmb3JtICsnIC5ub3V2ZWF1X2NsaWVudF9jcmVhdGlvbi0tdGl0bGUnKS50ZXh0KCdOdW1lcm8gQ2xpZW50IDogLScpO1xyXG4gICAgICAgICAgICBpZiAoJChmb3JtICsgJyBpbnB1dFtuYW1lPWNsaWVudF9ub21dJykuaXMoJzp2aXNpYmxlJykpIHtcclxuICAgICAgICAgICAgICAgICQoZm9ybSArJyAubm91dmVhdV9jbGllbnRfY3JlYXRpb24tLW5vbScpLnRleHQoJChmb3JtICsgJyBpbnB1dFtuYW1lPWV0YXRfY2l2aWxdOnNlbGVjdGVkJykudGV4dCgpICsgJyAnICskKGZvcm0gKyAnIGlucHV0W25hbWU9Y2xpZW50X25vbScpLnZhbCgpICsgJyAnICsgJChmb3JtICsgJyBpbnB1dFtuYW1lPWNsaWVudF9wcmVub20nKS52YWwoKSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAkKGZvcm0gKycgLm5vdXZlYXVfY2xpZW50X2NyZWF0aW9uLS1ub20nKS50ZXh0KCQoZm9ybSArICcgaW5wdXRbbmFtZT1jbGllbnRfZW50cmVwcmlzZScpLnZhbCgpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAkKGZvcm0gKycgLm5vdXZlYXVfY2xpZW50X2NyZWF0aW9uLS1lbWFpbHMnKS50ZXh0KCQoZm9ybSArICcgaW5wdXRbbmFtZT1lbWFpbCcpLnZhbCgpKTtcclxuICAgICAgICAgICAgJChmb3JtICsnIC5ub3V2ZWF1X2NsaWVudF9jcmVhdGlvbi0tYWRyZXNzZScpLnRleHQoJycpO1xyXG4gICAgICAgICAgICAkKGZvcm0gKycgLm5vdXZlYXVfY2xpZW50X2NyZWF0aW9uJykuc2hvdygpO1xyXG4gICAgICAgICAgICAkKGZvcm0gKycgLm5vdXZlYXVfY2xpZW50X3JlY2hlcmNoZScpLmhpZGUoKTtcclxuICAgICAgICAgICAgJChmb3JtICsnIGlucHV0W25hbWU9aW5wdXRfYWZmZWN0ZXJfZXF1aXBlbWVudF0nKS5wcm9wKCdjaGVja2VkJywgZmFsc2UpO1xyXG4gICAgICAgICAgICAkKGZvcm0gKycgLnNwYW5fYWZmZWN0ZXJfZXF1aXBlbWVudCcpLnJlbW92ZUNsYXNzKCdjb2xvci1wcmltYXJ5Jyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgJChmb3JtICsnIC5zcGFuX2NyZWVyX2NsaWVudCcpLnJlbW92ZUNsYXNzKCdjb2xvci1wcmltYXJ5Jyk7XHJcbiAgICAgICAgICAgICQoZm9ybSArJyAubm91dmVhdV9jbGllbnRfY3JlYXRpb24nKS5oaWRlKCk7XHJcbiAgICAgICAgICAgICQoZm9ybSArJyAuc3VibWl0LWZvcm0nKS5hdHRyKCdkaXNhYmxlZCcpO1xyXG4gICAgICAgICAgICAkKGZvcm0gKycgLnN1Ym1pdC1mb3JtJykucHJvcCgnZGlzYWJsZWQnLCAnZGlzYWJsZWQnKTtcclxuICAgICAgICAgICAgJChmb3JtICsnIGlucHV0W25hbWU9dHlwZV9hZGRdJykudmFsKCcnKTtcclxuICAgICAgICB9XHJcbiAgICB9KVxyXG5cclxuICAgICQoJ2JvZHknKS5vbignY2xpY2snLCAnI3Jlc2V0LWZvcm0tY2hhbmdlLXNvdXNjcmlwdGV1ciwjcmVzZXQtZm9ybS1jaGFuZ2UtdXRpbGlzYXRldXInLCBmdW5jdGlvbihlKSB7XHJcbiAgICAgICAgJCgnI2Zvcm0tY2hhbmdlbWVudC1zb3VzY3JpcHRldXInKVswXS5yZXNldCgpO1xyXG4gICAgICAgICQoJyNmb3JtLWFkZC11dGlsaXNhdGV1cicpWzBdLnJlc2V0KCk7XHJcbiAgICAgICAgJCgnLnJlc3VsdC1zb3VzY3JpcHRldXItY2xpZW50JykuaGlkZSgpO1xyXG4gICAgICAgICQoJy5ub3V2ZWF1X2NsaWVudF9yZWNoZXJjaGUnKS5oaWRlKCk7XHJcbiAgICAgICAgJCgnLm5vdXZlYXVfY2xpZW50X2NyZWF0aW9uJykuaGlkZSgpO1xyXG4gICAgICAgICQoJy5pbnB1dF9hZmZlY3Rlcl9lcXVpcGVtZW50JykucHJvcCgnY2hlY2tlZCcsIGZhbHNlKTtcclxuICAgICAgICAkKCcuaW5wdXRfY3JlZXJfY2xpZW50JykucHJvcCgnY2hlY2tlZCcsIGZhbHNlKTtcclxuICAgIH0pXHJcbiAgICB2YXIgY3VycmVudFJlcXVlc3QgPSBudWxsO1xyXG4gICAgdmFyIGRlYm91bmNlVGltZXI7XHJcbiAgICAkKCdib2R5Jykub24oJ2lucHV0JywnaW5wdXRbbmFtZT1jbGllbnRfbm9tXSxpbnB1dFtuYW1lPWNsaWVudF9lbnRyZXByaXNlXSxpbnB1dFtuYW1lPWNsaWVudF9wcmVub21dLGlucHV0W25hbWU9ZW1haWxdLGlucHV0W25hbWU9bnVtZXJvX2NsaWVudF0sc2VsZWN0W25hbWU9Y2F0ZWdvcmllX3Byb10nLCBmdW5jdGlvbihlKSB7XHJcbiAgICAgICAgdmFyIG5vbV9mb3JtID0gJyMnKyQodGhpcykuYXR0cignZm9ybScpO1xyXG4gICAgICAgIC8vIEFubnVsZSBsJ8OpdsOpbmVtZW50IHByw6ljw6lkZW50IHMnaWwgZXN0IGVuY29yZSBlbiBjb3Vyc1xyXG4gICAgICAgIGNsZWFyVGltZW91dChkZWJvdW5jZVRpbWVyKTtcclxuICAgICAgICBpZiAoKCQobm9tX2Zvcm0gKyAnIHNlbGVjdFtuYW1lPXR5cGVfY2xpZW50XScpLnZhbCgpID09IDEgJiYgJChub21fZm9ybSArJyBpbnB1dFtuYW1lPWNsaWVudF9ub21dJykudmFsKCkudHJpbSgpLmxlbmd0aCA+IDIpXHJcbiAgICAgICAgICAgIHx8ICgkKG5vbV9mb3JtICsgJyBzZWxlY3RbbmFtZT10eXBlX2NsaWVudF0nKS52YWwoKSA9PSAyICYmICQobm9tX2Zvcm0gKycgaW5wdXRbbmFtZT1jbGllbnRfZW50cmVwcmlzZV0nKS52YWwoKS50cmltKCkubGVuZ3RoID4gMiAmJiAkKG5vbV9mb3JtICsnIHNlbGVjdFtuYW1lPWNhdGVnb3JpZV9wcm9dJykudmFsKCkgIT0gJycpKSB7XHJcbiAgICAgICAgICAgICQobm9tX2Zvcm0gKyAnIGlucHV0W25hbWU9aW5wdXRfY3JlZXJfY2xpZW50XScpLnJlbW92ZUF0dHIoJ2Rpc2FibGVkJyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgJChub21fZm9ybSArICcgaW5wdXRbbmFtZT1pbnB1dF9jcmVlcl9jbGllbnRdJykuYXR0cignZGlzYWJsZWQnKTtcclxuICAgICAgICAgICAgJChub21fZm9ybSArICcgaW5wdXRbbmFtZT1pbnB1dF9jcmVlcl9jbGllbnRdJykucHJvcCgnZGlzYWJsZWQnLCdkaXNhYmxlZCcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgZm9ybURhdGEgPSAkKCcjJyskKHRoaXMpLmF0dHIoJ2Zvcm0nKSkuc2VyaWFsaXplKCk7XHJcblxyXG4gICAgICAgIGRlYm91bmNlVGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAkKG5vbV9mb3JtICsnIGlucHV0W25hbWU9Y2xpZW50X25vbV0nKS52YWwoKS50cmltKCkubGVuZ3RoID4gMiB8fFxyXG4gICAgICAgICAgICAgICAgJChub21fZm9ybSArJyBpbnB1dFtuYW1lPWNsaWVudF9wcmVub21dJykudmFsKCkudHJpbSgpLmxlbmd0aCA+IDIgfHxcclxuICAgICAgICAgICAgICAgICQobm9tX2Zvcm0gKycgaW5wdXRbbmFtZT1lbWFpbF0nKS52YWwoKS50cmltKCkubGVuZ3RoID4gMiB8fFxyXG4gICAgICAgICAgICAgICAgJChub21fZm9ybSArJyBpbnB1dFtuYW1lPWNsaWVudF9lbnRyZXByaXNlXScpLnZhbCgpLnRyaW0oKS5sZW5ndGggPiAyIHx8XHJcbiAgICAgICAgICAgICAgICAkKG5vbV9mb3JtICsnIGlucHV0W25hbWU9bnVtZXJvX2NsaWVudF0nKS52YWwoKS50cmltKCkubGVuZ3RoID4gMlxyXG4gICAgICAgICAgICApIHtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBBbm51bGVyIGxhIHJlcXXDqnRlIHByw6ljw6lkZW50ZSBzaSBlbGxlIGVzdCB0b3Vqb3VycyBlbiBjb3Vyc1xyXG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRSZXF1ZXN0ICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50UmVxdWVzdC5hYm9ydCgpOyAvLyBBbm51bGUgbGEgcmVxdcOqdGUgcHLDqWPDqWRlbnRlXHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgY3VycmVudFJlcXVlc3QgPSAkLmFqYXgoe1xyXG4gICAgICAgICAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAnL2NsaWVudHMvcmVjaGVyY2hlJyxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogXCJqc29uXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogZm9ybURhdGEsXHJcbiAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc0RhdGE6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKGRhdGFzKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGFzLnNvdXJjZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChub21fZm9ybSArICcgLnJlc3VsdC1zb3VzY3JpcHRldXItY2xpZW50JykuY3NzKCdtYXgtaGVpZ2h0JywnMjI5cHgnKS5jc3MoJ21pbi1oZWlnaHQnLCcyMjlweCcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChub21fZm9ybSArJyBpbnB1dFtuYW1lPWlucHV0X2FmZmVjdGVyX2VxdWlwZW1lbnRdJykucHJvcCgnZGlzYWJsZWQnLCAnZGlzYWJsZWQnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQobm9tX2Zvcm0gKyAnIC5yZXN1bHQtc291c2NyaXB0ZXVyLWNsaWVudCcpLnNob3coKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChub21fZm9ybSArJyBpbnB1dFtuYW1lPWlucHV0X2FmZmVjdGVyX2VxdWlwZW1lbnRdJykucHJvcCgnZGlzYWJsZWQnLCAnZGlzYWJsZWQnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQobm9tX2Zvcm0gKycgaW5wdXRbbmFtZT1pbnB1dF9hZmZlY3Rlcl9lcXVpcGVtZW50XScpLnByb3AoJ2NoZWNrZWQnLCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKG5vbV9mb3JtICsgJyAubm91dmVhdV9jbGllbnRfcmVjaGVyY2hlJykuaGlkZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChub21fZm9ybSArICcgLm5vdXZlYXVfY2xpZW50X3JlY2hlcmNoZS0tdGl0bGUnKS50ZXh0KCcnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQobm9tX2Zvcm0gKyAnIC5ub3V2ZWF1X2NsaWVudF9yZWNoZXJjaGUtLW5vbScpLnRleHQoJycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChub21fZm9ybSArICcgLm5vdXZlYXVfY2xpZW50X3JlY2hlcmNoZS0tYWRyZXNzZScpLnRleHQoJycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChub21fZm9ybSArICcgLm5vdXZlYXVfY2xpZW50X3JlY2hlcmNoZS0tZW1haWxzJykudGV4dCgnJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgJChub21fZm9ybSArICcgLnJlc3VsdC1zb3VzY3JpcHRldXItY2xpZW50JykuZHhEYXRhR3JpZCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhU291cmNlOiBkYXRhcy5zb3VyY2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zOmRhdGFzLmNvbG9ubmVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uQXV0b1dpZHRoOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0JvcmRlcnM6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkluaXRpYWxpemVkOiBmdW5jdGlvbihlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5jb21wb25lbnQuYmVnaW5DdXN0b21Mb2FkaW5nKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db250ZW50UmVhZHk6IGZ1bmN0aW9uKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmNvbXBvbmVudC5lbmRDdXN0b21Mb2FkaW5nKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZTogJ3NpbmdsZScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TZWxlY3Rpb25DaGFuZ2VkOiBmdW5jdGlvbihlKSB7IC8vIEhhbmRsZXIgb2YgdGhlIFwic2VsZWN0aW9uQ2hhbmdlZFwiIGV2ZW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGFsbFNlbGVjdGVkUm93c0RhdGEgPSBlLnNlbGVjdGVkUm93c0RhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFsbFNlbGVjdGVkUm93c0RhdGEubGVuZ3RoICE9IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChub21fZm9ybSArJyBpbnB1dFtuYW1lPWlucHV0X2FmZmVjdGVyX2VxdWlwZW1lbnRdJykucmVtb3ZlQXR0cignZGlzYWJsZWQnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChub21fZm9ybSArICcgLm5vdXZlYXVfY2xpZW50X3JlY2hlcmNoZS0tdGl0bGUnKS50ZXh0KCdOdW1lcm8gQ2xpZW50IDogJyArIGFsbFNlbGVjdGVkUm93c0RhdGFbMF0ubnVtZXJvX2NsaWVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQobm9tX2Zvcm0gKyAnIC5ub3V2ZWF1X2NsaWVudF9yZWNoZXJjaGUtLW5vbScpLnRleHQoYWxsU2VsZWN0ZWRSb3dzRGF0YVswXS5ub21fY29tcGxldCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQobm9tX2Zvcm0gKyAnIC5ub3V2ZWF1X2NsaWVudF9yZWNoZXJjaGUtLWFkcmVzc2UnKS50ZXh0KGFsbFNlbGVjdGVkUm93c0RhdGFbMF0uYWRyZXNzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQobm9tX2Zvcm0gKyAnIC5ub3V2ZWF1X2NsaWVudF9yZWNoZXJjaGUtLWVtYWlscycpLnRleHQoYWxsU2VsZWN0ZWRSb3dzRGF0YVswXS5lbWFpbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQobm9tX2Zvcm0gKyAnIGlucHV0W25hbWU9bmV3X2NsaWVudF9zb3VzY3JpcHRldXJdJykudmFsKGFsbFNlbGVjdGVkUm93c0RhdGFbMF0uaWRfY2xpZW50KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkKG5vbV9mb3JtICsgJyBpbnB1dFtuYW1lPWlucHV0X2FmZmVjdGVyX2VxdWlwZW1lbnQnKS5pcygnOmNoZWNrZWQnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChub21fZm9ybSArJyBpbnB1dFtuYW1lPWlucHV0X2FmZmVjdGVyX2VxdWlwZW1lbnRdJykuY2xpY2soKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoJChub21fZm9ybSArICcgLnJlc3VsdC1zb3VzY3JpcHRldXItY2xpZW50JykuaXMoJzp2aXNpYmxlJykpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgZ3JpZCA9ICQobm9tX2Zvcm0gKyBcIiAucmVzdWx0LXNvdXNjcmlwdGV1ci1jbGllbnRcIikuZHhEYXRhR3JpZChcImluc3RhbmNlXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGdyaWQub3B0aW9uKFwiZGF0YVNvdXJjZVwiLCBbXSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LCAzMDApO1xyXG5cclxuICAgIH0pO1xyXG5cclxuICAgICQoJ2JvZHknKS5vbignY2hhbmdlJywgJ3NlbGVjdFtuYW1lPXBsYW5pZmllcl9wcmVmZXJlbmNlXSwgc2VsZWN0W25hbWU9cGxhbmlmaWVyX3BhcnRpZV9qb3VybmVlXSwgc2VsZWN0W25hbWU9cGxhbmlmaWVyX2FnZW50XScsIGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIGNoZWNrUHJlZmVyZW5jZVBsYW5uaWZpY2F0aW9uKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCBsb2NrSWQgPSAkKCcjbG9jay1pZCcpLnZhbCgpO1xyXG5cclxuICAgIGZ1bmN0aW9uIGNoZWNrTG9ja0V4cGlyYXRpb24oKSB7XHJcbiAgICAgICAgaWYgKGxvY2tJZCkge1xyXG4gICAgICAgICAgICAkLmFqYXgoe1xyXG4gICAgICAgICAgICAgICAgdXJsOiBgL2NoZWNrX2V4cGlyYXRpb25fbG9jay8ke2xvY2tJZH1gLCAvLyBNb2RpZmllIGwnVVJMIHNlbG9uIHRhIHJvdXRlIFN5bWZvbnlcclxuICAgICAgICAgICAgICAgIG1ldGhvZDogJ0dFVCcsXHJcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ2pzb24nLFxyXG4gICAgICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmV4cGlyZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy9hZmZpY2hlciBsYSBwb3B1cCBkdSBjaG9peCBkZSBmZXJtZXIgbGEgZmljaGUgb3UgcmFmZnJhaWNoaXIgbGEgcGFnZSBjbGllbnRcclxuICAgICAgICAgICAgICAgICAgICAgICAvLyB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCAkKCcjcG9wdXAtbG9jay1leHBpcmVkLScgKyAkKCcjaWRfZXF1aXBlbWVudF91cGRhdGUnKS52YWwoKSkuaXMoJzpoaWRkZW4nKSApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcG9wdXBfbG9jayA9ICQoJyNwb3B1cC1sb2NrLWV4cGlyZWQtJyArICQoJyNpZF9lcXVpcGVtZW50X3VwZGF0ZScpLnZhbCgpKS5keFBvcHVwKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogXCJhdXRvXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OlwiYXV0b1wiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEhlaWdodDogXCI5MHZoXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyOiBcIi5keC12aWV3cG9ydFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dUaXRsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXCJJbmFjdGl2aXTDqVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYWdFbmFibGVkOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYWdPdXRzaWRlQm91bmRhcnk6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VPbk91dHNpZGVDbGljazogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0Nsb3NlQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRBdHRyOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiBcIm5vYnV0dG9uIGRhcmtfc2hhZG93XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0OiBcImNlbnRlclwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteTogXCJjZW50ZXJcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbGlzaW9uIDogJ2ZpdCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLmR4UG9wdXAoJ2luc3RhbmNlJyk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI3BvcHVwLWxvY2stZXhwaXJlZC0nICsgJCgnI2lkX2VxdWlwZW1lbnRfdXBkYXRlJykudmFsKCkpLnNob3coKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcHVwX2xvY2suc2hvdygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0VycmV1ciBsb3JzIGRlIGxhIHbDqXJpZmljYXRpb24gZHUgbG9jay4nKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ3BhcyBkZSBsb2NrJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIGNoZWNrUHJlZmVyZW5jZVBsYW5uaWZpY2F0aW9uKCkge1xyXG4gICAgICAgIGlmKCQoJ3NlbGVjdFtuYW1lPXBsYW5pZmllcl9wcmVmZXJlbmNlXSBvcHRpb246c2VsZWN0ZWQnKS52YWwoKSA9PSAnSW5kaWZmw6lyZW50Jykge1xyXG4gICAgICAgICAgICAkKCdpbnB1dFtuYW1lPVwicGxhbmlmaWVyX2pvdXJbXVwiXScpLmF0dHIoJ2Rpc2FibGVkJyk7XHJcbiAgICAgICAgICAgICQoJ2lucHV0W25hbWU9XCJwbGFuaWZpZXJfam91cltdXCJdJykucHJvcCgnZGlzYWJsZWQnLHRydWUpO1xyXG4gICAgICAgICAgICAkKCdpbnB1dFtuYW1lPVwicGxhbmlmaWVyX2pvdXJbXVwiXScpLnByb3AoJ2NoZWNrZWQnLGZhbHNlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAkKCdpbnB1dFtuYW1lPVwicGxhbmlmaWVyX2pvdXJbXVwiXScpLnJlbW92ZUF0dHIoJ2Rpc2FibGVkJyk7XHJcbiAgICAgICAgICAgICQoJ2lucHV0W25hbWU9XCJwbGFuaWZpZXJfam91cltdXCJdJykucHJvcCgnZGlzYWJsZWQnLGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYoJCgnc2VsZWN0W25hbWU9cGxhbmlmaWVyX3BhcnRpZV9qb3VybmVlXSBvcHRpb246c2VsZWN0ZWQnKS52YWwoKSA9PSAnSW5kaWZmw6lyZW50Jykge1xyXG4gICAgICAgICAgICAkKCdpbnB1dFtuYW1lPXByZW1pZXJlX3Zpc2l0ZV0nKS5wcm9wKCdkaXNhYmxlZCcsdHJ1ZSk7XHJcbiAgICAgICAgICAgICQoJ2lucHV0W25hbWU9cHJlbWllcmVfdmlzaXRlXScpLmF0dHIoJ2Rpc2FibGVkJyk7XHJcbiAgICAgICAgICAgICQoJ2lucHV0W25hbWU9cHJlbWllcmVfdmlzaXRlXScpLnByb3AoJ2NoZWNrZWQnLCBmYWxzZSk7XHJcbiAgICAgICAgICAgICQoJ3NlbGVjdFtuYW1lPXBsYW5pZmllcl9wbGFnZV9ob3JhaXJlXSBvcHRpb246Zmlyc3QnKS5wcm9wKCdzZWxlY3RlZCcsIHRydWUpO1xyXG4gICAgICAgICAgICAkKCdzZWxlY3RbbmFtZT1wbGFuaWZpZXJfcGxhZ2VfaG9yYWlyZV0nKS5wcm9wKCdkaXNhYmxlZCcsdHJ1ZSk7XHJcbiAgICAgICAgICAgICQoJ3NlbGVjdFtuYW1lPXBsYW5pZmllcl9wbGFnZV9ob3JhaXJlXScpLmF0dHIoJ2Rpc2FibGVkJyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgJCgnaW5wdXRbbmFtZT1wcmVtaWVyZV92aXNpdGVdJykucmVtb3ZlQXR0cignZGlzYWJsZWQnKTtcclxuICAgICAgICAgICAgJCgnaW5wdXRbbmFtZT1wcmVtaWVyZV92aXNpdGVdJykucHJvcCgnZGlzYWJsZWQnLGZhbHNlKTtcclxuICAgICAgICAgICAgJCgnc2VsZWN0W25hbWU9cGxhbmlmaWVyX3BsYWdlX2hvcmFpcmVdJykucHJvcCgnZGlzYWJsZWQnLGZhbHNlKTtcclxuICAgICAgICAgICAgJCgnc2VsZWN0W25hbWU9cGxhbmlmaWVyX3BsYWdlX2hvcmFpcmVdJykucmVtb3ZlQXR0cignZGlzYWJsZWQnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmKCQoJ3NlbGVjdFtuYW1lPXBsYW5pZmllcl9hZ2VudF0gb3B0aW9uOnNlbGVjdGVkJykudmFsKCkgPT0gJ0luZGlmZsOpcmVudCcpIHtcclxuICAgICAgICAgICAgJCgnc2VsZWN0W25hbWU9cHJlZmVyZW5jZV9hZ2VudF0nKS5wcm9wKCdkaXNhYmxlZCcsdHJ1ZSk7XHJcbiAgICAgICAgICAgICQoJ3NlbGVjdFtuYW1lPXByZWZlcmVuY2VfYWdlbnRdIG9wdGlvbjpmaXJzdCcpLnByb3AoJ3NlbGVjdGVkJyx0cnVlKTtcclxuICAgICAgICAgICAgJCgnc2VsZWN0W25hbWU9cHJlZmVyZW5jZV9hZ2VudF0nKS5hdHRyKCdkaXNhYmxlZCcpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICQoJ3NlbGVjdFtuYW1lPXByZWZlcmVuY2VfYWdlbnRdJykucHJvcCgnZGlzYWJsZWQnLGZhbHNlKTtcclxuICAgICAgICAgICAgJCgnc2VsZWN0W25hbWU9cHJlZmVyZW5jZV9hZ2VudF0nKS5yZW1vdmVBdHRyKCdkaXNhYmxlZCcpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHNldEludGVydmFsKGNoZWNrTG9ja0V4cGlyYXRpb24sIDYwMDAwKTtcclxuICAgIGNoZWNrUHJlZmVyZW5jZVBsYW5uaWZpY2F0aW9uKCk7XHJcblxyXG4gICAgLy9vbiBzZWxlY3Rpb25uZSBsYSBwcmVtaWVyZSBpbnRlcnZlbnRpb24gc2kgeWVuIGEgdW5lXHJcbiAgICBpZiAoJCgnLmludGVydmVudGlvbl9jbGllbnQnKS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgJCgnLmludGVydmVudGlvbl9jbGllbnQnKS5maXJzdCgpLnRyaWdnZXIoJ2NsaWNrJyk7XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9";
        
        $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->leave($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof);

        
        $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->leave($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof);

        return; yield '';
    }

    /**
     * @codeCoverageIgnore
     */
    public function getTemplateName()
    {
        return "@public_path/build/client.js";
    }

    /**
     * @codeCoverageIgnore
     */
    public function getDebugInfo()
    {
        return array ();
    }

    public function getSourceContext()
    {
        return new Source("(self[\"webpackChunk\"] = self[\"webpackChunk\"] || []).push([[\"client\"],{

/***/ \"./assets/js/client.js\":
/*!*****************************!*\\
  !*** ./assets/js/client.js ***!
  \\*****************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! core-js/modules/es.array.index-of.js */ \"./node_modules/core-js/modules/es.array.index-of.js\");

__webpack_require__(/*! core-js/modules/es.array.includes.js */ \"./node_modules/core-js/modules/es.array.includes.js\");

__webpack_require__(/*! core-js/modules/es.string.includes.js */ \"./node_modules/core-js/modules/es.string.includes.js\");

__webpack_require__(/*! core-js/modules/es.array.for-each.js */ \"./node_modules/core-js/modules/es.array.for-each.js\");

__webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ \"./node_modules/core-js/modules/web.dom-collections.for-each.js\");

__webpack_require__(/*! core-js/modules/web.timers.js */ \"./node_modules/core-js/modules/web.timers.js\");

__webpack_require__(/*! core-js/modules/es.array.find.js */ \"./node_modules/core-js/modules/es.array.find.js\");

__webpack_require__(/*! core-js/modules/es.array.map.js */ \"./node_modules/core-js/modules/es.array.map.js\");

__webpack_require__(/*! core-js/modules/es.function.name.js */ \"./node_modules/core-js/modules/es.function.name.js\");

__webpack_require__(/*! core-js/modules/es.string.trim.js */ \"./node_modules/core-js/modules/es.string.trim.js\");

var \$ = __webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\");

window.formChanged = false;

function unsaveChanged(event) {
  var activeElement = null;

  if (navigator.userAgent.indexOf(\"Chrome\") !== -1) {
    activeElement = document.activeElement;
  } else {
    activeElement = event.originalTarget.activeElement;
  }

  if (window.formChanged && (!activeElement || activeElement.id != 'btn-save-client' && activeElement.id != 'save-pref-planification' && !\$(activeElement).hasClass('btn-success'))) {
    if (!window.confirm(\"Attention, si vous quitter la page, vos modifications en cours ne seront pas sauvegardées\")) {
      event.preventDefault();
      return;
    } else {
      // localStorage.setItem('sidebarminim', false);
      window.formChanged = false;
    }
  } //on supprime le lock sur fermeture de l'onglet


  var idlock = \$('#lock-id').val();

  if (idlock) {
    var xhr = new XMLHttpRequest();
    xhr.open(\"DELETE\", \"/lock/\" + idlock, false); // false = synchrone

    xhr.send();
  }
}

window.addEventListener('beforeunload', unsaveChanged);
\$('body').on('change', '#check_meme_adresse_equipement_existant', function (e) {
  if (\$(this).is(':checked')) {
    \$('#list_equipement_existant').show();
    \$('#add_equipement_new').hide();
  } else {
    \$('#list_equipement_existant').hide();
    \$('#equipement_existant_select').val('');
    \$('#add_equipement_new').show();
  }
});
\$('body').on('click', '#add_agent_qualification', function (e) {
  var datagridAgentQualification = \$('#agent-grid-qualification').dxDataGrid('instance');
  datagridAgentQualification.addRow();
});
\$('body').on('change', '#type_client', function (e) {
  if (\$(this).val() == \"2\") {
    \$('#categorie_pro').parent().removeClass('hide');
    \$('#client_entreprise').parent().removeClass('hide');
    \$('#equipement_tva').val('4');
  } else {
    \$('#categorie_pro').parent().addClass('hide');
    \$('#client_entreprise').parent().addClass('hide');
    \$('#equipement_tva').val('5');
  }
});
\$('body').on('change', '.equipement-zone', function (e) {
  if (\$(this).val() == 6) {
    \$(\$(this).data('target')).css('visibility', 'inherit');
  } else {
    \$(\$(this).data('target')).css('visibility', 'hidden');
  }
});
\$('body').on('click', '.add_complement_adresse', function (e) {
  var targetGrid = \$(\$(this).data('target-grid')).dxDataGrid('instance');
  targetGrid.addRow();
});
\$('body').on('change', '.form-input-change', function (e) {
  var form = \$(this).attr('form');
  var id_equipement = \$('#' + form).data('idequipement');
  \$('#simulateur_data_change-' + id_equipement).val(\$(e.target).attr('name'));
  var html_grid = \$('#' + form).submit();
}); // \$('body').on('click', '.toggle-sidebar-client', function(e) {
//     if (\$('#sidebar-client').hasClass('minim')) {
//         localStorage.setItem('sidebarminim', false);
//         \$(this).removeClass('fa-chevron-right').addClass('fa-chevron-left');
//         \$('#sidebar-client').removeClass('minim ');
//         \$('.sidebar-client-bottom').addClass('minim');
//         \$('.bloc_picto').removeClass('hide').addClass('hide');
//         \$('#body-client').addClass('minim ');
//         \$('.bloc_fiche_3').removeClass('bloc_fiche_3').addClass('bloc_fiche_2');
//         \$('.bloc_fiche_technique').removeClass('bloc_fiche_full').addClass('bloc_fiche_2');
//         \$('.preferences_planification').removeClass('minim');
//     } else {
//         localStorage.setItem('sidebarminim', true);
//         \$(this).removeClass('fa-chevron-left').addClass('fa-chevron-right');
//         \$('#sidebar-client').addClass('minim ');
//         \$('#body-client').removeClass('minim ');
//         \$('.bloc_picto').removeClass('hide');
//         \$('.sidebar-client-bottom').removeClass('minim');
//         \$('.bloc_fiche_technique').removeClass('bloc_fiche_2').addClass('bloc_fiche_full');
//         \$('.bloc_fiche_2').removeClass('bloc_fiche_2').addClass('bloc_fiche_3');
//         \$('.preferences_planification').removeClass('minim').addClass('minim');
//     }
// });

\$('body').on(\"changed.bs.select\", function (e, clickedIndex, newValue, oldValue) {
  var value = e.target.options[clickedIndex].value;
  var text = e.target.options[clickedIndex].text;

  if (\$('#tr-' + value).length != 0 || oldValue.includes(value)) {
    \$('#tr-' + value).remove();
  } else {
    var tr = document.createElement('tr');
    \$(tr).attr('id', 'tr-' + value);
    tr.innerHTML = '<td>' + text + '</td><td></td>';
    \$('#simulateur-table-options tbody').append(tr.outerHTML);
  }
});
\$('body').on('click', '.choix-block', function (e) {
  var current_target = \$('.choix-block.bg-vert').data('target');
  var target = \$(this).data('target');
  \$('.choix-block').removeClass('bg-vert border-vert').addClass('border-grey-medium');
  \$(this).addClass('border-vert').addClass('bg-vert');

  if (current_target != null && current_target != target) {
    \$(current_target).hide();
  }

  \$('#form_add_equipement_type').val(target);
  \$(target).show();
  \$('#submit-add-equipement').show();
});
\$('#submit-add-equipement').on('click', function (e) {
  e.preventDefault(); //si on est en type recherche d'équipement et que l'équipement est toujours actif, on met un message

  if (\$('#form_add_equipement_type').val() == '#choix-recherche-equipement') {
    var \$selected = \$('select[name=equipement_search_value] option:selected');

    if (\$selected.length == 1) {
      if (\$selected.data('actif') == 1) {
        var link = '<a href=\"' + \$selected.data('link') + '\" target=\"_blank\">allez voir</a>';
        var message = \"Attention, cet équipement est toujours actif chez un autre client : \" + link + \". <br>Voulez vous tout de même ajouter cet équipement à ce client ?\";
        var result = DevExpress.ui.dialog.confirm(message, \"Equipement actif\");
        result.done(function (dialogResult) {
          if (dialogResult) {
            window.formChanged = false;
            \$('#form-add-equipement').submit();
          }
        });
        return false;
      }
    }
  }

  return true;
});
\$('body').on('submit', '#form-change-souscripteur', function (e) {
  if (\$('#new_client_souscripteur').val() != undefined && \$('#new_client_souscripteur').val() != '' || \$('#form-change-souscripteur-type').val() == 'new' && (\$('#client_nom-nouveau_souscripteur').val() != '' || \$('#client_entreprise-nouveau_souscripteur').val() != '') && \$('input[name=\"change-equipements[]\"]:checked').length != 0) {
    \$('#close-popup-changement-souscripteur').click();
    window.formChanged = false;
    return true;
  } else {
    \$('#messages-popup-change').show();
    \$('#messages-popup-change .alert').html(\$('#message-to-display').html());
    \$('#messages-popup-change .alert').show();
    return false;
  } // if (\$('#new_client_souscripteur').va)

});
\$('body').on('submit', '.submit-add-utilisateur', function (e) {
  //on check selon le type si
  var idequipement = \$(this).data('id-equipement');
  var type = \$('#form-add-utilisateur-type-' + idequipement).val();

  if (type == 'recherche') {
    if (\$('#new_client_utilisateur-' + idequipement).val() != undefined && \$('#new_client_utilisateur-' + idequipement).val() != '') {
      return true;
    } else {
      \$('#messages-popup-change').show();
      \$('#messages-popup-change .alert').html(\$('#message-to-display-recherche' + idequipement).html());
      \$('#messages-popup-change .alert').show();
      return false;
    }
  }

  if (type == 'new') {
    var type_client = \$('#type_client-' + idequipement).val();

    if (type_client == 1 && \$('#client_nom-' + idequipement).val() != undefined && \$('#client_nom-' + idequipement).val() != '' || type_client == 2 && \$('#client_entreprise-' + idequipement).val() != undefined && \$('#client_entreprise-' + idequipement).val() != '') {
      return true;
    } else {
      \$('#messages-popup-add-utilisateur-' + idequipement).show();
      \$('#messages-popup-add-utilisateur-' + idequipement + ' .alert').html(\$('#message-to-display-new' + idequipement).html());
      \$('#messages-popup-add-utilisateur-' + idequipement + ' .alert').show();
      return false;
    }
  }

  return false;
});
\$('body').on('change', '.change_equipement', function (e) {
  var form = \$(this).data('form-change');
  var name = \$(this).attr('name');
  var idequipement = \$(this).data('idequipement');
  \$(form + ' > input[name=type_change]').val(name);
  \$(form + ' > input[name=data_value]').val(\$(this).val());
  \$(form).data('target-html', \$(this).data('target'));
  \$(form).submit(); //on Ajoute un truc pour gérer l'affichage du numéro de serie complémentaire si c'est pac ou pas

  if (\$(this).val() == \"10\") {
    \$('#numero_serie_secondaire-' + idequipement).removeClass('hide');
  } else {
    \$('#numero_serie_secondaire-' + idequipement).addClass('hide');
  }
});
\$('body').on('click', '#btn-save-client', function (e) {
  e.preventDefault();
  var form = \$(this).attr('form');
  var realError = false;
  var idEquipement = \$('input[name=\"id_equipement_update\"]').val();

  if (\$('#' + form)[0].checkValidity() == false) {
    \$('#' + form)[0].reportValidity();
    \$('#' + form)[0].forEach(function (e) {
      if (e.validity.valid == false) {
        if (\$(e).data('idequipement') == idEquipement || \$(e).data('idequipement') == undefined && \$(e).is(':visible')) {
          realError = true;
        }
      }
    });
    if (realError) e.preventDefault();else \$('#' + form).submit();
  } else {
    \$('#' + form).submit();
  }
});
\$('body').on('submit', '.form-cas-particulier', function (e) {
  eval(\$(this).data('js'));
});
\$('body').on('click', '#btn-modif-client-equipement', function (e) {
  localStorage.setItem('scrollClient', window.scrollY);
});
\$('body').on('click', '.telephone-fr', function (e) {
  //si on repasse en numéro fr
  var target_mask = 'input[name=\"' + \$(this).data('target-mask') + '\"]';
  var target_value = 'input[name=\"' + \$(this).data('target-input-fr') + '\"]';

  if (\$(this).hasClass('opacity-25')) {
    \$(this).removeClass('opacity-25');
    \$(target_mask).mask('00.00.00.00.00', {
      translation: {
        '0': {
          pattern: /[0-9]/,
          recursive: false
        }
      }
    });
    \$(target_mask).attr('minlength', '14').attr('pattern', '[0-9]{2}.[0-9]{2}.[0-9]{2}.[0-9]{2}.[0-9]{2}');
    \$(target_value).val(1);
  } else {
    \$(target_value).val(0);
    \$(this).addClass('opacity-25');
    \$(target_mask).mask('9999999999');
    \$(target_mask).removeAttr('minlength').removeAttr('pattern');
  }
});
\$('body').on('click', '#btn-open-change-souscripteur', function (e) {
  \$('input[name=\"change-equipements[]\"]:checked').each(function (e) {
    \$(this).prop('checked', true);
    \$(this).attr('checked', '');
    \$(\$(this).data('change-target')).show();
  });
  \$('input[name=\"change-equipements[]\"]:not(:checked)').each(function (e) {
    \$(this).prop('checked', false);
    \$(this).removeAttr('checked');
    \$(\$(this).data('change-target')).hide();
  });
}); //gestion des règles de préferences de planification
//a partir de doit etre plus petit que avant le
//entre \"\" et \"\" doit être compris entre a partir du et avant le

\$('body').on('change', '.pref_a_partir_du', function (e) {
  var name_input_avant_le = 'input[name=date_avant_le]';
  var name_input_entre_debut = 'input[name=date_entre_debut]';
  var name_input_entre_fin = 'input[name=date_entre_fin]';
  var name_a_partir_du = 'input[name=date_a_partir_du]';

  if (!\$(this).val()) {
    if (\$(name_input_entre_debut).val() != '') \$(name_a_partir_du).datepicker('option', 'minDate', \$(name_input_entre_debut).datepicker('getDate'));else {
      \$(name_input_avant_le).datepicker('option', 'minDate', null);
      \$(name_input_entre_debut).datepicker(\"option\", \"minDate\", null);
      \$(name_input_entre_fin).datepicker(\"option\", \"minDate\", null);
      \$(name_a_partir_du).datepicker('option', 'minDate', null);
    }
  } else {
    var thisDate = \$(this).datepicker('getDate');
    if (!\$(name_input_avant_le).val()) \$(name_input_avant_le).datepicker('option', 'minDate', thisDate);
    if (!\$(name_input_entre_debut).val()) \$(name_input_entre_debut).datepicker('option', 'minDate', thisDate);
    if (!\$(name_input_entre_fin).val()) \$(name_input_entre_fin).datepicker('option', 'minDate', thisDate);
  }
});
\$('body').on('change', '.pref_avant_le', function (e) {
  var name_a_partir_du = 'input[name=date_a_partir_du]';
  var name_input_entre_debut = 'input[name=date_entre_debut]';
  var name_input_entre_fin = 'input[name=date_entre_fin]';
  var name_input_avant_le = 'input[name=date_avant_le]';

  if (!\$(this).val()) {
    if (\$(name_input_entre_fin).val() != '') \$(name_a_partir_du).datepicker('option', 'maxDate', \$(name_input_entre_fin).datepicker('getDate'));else {
      \$(name_a_partir_du).datepicker('option', 'maxDate', null);
      \$(name_input_entre_debut).datepicker(\"option\", \"maxDate\", null);
      \$(name_input_entre_fin).datepicker(\"option\", \"maxDate\", null);
      \$(name_input_avant_le).datepicker('option', 'maxDate', null);
    }
  } else {
    var thisDate = \$(this).datepicker('getDate');
    thisDate.setDate(thisDate.getDate() - 1);
    \$(name_a_partir_du).datepicker(\"option\", \"maxDate\", thisDate);
    if (!\$(name_input_entre_debut).val()) \$(name_input_entre_debut).datepicker(\"option\", \"maxDate\", thisDate);
    if (!\$(name_input_entre_fin).val()) \$(name_input_entre_fin).datepicker(\"option\", \"maxDate\", thisDate);
    if (thisDate < \$(name_a_partir_du).datepicker('getDate')) \$(name_a_partir_du).val('');
  }
});
\$('body').on('change', '.pref_entre_debut', function (e) {
  var name_a_partir_du = 'input[name=date_a_partir_du]';
  var name_input_avant_le = 'input[name=date_avant_le]';
  var name_input_entre_fin = 'input[name=date_entre_fin]';
  var name_input_entre_debut = 'input[name=date_entre_debut]';

  if (!\$(this).val()) {
    if (\$(name_a_partir_du).val() != '') \$(name_input_entre_fin).datepicker('option', 'minDate', \$(name_a_partir_du).datepicker('getDate'));else {
      \$(name_input_entre_fin).datepicker('option', 'minDate', null);
      \$(name_a_partir_du).datepicker('option', 'minDate', null);
      \$(name_input_avant_le).datepicker('option', 'minDate', null);
      \$(name_input_entre_debut).datepicker('option', 'minDate', null);
    }
  } else {
    var thisDate = \$(this).datepicker('getDate');
    \$(name_input_entre_fin).datepicker('option', 'minDate', thisDate);
    if (thisDate > \$(name_input_entre_fin).datepicker('getDate')) \$(name_input_entre_fin).val('');
    \$(name_a_partir_du).datepicker('option', 'minDate', thisDate);
    \$(name_input_avant_le).datepicker('option', 'minDate', thisDate);
  }
});
\$('body').on('change', '.pref_entre_fin', function (e) {
  var name_a_partir_du = 'input[name=date_a_partir_du]';
  var name_input_avant_le = 'input[name=date_avant_le]';
  var name_input_entre_debut = 'input[name=date_entre_debut]';
  var name_input_entre_fin = 'input[name=date_entre_fin]';

  if (!\$(this).val()) {
    if (\$(name_input_avant_le).val() != '') \$(name_input_entre_debut).datepicker('option', 'maxDate', \$(name_input_avant_le).datepicker('getDate'));else {
      \$(name_input_entre_debut).datepicker('option', 'maxDate', null);
      \$(name_a_partir_du).datepicker('option', 'maxDate', null);
      \$(name_input_avant_le).datepicker('option', 'maxDate', null);
      \$(name_input_entre_fin).datepicker('option', 'maxDate', null);
    }
  } else {
    var thisDate = \$(this).datepicker('getDate');
    \$(name_input_entre_debut).datepicker('option', 'maxDate', thisDate);
    if (thisDate < \$(name_input_entre_debut).datepicker('getDate')) \$(name_input_entre_debut).val('');
    \$(name_a_partir_du).datepicker('option', 'maxDate', thisDate);
    \$(name_input_avant_le).datepicker('option', 'maxDate', thisDate);
  }
});
\$('body').on('click', '.picto-group-contrat', function (e) {
  \$.ajax({
    method: \"GET\",
    url: \$(this).data('path'),
    dataType: \"json\",
    success: function success(data) {
      data.forEach(function (e) {
        window.open(e);
      });
    }
  });
});
\$('body').on('click', '.intervention_client', function () {
  // 1. Retirer le background de tous
  \$('.intervention_client').css('background', ''); // 2. Appliquer le background sur l'élément cliqué

  \$(this).css('background', '#F2F2F2'); // 3. Récupérer l'id de l'intervention

  var id = \$(this).data('id'); // 4. Charger le template via AJAX

  \$.ajax({
    url: '/equipement/intervention/result/' + id,
    type: 'GET',
    success: function success(html) {
      \$('#result_intervention_client').html(html);
    }
  });
  \$.ajax({
    url: '/equipement/intervention/facturation/' + id,
    // à adapter selon ta route
    type: 'GET',
    success: function success(html) {
      \$('#result_intervention_client_facturation').html(html);
    }
  });
});
document.removeEventListener('ready turbo:load', loadClient);
\$(document).on('ready turbo:load', loadClient);

function toggleDateFormatForMultipleInputs(dateInputIds, checkboxId) {
  var formatCheckbox = document.getElementById(checkboxId);
  var newFormat = \$('#' + checkboxId)[0].checked ? 'dd MM' : 'dd/mm/yy';
  dateInputIds.forEach(function (dateInputId) {
    \$('#' + dateInputId).datepicker('option', 'dateFormat', newFormat);
  });
  formatCheckbox.addEventListener('change', function () {
    var newFormat = \$('#' + checkboxId)[0].checked ? 'dd MM' : 'dd/mm/yy';
    dateInputIds.forEach(function (dateInputId) {
      \$('#' + dateInputId).datepicker('option', 'dateFormat', newFormat);
    });
  });
}

function loadClient(e) {
  window.formChanged = false;
  var scrollValue = localStorage.getItem('scrollClient'); // var sidebarminim = localStorage.getItem('sidebarminim');

  if (scrollValue > 0) {
    setTimeout(function () {
      \$('html, body').animate({
        scrollTop: scrollValue
      });
    }, 750);
    localStorage.setItem('scrollClient', 0);
  }

  \$('.input-datepicker').each(function () {
    var format = \$(this).data('format');
    var minDate = \$(this).data('min');
    var maxDate = \$(this).data('max');
    \$(this).datepicker({
      format: format,
      language: 'fr',
      showButtonPanel: true,
      minDate: minDate,
      maxDate: maxDate,
      clearText: \"Effacer\",
      beforeShow: function beforeShow(input, inst) {
        setTimeout(function () {
          var buttonPane = \$(inst.dpDiv).find('.ui-datepicker-buttonpane'); // Ajouter un bouton Effacer

          \$('<button>', {
            text: 'Effacer',
            click: function click() {
              \$(input).val(''); // Vider l'input

              \$(input).datepicker('setDate', null); // Réinitialiser le Datepicker

              \$(input).trigger('change');
            }
          }).appendTo(buttonPane).addClass('ui-datepicker-clear ui-state-default ui-priority-primary ui-corner-all');
        }, 1);
      }
    });
  });
  toggleDateFormatForMultipleInputs(['planification_entre_debut', 'planification_entre_fin'], 'inclusion_recurrente');
  toggleDateFormatForMultipleInputs(['date_apres_le'], 'apres_recurrente');
  toggleDateFormatForMultipleInputs(['date_avant_le'], 'avant_recurrente'); // if (sidebarminim == \"true\") {
  //     \$('.toggle-sidebar-client').click();
  // }

  \$('.input_tel:not(.not_fr)').mask('00.00.00.00.00', {
    translation: {
      '0': {
        pattern: /[0-9]/,
        recursive: false
      }
    }
  });
  \$('.input_tel.not_fr').mask('9999999999');
  \$('.input_numero_serie').mask('SSSS SSSSSS SSSS', {
    translation: {
      'S': {
        pattern: /[A-Za-z0-9]/
      }
    }
  });
  localStorage.setItem('activeTab', '');
  \$('.form_resilier_contrat').each(function (e) {
    \$(this)[0].reset();
  });

  if (\$('#type_client option:selected').val() == \"2\") {
    \$('#categorie_pro').parent().removeClass('hide');
    \$('#client_entreprise').parent().removeClass('hide');
    \$('#equipement_tva').val(4);
  }

  \$('input,select').change(function () {
    if (!\$(this).data('formchanged')) {
      window.formChanged = true;
    }
  });
  document.removeEventListener(\"turbo:before-visit\", unsaveChanged);
  document.addEventListener(\"turbo:before-visit\", unsaveChanged);
  document.addEventListener(\"turbo:link\", function (event) {
    window.formChanged = false;
  });
  if (\$('select[name=equipement_zone_1] option:selected').val() == 6) \$(\$('select[name=equipement_zone_1]').data('target')).css('visibility', 'inherit');
  if (\$('select[name=equipement_zone_2] option:selected').val() == 6) \$(\$('select[name=equipement_zone_2]').data('target')).css('visibility', 'inherit');
  if (\$('select[name=equipement_zone_3] option:selected').val() == 6) \$(\$('select[name=equipement_zone_3]').data('target')).css('visibility', 'inherit');
  \$('input[name=client_adresse_auto]').autocomplete({
    source: function source(request, response) {
      \$.ajax({
        method: \"GET\",
        url: 'https://api-adresse.data.gouv.fr/search/?q=' + \$(\"input[name='client_adresse_auto']\").val() + '&type=housenumber&autocomplete=1&limit10&lat&lon',
        dataType: \"json\",
        success: function success(data) {
          response(\$.map(data.features, function (item) {
            var adresses = []; // Ici on est obligé d'ajouter les CP dans un array pour ne pas avoir plusieurs fois le même

            if (\$.inArray(item.properties.label, adresses) == -1 && item.properties.housenumber && item.properties.postcode) {
              adresses.push(item.properties.label);
              return {
                label: item.properties.label,
                city: item.properties.city,
                postcode: item.properties.postcode,
                name: item.properties.name,
                coordinates: item.geometry.coordinates
              };
            }
          }));
        }
      });
    },
    // On remplit aussi la ville
    select: function select(event, ui) {
      var id_site = \$(this).data('idsite');
      var element = \$(this);
      \$(\"input[name='souscripteur_code_postal']\").val(ui.item.postcode);
      \$(\"input[name='souscripteur_ville']\").val(ui.item.city);
      \$(\"input[name='souscripteur_adresse']\").val(ui.item.name);
      \$(\"input[name='souscripteur_coordinates']\").val(ui.item.coordinates);

      if (id_site != '') {
        \$.ajax({
          method: \"POST\",
          url: '/secteur/compare/secteur_site/' + id_site + '',
          dataType: \"json\",
          data: {
            \"coordinates\": ui.item.coordinates
          },
          success: function success(data) {
            if (data.error == true) {
              \$(element).next().show();
              \$(element).next().addClass('alert alert-danger');
              \$(element).next().css('display', 'flex');
              \$(element).next().css('align-items', 'center');
              \$(element).next().html('<i class=\"fa fa-warning\"></i>' + data.message);
            } else {
              \$(element).next().removeClass('alert alert-danger');
              \$(element).next().hide();
            }
          }
        });
      }
    }
  });
  \$('input[name=equipement_localisation_add]').autocomplete({
    source: function source(request, response) {
      \$.ajax({
        method: \"GET\",
        url: 'https://api-adresse.data.gouv.fr/search/?q=' + \$(\"input[name='equipement_localisation_add']\").val() + '&type=housenumber&autocomplete=1&limit=10',
        dataType: \"json\",
        success: function success(data) {
          response(\$.map(data.features, function (item) {
            var adresses = []; // Ici on est obligé d'ajouter les CP dans un array pour ne pas avoir plusieurs fois le même

            if (\$.inArray(item.properties.label, adresses) == -1 && item.properties.housenumber) {
              adresses.push(item.properties.label);
              return {
                label: item.properties.label,
                city: item.properties.city,
                postcode: item.properties.postcode,
                name: item.properties.name,
                coordinates: item.geometry.coordinates
              };
            }
          }));
        }
      });
    },
    // On remplit aussi la ville
    select: function select(event, ui) {
      var element = \$(this);
      \$(\"input[name='code_postal_add']\").val(ui.item.postcode);
      \$(\"input[name='ville_add']\").val(ui.item.city);
      \$(\"input[name='adresse_add']\").val(ui.item.name);
      \$(\"input[name='coordinates_add']\").val(ui.item.coordinates);
    }
  });
  \$('body').on('click', '.btn-cp', function (e) {
    \$('.btn-cp').removeClass('bg-vert');
    \$(this).addClass('bg-vert');
    var id_equipement = \$(this).data('equipement');

    if (\$(this).attr('id') == 'btn-chantier-' + id_equipement) {
      \$('#cp-num-chantier-' + id_equipement).prop('required', true);
      \$('#salarie_chantier-' + id_equipement).val('chantier');
    } else {
      \$('#cp-num-chantier-' + id_equipement).prop('required', false);
      \$('#salarie_chantier-' + id_equipement).val('salarie');
    }
  });
  \$('body').on('click', '.detail-client', function (e) {
    var id_select = \$(this).data('select-id');
    var value = \$('#' + id_select).val();
    \$(this).data('content-template-ajax', '/clients/detail_client/' + value);
  });
  \$('body').on('click', '#salarie-frisquet', function (e) {
    if (\$(this).attr('disabled')) {
      e.preventDefault();
    } else {
      if (\$(this).hasClass('active')) {
        \$(this).removeClass('active');
        \$('input[name=salarie_frisquet]').val(false);
      } else {
        \$(this).addClass('active');
        \$('input[name=salarie_frisquet]').val(true);
      }
    }
  });
  \$('body').on('click', '#client-chantier', function (e) {
    if (\$(this).attr('disabled')) {
      e.preventDefault();
    } else {
      if (\$(this).hasClass('active')) {
        \$(this).removeClass('active');
        \$('input[name=equipement_chantier]').prop('disabled', true);
        \$('input[name=equipement_chantier]').val('');
      } else {
        \$(this).addClass('active');
        \$('input[name=equipement_chantier]').prop('disabled', false);
      }
    }
  });
  \$(document).click(function (event) {
    // Vérifiez si le clic est en dehors de #myElement
    if (\$(event.target).attr('id') != 'show-equipements' && \$(event.target).parent().attr('id') != 'show-equipements') {
      if (!\$(event.target).closest('#list-equipements').length) {
        // Cacher l'élément si il est visible
        if (!\$('#list-equipements').is(':hidden')) {
          \$('#list-equipements').hide();
        }
      }
    }
  });
  \$('body').on('click', '#show-equipements', function (e) {
    if (!\$('#list-equipements').is(':hidden')) {
      \$('#list-equipements').hide();
    } else {
      \$('#list-equipements').show();
    }
  });
  \$('#list-equipements').click(function (event) {
    event.stopPropagation();
  });
  \$('body').on('click', '#reset-preferences', function (e) {
    e.preventDefault();
    \$('#form-preferences-planification')[0].reset();
    \$('.planification').val('');
    \$('#form-preferences-planification select').each(function (e) {
      \$(this).find('option:first').prop('selected', true);
    });
    \$('#form-preferences-planification input[type=checkbox]').each(function (e) {
      \$(this).prop('checked', false);
      \$(this).removeAttr('checked');
    });
    \$('.input-datepicker').each(function () {
      \$(this).datepicker('setDate', null);
      \$(this).datepicker('option', 'minDate', null);
      \$(this).datepicker('option', 'maxDate', null);
    });
  });
  \$('body').on('click', '#submit-gestion-pref', function (e) {
    if (!\$('input[name=\"equipement_dupliquer[]\"]').is(':checked')) {
      e.preventDefault();
      return false;
    }
  }); //gestion recherche client dans souscripteur et utilisateur

  \$('#popup-changement-souscripteur input[name=numero_client]').mask('00 00 00000', {
    translation: {
      '0': {
        pattern: /[0-9]/,
        recursive: false
      }
    }
  });
  \$('#popup-add-utilisateur input[name=numero_client]').mask('00 00 00000', {
    translation: {
      '0': {
        pattern: /[0-9]/,
        recursive: false
      }
    }
  });
  \$('.input_affecter_equipement').prop('disabled', 'disabled');
  \$('.input_creer_client').prop('disabled', 'disabled');
  \$('.input_affecter_equipement').on('change', function (e) {
    var form = '#' + \$(this).attr('form');

    if (\$(this).is(':checked')) {
      \$(form + ' .span_affecter_equipement').addClass('color-primary');
      \$(form + ' .nouveau_client_creation').hide();
      \$(form + ' .nouveau_client_recherche').show();
      \$(form + ' .submit-form').removeAttr('disabled');
      \$(form + ' input[name=type_add]').val('recherche');
      \$(form + ' .input_creer_client').prop('checked', false);
      \$(form + ' .span_creer_client').removeClass('color-primary');
    } else {
      \$(form + ' .submit-form').attr('disabled');
      \$(form + ' .submit-form').prop('disabled', 'disabled');
      \$(form + ' .span_affecter_equipement').removeClass('color-primary');
      \$(form + ' .nouveau_client_recherche').hide();
      \$(form + ' input[name=type_add]').val('');
    }
  });
  \$('.input_creer_client').on('change', function (e) {
    if (\$(this).is(':checked')) {
      var form = '#' + \$(this).attr('form');
      \$(form + ' .span_creer_client').addClass('color-primary');
      \$(form + ' .submit-form').removeAttr('disabled');
      \$(form + ' input[name=type_add]').val('new');
      \$(form + ' .nouveau_client_creation--title').text('Numero Client : -');

      if (\$(form + ' input[name=client_nom]').is(':visible')) {
        \$(form + ' .nouveau_client_creation--nom').text(\$(form + ' input[name=etat_civil]:selected').text() + ' ' + \$(form + ' input[name=client_nom').val() + ' ' + \$(form + ' input[name=client_prenom').val());
      } else {
        \$(form + ' .nouveau_client_creation--nom').text(\$(form + ' input[name=client_entreprise').val());
      }

      \$(form + ' .nouveau_client_creation--emails').text(\$(form + ' input[name=email').val());
      \$(form + ' .nouveau_client_creation--adresse').text('');
      \$(form + ' .nouveau_client_creation').show();
      \$(form + ' .nouveau_client_recherche').hide();
      \$(form + ' input[name=input_affecter_equipement]').prop('checked', false);
      \$(form + ' .span_affecter_equipement').removeClass('color-primary');
    } else {
      \$(form + ' .span_creer_client').removeClass('color-primary');
      \$(form + ' .nouveau_client_creation').hide();
      \$(form + ' .submit-form').attr('disabled');
      \$(form + ' .submit-form').prop('disabled', 'disabled');
      \$(form + ' input[name=type_add]').val('');
    }
  });
  \$('body').on('click', '#reset-form-change-souscripteur,#reset-form-change-utilisateur', function (e) {
    \$('#form-changement-souscripteur')[0].reset();
    \$('#form-add-utilisateur')[0].reset();
    \$('.result-souscripteur-client').hide();
    \$('.nouveau_client_recherche').hide();
    \$('.nouveau_client_creation').hide();
    \$('.input_affecter_equipement').prop('checked', false);
    \$('.input_creer_client').prop('checked', false);
  });
  var currentRequest = null;
  var debounceTimer;
  \$('body').on('input', 'input[name=client_nom],input[name=client_entreprise],input[name=client_prenom],input[name=email],input[name=numero_client],select[name=categorie_pro]', function (e) {
    var nom_form = '#' + \$(this).attr('form'); // Annule l'événement précédent s'il est encore en cours

    clearTimeout(debounceTimer);

    if (\$(nom_form + ' select[name=type_client]').val() == 1 && \$(nom_form + ' input[name=client_nom]').val().trim().length > 2 || \$(nom_form + ' select[name=type_client]').val() == 2 && \$(nom_form + ' input[name=client_entreprise]').val().trim().length > 2 && \$(nom_form + ' select[name=categorie_pro]').val() != '') {
      \$(nom_form + ' input[name=input_creer_client]').removeAttr('disabled');
    } else {
      \$(nom_form + ' input[name=input_creer_client]').attr('disabled');
      \$(nom_form + ' input[name=input_creer_client]').prop('disabled', 'disabled');
    }

    var formData = \$('#' + \$(this).attr('form')).serialize();
    debounceTimer = setTimeout(function () {
      if (\$(nom_form + ' input[name=client_nom]').val().trim().length > 2 || \$(nom_form + ' input[name=client_prenom]').val().trim().length > 2 || \$(nom_form + ' input[name=email]').val().trim().length > 2 || \$(nom_form + ' input[name=client_entreprise]').val().trim().length > 2 || \$(nom_form + ' input[name=numero_client]').val().trim().length > 2) {
        // Annuler la requête précédente si elle est toujours en cours
        if (currentRequest != null) {
          currentRequest.abort(); // Annule la requête précédente
        }

        currentRequest = \$.ajax({
          method: \"POST\",
          url: '/clients/recherche',
          dataType: \"json\",
          data: formData,
          processData: false,
          success: function success(datas) {
            if (datas.source) {
              \$(nom_form + ' .result-souscripteur-client').css('max-height', '229px').css('min-height', '229px');
              \$(nom_form + ' input[name=input_affecter_equipement]').prop('disabled', 'disabled');
              \$(nom_form + ' .result-souscripteur-client').show();
            } else {
              \$(nom_form + ' input[name=input_affecter_equipement]').prop('disabled', 'disabled');
              \$(nom_form + ' input[name=input_affecter_equipement]').prop('checked', false);
              \$(nom_form + ' .nouveau_client_recherche').hide();
              \$(nom_form + ' .nouveau_client_recherche--title').text('');
              \$(nom_form + ' .nouveau_client_recherche--nom').text('');
              \$(nom_form + ' .nouveau_client_recherche--adresse').text('');
              \$(nom_form + ' .nouveau_client_recherche--emails').text('');
            }

            \$(nom_form + ' .result-souscripteur-client').dxDataGrid({
              dataSource: datas.source,
              columns: datas.colonnes,
              columnAutoWidth: true,
              showBorders: true,
              onInitialized: function onInitialized(e) {
                e.component.beginCustomLoading();
              },
              onContentReady: function onContentReady(e) {
                e.component.endCustomLoading();
              },
              selection: {
                mode: 'single'
              },
              onSelectionChanged: function onSelectionChanged(e) {
                // Handler of the \"selectionChanged\" event
                var allSelectedRowsData = e.selectedRowsData;

                if (allSelectedRowsData.length != 0) {
                  \$(nom_form + ' input[name=input_affecter_equipement]').removeAttr('disabled');
                  \$(nom_form + ' .nouveau_client_recherche--title').text('Numero Client : ' + allSelectedRowsData[0].numero_client);
                  \$(nom_form + ' .nouveau_client_recherche--nom').text(allSelectedRowsData[0].nom_complet);
                  \$(nom_form + ' .nouveau_client_recherche--adresse').text(allSelectedRowsData[0].adresse);
                  \$(nom_form + ' .nouveau_client_recherche--emails').text(allSelectedRowsData[0].email);
                  \$(nom_form + ' input[name=new_client_souscripteur]').val(allSelectedRowsData[0].id_client);

                  if (!\$(nom_form + ' input[name=input_affecter_equipement').is(':checked')) {
                    \$(nom_form + ' input[name=input_affecter_equipement]').click();
                  }
                }
              }
            });
          }
        });
      } else {
        if (\$(nom_form + ' .result-souscripteur-client').is(':visible')) {
          var grid = \$(nom_form + \" .result-souscripteur-client\").dxDataGrid(\"instance\");
          grid.option(\"dataSource\", []);
        }
      }
    }, 300);
  });
  \$('body').on('change', 'select[name=planifier_preference], select[name=planifier_partie_journee], select[name=planifier_agent]', function () {
    checkPreferencePlannification();
  });
  var lockId = \$('#lock-id').val();

  function checkLockExpiration() {
    if (lockId) {
      \$.ajax({
        url: \"/check_expiration_lock/\".concat(lockId),
        // Modifie l'URL selon ta route Symfony
        method: 'GET',
        dataType: 'json',
        success: function success(response) {
          if (response.expired) {
            //afficher la popup du choix de fermer la fiche ou raffraichir la page client
            // window.location.reload();
            if (\$('#popup-lock-expired-' + \$('#id_equipement_update').val()).is(':hidden')) {
              var popup_lock = \$('#popup-lock-expired-' + \$('#id_equipement_update').val()).dxPopup({
                width: \"auto\",
                height: \"auto\",
                maxHeight: \"90vh\",
                container: \".dx-viewport\",
                showTitle: true,
                title: \"Inactivité\",
                visible: false,
                dragEnabled: true,
                dragOutsideBoundary: true,
                closeOnOutsideClick: false,
                showCloseButton: true,
                elementAttr: {
                  \"class\": \"nobutton dark_shadow\"
                },
                position: {
                  at: \"center\",
                  my: \"center\",
                  collision: 'fit'
                }
              }).dxPopup('instance');
              \$('#popup-lock-expired-' + \$('#id_equipement_update').val()).show();
              popup_lock.show();
            }
          }
        },
        error: function error() {
          console.error('Erreur lors de la vérification du lock.');
        }
      });
    } else {
      console.log('pas de lock');
    }
  }

  function checkPreferencePlannification() {
    if (\$('select[name=planifier_preference] option:selected').val() == 'Indifférent') {
      \$('input[name=\"planifier_jour[]\"]').attr('disabled');
      \$('input[name=\"planifier_jour[]\"]').prop('disabled', true);
      \$('input[name=\"planifier_jour[]\"]').prop('checked', false);
    } else {
      \$('input[name=\"planifier_jour[]\"]').removeAttr('disabled');
      \$('input[name=\"planifier_jour[]\"]').prop('disabled', false);
    }

    if (\$('select[name=planifier_partie_journee] option:selected').val() == 'Indifférent') {
      \$('input[name=premiere_visite]').prop('disabled', true);
      \$('input[name=premiere_visite]').attr('disabled');
      \$('input[name=premiere_visite]').prop('checked', false);
      \$('select[name=planifier_plage_horaire] option:first').prop('selected', true);
      \$('select[name=planifier_plage_horaire]').prop('disabled', true);
      \$('select[name=planifier_plage_horaire]').attr('disabled');
    } else {
      \$('input[name=premiere_visite]').removeAttr('disabled');
      \$('input[name=premiere_visite]').prop('disabled', false);
      \$('select[name=planifier_plage_horaire]').prop('disabled', false);
      \$('select[name=planifier_plage_horaire]').removeAttr('disabled');
    }

    if (\$('select[name=planifier_agent] option:selected').val() == 'Indifférent') {
      \$('select[name=preference_agent]').prop('disabled', true);
      \$('select[name=preference_agent] option:first').prop('selected', true);
      \$('select[name=preference_agent]').attr('disabled');
    } else {
      \$('select[name=preference_agent]').prop('disabled', false);
      \$('select[name=preference_agent]').removeAttr('disabled');
    }
  }

  setInterval(checkLockExpiration, 60000);
  checkPreferencePlannification(); //on selectionne la premiere intervention si yen a une

  if (\$('.intervention_client').length > 0) {
    \$('.intervention_client').first().trigger('click');
  }
}

/***/ })

},
/******/ __webpack_require__ => { // webpackRuntimeModules
/******/ \"use strict\";
/******/ 
/******/ var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
/******/ __webpack_require__.O(0, [\"vendors-node_modules_core-js_internals_engine-user-agent_js-node_modules_core-js_internals_ex-b41e05\",\"vendors-node_modules_jquery_dist_jquery_js\",\"vendors-node_modules_core-js_internals_add-to-unscopables_js-node_modules_core-js_internals_a-5c631b\",\"vendors-node_modules_core-js_modules_es_array_find_js-node_modules_core-js_modules_es_array_f-a4378f\"], () => (__webpack_exec__(\"./assets/js/client.js\")));
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ }
]);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvanMvY2xpZW50LmpzIl0sIm5hbWVzIjpbIiQiLCJyZXF1aXJlIiwid2luZG93IiwiZm9ybUNoYW5nZWQiLCJ1bnNhdmVDaGFuZ2VkIiwiZXZlbnQiLCJhY3RpdmVFbGVtZW50IiwibmF2aWdhdG9yIiwidXNlckFnZW50IiwiaW5kZXhPZiIsImRvY3VtZW50Iiwib3JpZ2luYWxUYXJnZXQiLCJpZCIsImhhc0NsYXNzIiwiY29uZmlybSIsInByZXZlbnREZWZhdWx0IiwiaWRsb2NrIiwidmFsIiwieGhyIiwiWE1MSHR0cFJlcXVlc3QiLCJvcGVuIiwic2VuZCIsImFkZEV2ZW50TGlzdGVuZXIiLCJvbiIsImUiLCJpcyIsInNob3ciLCJoaWRlIiwiZGF0YWdyaWRBZ2VudFF1YWxpZmljYXRpb24iLCJkeERhdGFHcmlkIiwiYWRkUm93IiwicGFyZW50IiwicmVtb3ZlQ2xhc3MiLCJhZGRDbGFzcyIsImRhdGEiLCJjc3MiLCJ0YXJnZXRHcmlkIiwiZm9ybSIsImF0dHIiLCJpZF9lcXVpcGVtZW50IiwidGFyZ2V0IiwiaHRtbF9ncmlkIiwic3VibWl0IiwiY2xpY2tlZEluZGV4IiwibmV3VmFsdWUiLCJvbGRWYWx1ZSIsInZhbHVlIiwib3B0aW9ucyIsInRleHQiLCJsZW5ndGgiLCJpbmNsdWRlcyIsInJlbW92ZSIsInRyIiwiY3JlYXRlRWxlbWVudCIsImlubmVySFRNTCIsImFwcGVuZCIsIm91dGVySFRNTCIsImN1cnJlbnRfdGFyZ2V0IiwiJHNlbGVjdGVkIiwibGluayIsIm1lc3NhZ2UiLCJyZXN1bHQiLCJEZXZFeHByZXNzIiwidWkiLCJkaWFsb2ciLCJkb25lIiwiZGlhbG9nUmVzdWx0IiwidW5kZWZpbmVkIiwiY2xpY2siLCJodG1sIiwiaWRlcXVpcGVtZW50IiwidHlwZSIsInR5cGVfY2xpZW50IiwibmFtZSIsInJlYWxFcnJvciIsImlkRXF1aXBlbWVudCIsImNoZWNrVmFsaWRpdHkiLCJyZXBvcnRWYWxpZGl0eSIsImZvckVhY2giLCJ2YWxpZGl0eSIsInZhbGlkIiwiZXZhbCIsImxvY2FsU3RvcmFnZSIsInNldEl0ZW0iLCJzY3JvbGxZIiwidGFyZ2V0X21hc2siLCJ0YXJnZXRfdmFsdWUiLCJtYXNrIiwidHJhbnNsYXRpb24iLCJwYXR0ZXJuIiwicmVjdXJzaXZlIiwicmVtb3ZlQXR0ciIsImVhY2giLCJwcm9wIiwibmFtZV9pbnB1dF9hdmFudF9sZSIsIm5hbWVfaW5wdXRfZW50cmVfZGVidXQiLCJuYW1lX2lucHV0X2VudHJlX2ZpbiIsIm5hbWVfYV9wYXJ0aXJfZHUiLCJkYXRlcGlja2VyIiwidGhpc0RhdGUiLCJzZXREYXRlIiwiZ2V0RGF0ZSIsImFqYXgiLCJtZXRob2QiLCJ1cmwiLCJkYXRhVHlwZSIsInN1Y2Nlc3MiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwibG9hZENsaWVudCIsInRvZ2dsZURhdGVGb3JtYXRGb3JNdWx0aXBsZUlucHV0cyIsImRhdGVJbnB1dElkcyIsImNoZWNrYm94SWQiLCJmb3JtYXRDaGVja2JveCIsImdldEVsZW1lbnRCeUlkIiwibmV3Rm9ybWF0IiwiY2hlY2tlZCIsImRhdGVJbnB1dElkIiwic2Nyb2xsVmFsdWUiLCJnZXRJdGVtIiwic2V0VGltZW91dCIsImFuaW1hdGUiLCJzY3JvbGxUb3AiLCJmb3JtYXQiLCJtaW5EYXRlIiwibWF4RGF0ZSIsImxhbmd1YWdlIiwic2hvd0J1dHRvblBhbmVsIiwiY2xlYXJUZXh0IiwiYmVmb3JlU2hvdyIsImlucHV0IiwiaW5zdCIsImJ1dHRvblBhbmUiLCJkcERpdiIsImZpbmQiLCJ0cmlnZ2VyIiwiYXBwZW5kVG8iLCJyZXNldCIsImNoYW5nZSIsImF1dG9jb21wbGV0ZSIsInNvdXJjZSIsInJlcXVlc3QiLCJyZXNwb25zZSIsIm1hcCIsImZlYXR1cmVzIiwiaXRlbSIsImFkcmVzc2VzIiwiaW5BcnJheSIsInByb3BlcnRpZXMiLCJsYWJlbCIsImhvdXNlbnVtYmVyIiwicG9zdGNvZGUiLCJwdXNoIiwiY2l0eSIsImNvb3JkaW5hdGVzIiwiZ2VvbWV0cnkiLCJzZWxlY3QiLCJpZF9zaXRlIiwiZWxlbWVudCIsImVycm9yIiwibmV4dCIsImlkX3NlbGVjdCIsImNsb3Nlc3QiLCJzdG9wUHJvcGFnYXRpb24iLCJjdXJyZW50UmVxdWVzdCIsImRlYm91bmNlVGltZXIiLCJub21fZm9ybSIsImNsZWFyVGltZW91dCIsInRyaW0iLCJmb3JtRGF0YSIsInNlcmlhbGl6ZSIsImFib3J0IiwicHJvY2Vzc0RhdGEiLCJkYXRhcyIsImRhdGFTb3VyY2UiLCJjb2x1bW5zIiwiY29sb25uZXMiLCJjb2x1bW5BdXRvV2lkdGgiLCJzaG93Qm9yZGVycyIsIm9uSW5pdGlhbGl6ZWQiLCJjb21wb25lbnQiLCJiZWdpbkN1c3RvbUxvYWRpbmciLCJvbkNvbnRlbnRSZWFkeSIsImVuZEN1c3RvbUxvYWRpbmciLCJzZWxlY3Rpb24iLCJtb2RlIiwib25TZWxlY3Rpb25DaGFuZ2VkIiwiYWxsU2VsZWN0ZWRSb3dzRGF0YSIsInNlbGVjdGVkUm93c0RhdGEiLCJudW1lcm9fY2xpZW50Iiwibm9tX2NvbXBsZXQiLCJhZHJlc3NlIiwiZW1haWwiLCJpZF9jbGllbnQiLCJncmlkIiwib3B0aW9uIiwiY2hlY2tQcmVmZXJlbmNlUGxhbm5pZmljYXRpb24iLCJsb2NrSWQiLCJjaGVja0xvY2tFeHBpcmF0aW9uIiwiZXhwaXJlZCIsInBvcHVwX2xvY2siLCJkeFBvcHVwIiwid2lkdGgiLCJoZWlnaHQiLCJtYXhIZWlnaHQiLCJjb250YWluZXIiLCJzaG93VGl0bGUiLCJ0aXRsZSIsInZpc2libGUiLCJkcmFnRW5hYmxlZCIsImRyYWdPdXRzaWRlQm91bmRhcnkiLCJjbG9zZU9uT3V0c2lkZUNsaWNrIiwic2hvd0Nsb3NlQnV0dG9uIiwiZWxlbWVudEF0dHIiLCJwb3NpdGlvbiIsImF0IiwibXkiLCJjb2xsaXNpb24iLCJjb25zb2xlIiwibG9nIiwic2V0SW50ZXJ2YWwiLCJmaXJzdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElB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QXdDLFVBQXhDLEVBQW1ELElBQW5EO0FBQ0E3RixPQUFDLENBQUMsNENBQUQsQ0FBRCxDQUFnRDZGLElBQWhELENBQXFELFVBQXJELEVBQWdFLElBQWhFO0FBQ0E3RixPQUFDLENBQUMsK0JBQUQsQ0FBRCxDQUFtQ3NDLElBQW5DLENBQXdDLFVBQXhDO0FBQ0gsS0FKRCxNQUlPO0FBQ0h0QyxPQUFDLENBQUMsK0JBQUQsQ0FBRCxDQUFtQzZGLElBQW5DLENBQXdDLFVBQXhDLEVBQW1ELEtBQW5EO0FBQ0E3RixPQUFDLENBQUMsK0JBQUQsQ0FBRCxDQUFtQzJGLFVBQW5DLENBQThDLFVBQTlDO0FBQ0g7QUFDSjs7QUFDRGdJLGFBQVcsQ0FBQ3RCLG1CQUFELEVBQXNCLEtBQXRCLENBQVg7QUFDQUYsK0JBQTZCLEdBeGZWLENBMGZuQjs7QUFDQSxNQUFJbk0sQ0FBQyxDQUFDLHNCQUFELENBQUQsQ0FBMEJpRCxNQUExQixHQUFtQyxDQUF2QyxFQUEwQztBQUN0Q2pELEtBQUMsQ0FBQyxzQkFBRCxDQUFELENBQTBCNE4sS0FBMUIsR0FBa0N0RixPQUFsQyxDQUEwQyxPQUExQztBQUNIO0FBQ0osQyIsImZpbGUiOiJjbGllbnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCAkID0gcmVxdWlyZShcImpxdWVyeVwiKTtcclxud2luZG93LmZvcm1DaGFuZ2VkID0gZmFsc2U7XHJcbmZ1bmN0aW9uIHVuc2F2ZUNoYW5nZWQoZXZlbnQpIHtcclxuICAgIHZhciBhY3RpdmVFbGVtZW50ID0gbnVsbDtcclxuICAgIGlmIChuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoXCJDaHJvbWVcIikgIT09IC0xKSB7XHJcbiAgICAgICAgYWN0aXZlRWxlbWVudCA9ICBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICBhY3RpdmVFbGVtZW50ID0gIGV2ZW50Lm9yaWdpbmFsVGFyZ2V0LmFjdGl2ZUVsZW1lbnQ7XHJcbiAgICB9XHJcbiAgICBpZiAod2luZG93LmZvcm1DaGFuZ2VkICYmICghYWN0aXZlRWxlbWVudCB8fCAoYWN0aXZlRWxlbWVudC5pZCAhPSAnYnRuLXNhdmUtY2xpZW50JyAmJiBhY3RpdmVFbGVtZW50LmlkICE9ICdzYXZlLXByZWYtcGxhbmlmaWNhdGlvbicgJiYgISQoYWN0aXZlRWxlbWVudCkuaGFzQ2xhc3MoJ2J0bi1zdWNjZXNzJykpKSkge1xyXG4gICAgICAgIGlmICghd2luZG93LmNvbmZpcm0oXCJBdHRlbnRpb24sIHNpIHZvdXMgcXVpdHRlciBsYSBwYWdlLCB2b3MgbW9kaWZpY2F0aW9ucyBlbiBjb3VycyBuZSBzZXJvbnQgcGFzIHNhdXZlZ2FyZMOpZXNcIikpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy8gbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3NpZGViYXJtaW5pbScsIGZhbHNlKTtcclxuICAgICAgICAgICAgd2luZG93LmZvcm1DaGFuZ2VkID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy9vbiBzdXBwcmltZSBsZSBsb2NrIHN1ciBmZXJtZXR1cmUgZGUgbCdvbmdsZXRcclxuICAgIHZhciBpZGxvY2sgPSAkKCcjbG9jay1pZCcpLnZhbCgpO1xyXG4gICAgaWYgKGlkbG9jaykge1xyXG4gICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcclxuICAgICAgICB4aHIub3BlbihcIkRFTEVURVwiLCBcIi9sb2NrL1wiICsgaWRsb2NrLCBmYWxzZSk7IC8vIGZhbHNlID0gc3luY2hyb25lXHJcbiAgICAgICAgeGhyLnNlbmQoKTtcclxuICAgIH1cclxufVxyXG53aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignYmVmb3JldW5sb2FkJywgdW5zYXZlQ2hhbmdlZCk7XHJcbiQoJ2JvZHknKS5vbignY2hhbmdlJywnI2NoZWNrX21lbWVfYWRyZXNzZV9lcXVpcGVtZW50X2V4aXN0YW50JywgZnVuY3Rpb24oZSkge1xyXG4gICAgaWYoJCh0aGlzKS5pcygnOmNoZWNrZWQnKSkge1xyXG4gICAgICAgICQoJyNsaXN0X2VxdWlwZW1lbnRfZXhpc3RhbnQnKS5zaG93KCk7XHJcbiAgICAgICAgJCgnI2FkZF9lcXVpcGVtZW50X25ldycpLmhpZGUoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgJCgnI2xpc3RfZXF1aXBlbWVudF9leGlzdGFudCcpLmhpZGUoKTtcclxuICAgICAgICAkKCcjZXF1aXBlbWVudF9leGlzdGFudF9zZWxlY3QnKS52YWwoJycpO1xyXG4gICAgICAgICQoJyNhZGRfZXF1aXBlbWVudF9uZXcnKS5zaG93KCk7XHJcbiAgICB9XHJcbn0pXHJcbiQoJ2JvZHknKS5vbignY2xpY2snLCAnI2FkZF9hZ2VudF9xdWFsaWZpY2F0aW9uJywgZnVuY3Rpb24gKGUpIHtcclxuICAgIHZhciBkYXRhZ3JpZEFnZW50UXVhbGlmaWNhdGlvbiA9ICQoJyNhZ2VudC1ncmlkLXF1YWxpZmljYXRpb24nKS5keERhdGFHcmlkKCdpbnN0YW5jZScpO1xyXG4gICAgZGF0YWdyaWRBZ2VudFF1YWxpZmljYXRpb24uYWRkUm93KCk7XHJcbn0pO1xyXG5cclxuJCgnYm9keScpLm9uKCdjaGFuZ2UnLCAnI3R5cGVfY2xpZW50JywgZnVuY3Rpb24oZSkge1xyXG4gICAgaWYgKCQodGhpcykudmFsKCkgPT0gXCIyXCIpIHtcclxuICAgICAgICAkKCcjY2F0ZWdvcmllX3BybycpLnBhcmVudCgpLnJlbW92ZUNsYXNzKCdoaWRlJyk7XHJcbiAgICAgICAgJCgnI2NsaWVudF9lbnRyZXByaXNlJykucGFyZW50KCkucmVtb3ZlQ2xhc3MoJ2hpZGUnKTtcclxuICAgICAgICAkKCcjZXF1aXBlbWVudF90dmEnKS52YWwoJzQnKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgICQoJyNjYXRlZ29yaWVfcHJvJykucGFyZW50KCkuYWRkQ2xhc3MoJ2hpZGUnKTtcclxuICAgICAgICAkKCcjY2xpZW50X2VudHJlcHJpc2UnKS5wYXJlbnQoKS5hZGRDbGFzcygnaGlkZScpO1xyXG4gICAgICAgICQoJyNlcXVpcGVtZW50X3R2YScpLnZhbCgnNScpO1xyXG4gICAgfVxyXG59KTtcclxuXHJcbiQoJ2JvZHknKS5vbignY2hhbmdlJywgJy5lcXVpcGVtZW50LXpvbmUnLCBmdW5jdGlvbihlKSB7XHJcbiAgICBpZiAoJCh0aGlzKS52YWwoKSA9PSA2KSB7XHJcbiAgICAgICAgJCgkKHRoaXMpLmRhdGEoJ3RhcmdldCcpKS5jc3MoJ3Zpc2liaWxpdHknLCAnaW5oZXJpdCcpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICAkKCQodGhpcykuZGF0YSgndGFyZ2V0JykpLmNzcygndmlzaWJpbGl0eScsICdoaWRkZW4nKTtcclxuICAgIH1cclxufSk7XHJcblxyXG4kKCdib2R5Jykub24oJ2NsaWNrJywgJy5hZGRfY29tcGxlbWVudF9hZHJlc3NlJywgZnVuY3Rpb24gKGUpIHtcclxuICAgIHZhciB0YXJnZXRHcmlkID0gJCgkKHRoaXMpLmRhdGEoJ3RhcmdldC1ncmlkJykpLmR4RGF0YUdyaWQoJ2luc3RhbmNlJyk7XHJcbiAgICB0YXJnZXRHcmlkLmFkZFJvdygpO1xyXG59KTtcclxuXHJcbiQoJ2JvZHknKS5vbignY2hhbmdlJyxcclxuICAgICcuZm9ybS1pbnB1dC1jaGFuZ2UnXHJcbiAgICAsIGZ1bmN0aW9uKGUpIHtcclxuICAgICAgICB2YXIgZm9ybSA9ICQodGhpcykuYXR0cignZm9ybScpO1xyXG4gICAgICAgIHZhciBpZF9lcXVpcGVtZW50ID0gJCgnIycgKyBmb3JtKS5kYXRhKCdpZGVxdWlwZW1lbnQnKTtcclxuICAgICAgICAkKCcjc2ltdWxhdGV1cl9kYXRhX2NoYW5nZS0nICsgaWRfZXF1aXBlbWVudCkudmFsKCQoZS50YXJnZXQpLmF0dHIoJ25hbWUnKSk7XHJcbiAgICAgICAgdmFyIGh0bWxfZ3JpZCA9XHJcbiAgICAgICAgJCgnIycgKyBmb3JtKS5zdWJtaXQoKTtcclxuICAgIH0pO1xyXG5cclxuLy8gJCgnYm9keScpLm9uKCdjbGljaycsICcudG9nZ2xlLXNpZGViYXItY2xpZW50JywgZnVuY3Rpb24oZSkge1xyXG4vLyAgICAgaWYgKCQoJyNzaWRlYmFyLWNsaWVudCcpLmhhc0NsYXNzKCdtaW5pbScpKSB7XHJcbi8vICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3NpZGViYXJtaW5pbScsIGZhbHNlKTtcclxuLy8gICAgICAgICAkKHRoaXMpLnJlbW92ZUNsYXNzKCdmYS1jaGV2cm9uLXJpZ2h0JykuYWRkQ2xhc3MoJ2ZhLWNoZXZyb24tbGVmdCcpO1xyXG4vLyAgICAgICAgICQoJyNzaWRlYmFyLWNsaWVudCcpLnJlbW92ZUNsYXNzKCdtaW5pbSAnKTtcclxuLy8gICAgICAgICAkKCcuc2lkZWJhci1jbGllbnQtYm90dG9tJykuYWRkQ2xhc3MoJ21pbmltJyk7XHJcbi8vICAgICAgICAgJCgnLmJsb2NfcGljdG8nKS5yZW1vdmVDbGFzcygnaGlkZScpLmFkZENsYXNzKCdoaWRlJyk7XHJcbi8vICAgICAgICAgJCgnI2JvZHktY2xpZW50JykuYWRkQ2xhc3MoJ21pbmltICcpO1xyXG4vLyAgICAgICAgICQoJy5ibG9jX2ZpY2hlXzMnKS5yZW1vdmVDbGFzcygnYmxvY19maWNoZV8zJykuYWRkQ2xhc3MoJ2Jsb2NfZmljaGVfMicpO1xyXG4vLyAgICAgICAgICQoJy5ibG9jX2ZpY2hlX3RlY2huaXF1ZScpLnJlbW92ZUNsYXNzKCdibG9jX2ZpY2hlX2Z1bGwnKS5hZGRDbGFzcygnYmxvY19maWNoZV8yJyk7XHJcbi8vICAgICAgICAgJCgnLnByZWZlcmVuY2VzX3BsYW5pZmljYXRpb24nKS5yZW1vdmVDbGFzcygnbWluaW0nKTtcclxuLy8gICAgIH0gZWxzZSB7XHJcbi8vICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3NpZGViYXJtaW5pbScsIHRydWUpO1xyXG4vLyAgICAgICAgICQodGhpcykucmVtb3ZlQ2xhc3MoJ2ZhLWNoZXZyb24tbGVmdCcpLmFkZENsYXNzKCdmYS1jaGV2cm9uLXJpZ2h0Jyk7XHJcbi8vICAgICAgICAgJCgnI3NpZGViYXItY2xpZW50JykuYWRkQ2xhc3MoJ21pbmltICcpO1xyXG4vLyAgICAgICAgICQoJyNib2R5LWNsaWVudCcpLnJlbW92ZUNsYXNzKCdtaW5pbSAnKTtcclxuLy8gICAgICAgICAkKCcuYmxvY19waWN0bycpLnJlbW92ZUNsYXNzKCdoaWRlJyk7XHJcbi8vICAgICAgICAgJCgnLnNpZGViYXItY2xpZW50LWJvdHRvbScpLnJlbW92ZUNsYXNzKCdtaW5pbScpO1xyXG4vLyAgICAgICAgICQoJy5ibG9jX2ZpY2hlX3RlY2huaXF1ZScpLnJlbW92ZUNsYXNzKCdibG9jX2ZpY2hlXzInKS5hZGRDbGFzcygnYmxvY19maWNoZV9mdWxsJyk7XHJcbi8vICAgICAgICAgJCgnLmJsb2NfZmljaGVfMicpLnJlbW92ZUNsYXNzKCdibG9jX2ZpY2hlXzInKS5hZGRDbGFzcygnYmxvY19maWNoZV8zJyk7XHJcbi8vICAgICAgICAgJCgnLnByZWZlcmVuY2VzX3BsYW5pZmljYXRpb24nKS5yZW1vdmVDbGFzcygnbWluaW0nKS5hZGRDbGFzcygnbWluaW0nKTtcclxuLy8gICAgIH1cclxuLy8gfSk7XHJcblxyXG4kKCdib2R5Jykub24oXCJjaGFuZ2VkLmJzLnNlbGVjdFwiLFxyXG4gICAgZnVuY3Rpb24oZSwgY2xpY2tlZEluZGV4LCBuZXdWYWx1ZSwgb2xkVmFsdWUpIHtcclxuICAgICAgICB2YXIgdmFsdWUgPSBlLnRhcmdldC5vcHRpb25zW2NsaWNrZWRJbmRleF0udmFsdWU7XHJcbiAgICAgICAgdmFyIHRleHQgPSBlLnRhcmdldC5vcHRpb25zW2NsaWNrZWRJbmRleF0udGV4dDtcclxuICAgICAgICBpZiAoJCgnI3RyLScgKyB2YWx1ZSkubGVuZ3RoICE9IDAgfHwgb2xkVmFsdWUuaW5jbHVkZXModmFsdWUpKSB7XHJcbiAgICAgICAgICAgICQoJyN0ci0nICsgdmFsdWUpLnJlbW92ZSgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHZhciB0ciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7XHJcbiAgICAgICAgICAgICQodHIpLmF0dHIoJ2lkJywgJ3RyLScgKyB2YWx1ZSk7XHJcbiAgICAgICAgICAgIHRyLmlubmVySFRNTCA9ICc8dGQ+JysgdGV4dCArJzwvdGQ+PHRkPjwvdGQ+JztcclxuICAgICAgICAgICAgJCgnI3NpbXVsYXRldXItdGFibGUtb3B0aW9ucyB0Ym9keScpLmFwcGVuZCh0ci5vdXRlckhUTUwpO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuJCgnYm9keScpLm9uKCdjbGljaycsICcuY2hvaXgtYmxvY2snLCBmdW5jdGlvbihlKSB7XHJcbiAgICB2YXIgY3VycmVudF90YXJnZXQgPSAkKCcuY2hvaXgtYmxvY2suYmctdmVydCcpLmRhdGEoJ3RhcmdldCcpO1xyXG4gICAgdmFyIHRhcmdldCA9ICQodGhpcykuZGF0YSgndGFyZ2V0Jyk7XHJcbiAgICAkKCcuY2hvaXgtYmxvY2snKS5yZW1vdmVDbGFzcygnYmctdmVydCBib3JkZXItdmVydCcpLmFkZENsYXNzKCdib3JkZXItZ3JleS1tZWRpdW0nKTtcclxuICAgICQodGhpcykuYWRkQ2xhc3MoJ2JvcmRlci12ZXJ0JykuYWRkQ2xhc3MoJ2JnLXZlcnQnKTtcclxuXHJcbiAgICBpZiAoY3VycmVudF90YXJnZXQgIT0gbnVsbCAmJiBjdXJyZW50X3RhcmdldCAhPSB0YXJnZXQpIHtcclxuICAgICAgICAkKGN1cnJlbnRfdGFyZ2V0KS5oaWRlKCk7XHJcbiAgICB9XHJcbiAgICAkKCcjZm9ybV9hZGRfZXF1aXBlbWVudF90eXBlJykudmFsKHRhcmdldCk7XHJcbiAgICAkKHRhcmdldCkuc2hvdygpO1xyXG4gICAgJCgnI3N1Ym1pdC1hZGQtZXF1aXBlbWVudCcpLnNob3coKTtcclxufSk7XHJcblxyXG4kKCcjc3VibWl0LWFkZC1lcXVpcGVtZW50Jykub24oJ2NsaWNrJywgZnVuY3Rpb24oZSkge1xyXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgLy9zaSBvbiBlc3QgZW4gdHlwZSByZWNoZXJjaGUgZCfDqXF1aXBlbWVudCBldCBxdWUgbCfDqXF1aXBlbWVudCBlc3QgdG91am91cnMgYWN0aWYsIG9uIG1ldCB1biBtZXNzYWdlXHJcbiAgICBpZiAoJCgnI2Zvcm1fYWRkX2VxdWlwZW1lbnRfdHlwZScpLnZhbCgpID09ICcjY2hvaXgtcmVjaGVyY2hlLWVxdWlwZW1lbnQnKSB7XHJcbiAgICAgICAgdmFyICRzZWxlY3RlZCA9ICQoJ3NlbGVjdFtuYW1lPWVxdWlwZW1lbnRfc2VhcmNoX3ZhbHVlXSBvcHRpb246c2VsZWN0ZWQnKTtcclxuICAgICAgICBpZiAoJHNlbGVjdGVkLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgICAgICAgIGlmICgkc2VsZWN0ZWQuZGF0YSgnYWN0aWYnKSA9PSAxKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgbGluayA9ICc8YSBocmVmPVwiJysgJHNlbGVjdGVkLmRhdGEoJ2xpbmsnKSArJ1wiIHRhcmdldD1cIl9ibGFua1wiPmFsbGV6IHZvaXI8L2E+J1xyXG4gICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSBcIkF0dGVudGlvbiwgY2V0IMOpcXVpcGVtZW50IGVzdCB0b3Vqb3VycyBhY3RpZiBjaGV6IHVuIGF1dHJlIGNsaWVudCA6IFwiK2xpbmsrXCIuIDxicj5Wb3VsZXogdm91cyB0b3V0IGRlIG3Dqm1lIGFqb3V0ZXIgY2V0IMOpcXVpcGVtZW50IMOgIGNlIGNsaWVudCA/XCI7XHJcbiAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gIERldkV4cHJlc3MudWkuZGlhbG9nLmNvbmZpcm0obWVzc2FnZSwgXCJFcXVpcGVtZW50IGFjdGlmXCIpO1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0LmRvbmUoZnVuY3Rpb24oZGlhbG9nUmVzdWx0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRpYWxvZ1Jlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuZm9ybUNoYW5nZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAkKCcjZm9ybS1hZGQtZXF1aXBlbWVudCcpLnN1Ym1pdCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcblxyXG59KTtcclxuXHJcbiQoJ2JvZHknKS5vbignc3VibWl0JywgJyNmb3JtLWNoYW5nZS1zb3VzY3JpcHRldXInLCBmdW5jdGlvbihlKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgICAgKCgkKCcjbmV3X2NsaWVudF9zb3VzY3JpcHRldXInKS52YWwoKSAhPSB1bmRlZmluZWQgJiYgJCgnI25ld19jbGllbnRfc291c2NyaXB0ZXVyJykudmFsKCkgIT0gJycpKSB8fFxyXG4gICAgICAgICgkKCcjZm9ybS1jaGFuZ2Utc291c2NyaXB0ZXVyLXR5cGUnKS52YWwoKSA9PSAnbmV3JyAmJiAoJCgnI2NsaWVudF9ub20tbm91dmVhdV9zb3VzY3JpcHRldXInKS52YWwoKSAhPSAnJyB8fCAkKCcjY2xpZW50X2VudHJlcHJpc2Utbm91dmVhdV9zb3VzY3JpcHRldXInKS52YWwoKSAhPScnKSlcclxuICAgICAgICAmJiAkKCdpbnB1dFtuYW1lPVwiY2hhbmdlLWVxdWlwZW1lbnRzW11cIl06Y2hlY2tlZCcpLmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgICAgJCgnI2Nsb3NlLXBvcHVwLWNoYW5nZW1lbnQtc291c2NyaXB0ZXVyJykuY2xpY2soKTtcclxuICAgICAgICB3aW5kb3cuZm9ybUNoYW5nZWQgPSBmYWxzZTtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgJCgnI21lc3NhZ2VzLXBvcHVwLWNoYW5nZScpLnNob3coKTtcclxuICAgICAgICAkKCcjbWVzc2FnZXMtcG9wdXAtY2hhbmdlIC5hbGVydCcpLmh0bWwoJCgnI21lc3NhZ2UtdG8tZGlzcGxheScpLmh0bWwoKSk7XHJcbiAgICAgICAgJCgnI21lc3NhZ2VzLXBvcHVwLWNoYW5nZSAuYWxlcnQnKS5zaG93KCk7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gaWYgKCQoJyNuZXdfY2xpZW50X3NvdXNjcmlwdGV1cicpLnZhKVxyXG5cclxufSk7XHJcbiQoJ2JvZHknKS5vbignc3VibWl0JywgJy5zdWJtaXQtYWRkLXV0aWxpc2F0ZXVyJywgZnVuY3Rpb24oZSkge1xyXG4gICAgLy9vbiBjaGVjayBzZWxvbiBsZSB0eXBlIHNpXHJcbiAgICB2YXIgaWRlcXVpcGVtZW50ID0gJCh0aGlzKS5kYXRhKCdpZC1lcXVpcGVtZW50Jyk7XHJcbiAgICB2YXIgdHlwZSA9ICQoJyNmb3JtLWFkZC11dGlsaXNhdGV1ci10eXBlLScgKyBpZGVxdWlwZW1lbnQpLnZhbCgpO1xyXG4gICAgaWYgKHR5cGUgPT0gJ3JlY2hlcmNoZScpIHtcclxuICAgICAgICBpZiAoJCgnI25ld19jbGllbnRfdXRpbGlzYXRldXItJyArIGlkZXF1aXBlbWVudCkudmFsKCkgIT0gdW5kZWZpbmVkICYmICQoJyNuZXdfY2xpZW50X3V0aWxpc2F0ZXVyLScgKyBpZGVxdWlwZW1lbnQpLnZhbCgpICE9ICcnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICQoJyNtZXNzYWdlcy1wb3B1cC1jaGFuZ2UnKS5zaG93KCk7XHJcbiAgICAgICAgICAgICQoJyNtZXNzYWdlcy1wb3B1cC1jaGFuZ2UgLmFsZXJ0JykuaHRtbCgkKCcjbWVzc2FnZS10by1kaXNwbGF5LXJlY2hlcmNoZScraWRlcXVpcGVtZW50KS5odG1sKCkpO1xyXG4gICAgICAgICAgICAkKCcjbWVzc2FnZXMtcG9wdXAtY2hhbmdlIC5hbGVydCcpLnNob3coKTtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0eXBlID09ICduZXcnKSB7XHJcbiAgICAgICAgdmFyIHR5cGVfY2xpZW50ID0gJCgnI3R5cGVfY2xpZW50LScgK2lkZXF1aXBlbWVudCkudmFsKCk7XHJcbiAgICAgICAgaWYgKCh0eXBlX2NsaWVudCA9PSAxICYmICQoJyNjbGllbnRfbm9tLScgKyBpZGVxdWlwZW1lbnQpLnZhbCgpICE9IHVuZGVmaW5lZCAmJiAkKCcjY2xpZW50X25vbS0nICsgaWRlcXVpcGVtZW50KS52YWwoKSAhPSAnJylcclxuICAgICAgICAgICAgfHwgKHR5cGVfY2xpZW50ID09IDIgJiYgJCgnI2NsaWVudF9lbnRyZXByaXNlLScgKyBpZGVxdWlwZW1lbnQpLnZhbCgpICE9IHVuZGVmaW5lZCAmJiAkKCcjY2xpZW50X2VudHJlcHJpc2UtJyArIGlkZXF1aXBlbWVudCkudmFsKCkgIT0gJycpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICQoJyNtZXNzYWdlcy1wb3B1cC1hZGQtdXRpbGlzYXRldXItJyArIGlkZXF1aXBlbWVudCkuc2hvdygpO1xyXG4gICAgICAgICAgICAkKCcjbWVzc2FnZXMtcG9wdXAtYWRkLXV0aWxpc2F0ZXVyLScgKyBpZGVxdWlwZW1lbnQrJyAuYWxlcnQnKS5odG1sKCQoJyNtZXNzYWdlLXRvLWRpc3BsYXktbmV3JytpZGVxdWlwZW1lbnQpLmh0bWwoKSk7XHJcbiAgICAgICAgICAgICQoJyNtZXNzYWdlcy1wb3B1cC1hZGQtdXRpbGlzYXRldXItJyArIGlkZXF1aXBlbWVudCsnIC5hbGVydCcpLnNob3coKTtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxufSk7XHJcblxyXG4kKCdib2R5Jykub24oJ2NoYW5nZScsICcuY2hhbmdlX2VxdWlwZW1lbnQnLCBmdW5jdGlvbihlKSB7XHJcbiAgICB2YXIgZm9ybSA9ICQodGhpcykuZGF0YSgnZm9ybS1jaGFuZ2UnKTtcclxuICAgIHZhciBuYW1lID0gJCh0aGlzKS5hdHRyKCduYW1lJyk7XHJcbiAgICB2YXIgaWRlcXVpcGVtZW50ID0gJCh0aGlzKS5kYXRhKCdpZGVxdWlwZW1lbnQnKTtcclxuICAgICQoZm9ybSArICcgPiBpbnB1dFtuYW1lPXR5cGVfY2hhbmdlXScpLnZhbChuYW1lKTtcclxuICAgICQoZm9ybSArICcgPiBpbnB1dFtuYW1lPWRhdGFfdmFsdWVdJykudmFsKCQodGhpcykudmFsKCkpO1xyXG4gICAgJChmb3JtKS5kYXRhKCd0YXJnZXQtaHRtbCcsICQodGhpcykuZGF0YSgndGFyZ2V0JykpO1xyXG4gICAgJChmb3JtKS5zdWJtaXQoKTtcclxuICAgIC8vb24gQWpvdXRlIHVuIHRydWMgcG91ciBnw6lyZXIgbCdhZmZpY2hhZ2UgZHUgbnVtw6lybyBkZSBzZXJpZSBjb21wbMOpbWVudGFpcmUgc2kgYydlc3QgcGFjIG91IHBhc1xyXG4gICAgaWYgKCQodGhpcykudmFsKCkgPT0gXCIxMFwiKSB7XHJcbiAgICAgICAgJCgnI251bWVyb19zZXJpZV9zZWNvbmRhaXJlLScgKyBpZGVxdWlwZW1lbnQpLnJlbW92ZUNsYXNzKCdoaWRlJyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgICQoJyNudW1lcm9fc2VyaWVfc2Vjb25kYWlyZS0nICsgaWRlcXVpcGVtZW50KS5hZGRDbGFzcygnaGlkZScpO1xyXG4gICAgfVxyXG59KTtcclxuXHJcbiQoJ2JvZHknKS5vbignY2xpY2snLCAnI2J0bi1zYXZlLWNsaWVudCcsIGZ1bmN0aW9uKGUpIHtcclxuICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgIHZhciBmb3JtID0gJCh0aGlzKS5hdHRyKCdmb3JtJyk7XHJcbiAgICB2YXIgcmVhbEVycm9yID0gZmFsc2U7XHJcblxyXG4gICAgdmFyIGlkRXF1aXBlbWVudCA9ICAkKCdpbnB1dFtuYW1lPVwiaWRfZXF1aXBlbWVudF91cGRhdGVcIl0nKS52YWwoKTtcclxuXHJcbiAgICBpZiAoJCgnIycgKyBmb3JtKVswXS5jaGVja1ZhbGlkaXR5KCkgPT0gZmFsc2UpIHtcclxuICAgICAgICAkKCcjJyArIGZvcm0pWzBdLnJlcG9ydFZhbGlkaXR5KCk7XHJcbiAgICAgICAgJCgnIycrZm9ybSlbMF0uZm9yRWFjaChmdW5jdGlvbihlKSB7XHJcbiAgICAgICAgICAgIGlmIChlLnZhbGlkaXR5LnZhbGlkID09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoJChlKS5kYXRhKCdpZGVxdWlwZW1lbnQnKSA9PSBpZEVxdWlwZW1lbnQgfHwgKCQoZSkuZGF0YSgnaWRlcXVpcGVtZW50JykgPT0gdW5kZWZpbmVkICYmICQoZSkuaXMoJzp2aXNpYmxlJykpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVhbEVycm9yID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIGlmIChyZWFsRXJyb3IpZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGVsc2UgICQoJyMnICsgZm9ybSkuc3VibWl0KCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgICQoJyMnICsgZm9ybSkuc3VibWl0KCk7XHJcbiAgICB9XHJcbn0pO1xyXG5cclxuJCgnYm9keScpLm9uKCdzdWJtaXQnLCAnLmZvcm0tY2FzLXBhcnRpY3VsaWVyJywgZnVuY3Rpb24oZSkge1xyXG4gICAgZXZhbCgkKHRoaXMpLmRhdGEoJ2pzJykpO1xyXG59KTtcclxuXHJcbiQoJ2JvZHknKS5vbignY2xpY2snLCAnI2J0bi1tb2RpZi1jbGllbnQtZXF1aXBlbWVudCcsIGZ1bmN0aW9uKGUpIHtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdzY3JvbGxDbGllbnQnLCB3aW5kb3cuc2Nyb2xsWSk7XHJcbn0pO1xyXG4kKCdib2R5Jykub24oJ2NsaWNrJywgJy50ZWxlcGhvbmUtZnInLCBmdW5jdGlvbihlKSB7XHJcbiAgICAvL3NpIG9uIHJlcGFzc2UgZW4gbnVtw6lybyBmclxyXG4gICAgdmFyIHRhcmdldF9tYXNrID0gJ2lucHV0W25hbWU9XCInKyAkKHRoaXMpLmRhdGEoJ3RhcmdldC1tYXNrJykgKydcIl0nO1xyXG4gICAgdmFyIHRhcmdldF92YWx1ZSA9ICdpbnB1dFtuYW1lPVwiJysgJCh0aGlzKS5kYXRhKCd0YXJnZXQtaW5wdXQtZnInKSArJ1wiXSc7XHJcbiAgICBpZiAoJCh0aGlzKS5oYXNDbGFzcygnb3BhY2l0eS0yNScpKSB7XHJcbiAgICAgICAgJCh0aGlzKS5yZW1vdmVDbGFzcygnb3BhY2l0eS0yNScpO1xyXG4gICAgICAgICQodGFyZ2V0X21hc2spLm1hc2soJzAwLjAwLjAwLjAwLjAwJyx7dHJhbnNsYXRpb246ICB7JzAnOiB7cGF0dGVybjogL1swLTldLywgcmVjdXJzaXZlOiBmYWxzZX19fSk7XHJcbiAgICAgICAgJCh0YXJnZXRfbWFzaykuYXR0cignbWlubGVuZ3RoJywgJzE0JykuYXR0cigncGF0dGVybicsICdbMC05XXsyfS5bMC05XXsyfS5bMC05XXsyfS5bMC05XXsyfS5bMC05XXsyfScpO1xyXG4gICAgICAgICQodGFyZ2V0X3ZhbHVlKS52YWwoMSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgICQodGFyZ2V0X3ZhbHVlKS52YWwoMCk7XHJcbiAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygnb3BhY2l0eS0yNScpO1xyXG4gICAgICAgICQodGFyZ2V0X21hc2spLm1hc2soJzk5OTk5OTk5OTknKTtcclxuICAgICAgICAkKHRhcmdldF9tYXNrKS5yZW1vdmVBdHRyKCdtaW5sZW5ndGgnKS5yZW1vdmVBdHRyKCdwYXR0ZXJuJyk7XHJcbiAgICB9XHJcbn0pXHJcblxyXG4kKCdib2R5Jykub24oJ2NsaWNrJywgJyNidG4tb3Blbi1jaGFuZ2Utc291c2NyaXB0ZXVyJywgZnVuY3Rpb24oZSkge1xyXG4gICQoJ2lucHV0W25hbWU9XCJjaGFuZ2UtZXF1aXBlbWVudHNbXVwiXTpjaGVja2VkJykuZWFjaChmdW5jdGlvbihlKSB7XHJcbiAgICAgICQodGhpcykucHJvcCgnY2hlY2tlZCcsdHJ1ZSk7XHJcbiAgICAgICQodGhpcykuYXR0cignY2hlY2tlZCcsICcnKTtcclxuICAgICAgJCgkKHRoaXMpLmRhdGEoJ2NoYW5nZS10YXJnZXQnKSkuc2hvdygpO1xyXG4gIH0pO1xyXG4gICQoJ2lucHV0W25hbWU9XCJjaGFuZ2UtZXF1aXBlbWVudHNbXVwiXTpub3QoOmNoZWNrZWQpJykuZWFjaChmdW5jdGlvbihlKSB7XHJcbiAgICAgICAgJCh0aGlzKS5wcm9wKCdjaGVja2VkJyxmYWxzZSk7XHJcbiAgICAgICAgJCh0aGlzKS5yZW1vdmVBdHRyKCdjaGVja2VkJyk7XHJcbiAgICAgICAgJCgkKHRoaXMpLmRhdGEoJ2NoYW5nZS10YXJnZXQnKSkuaGlkZSgpO1xyXG4gIH0pO1xyXG59KTtcclxuXHJcblxyXG5cclxuLy9nZXN0aW9uIGRlcyByw6hnbGVzIGRlIHByw6lmZXJlbmNlcyBkZSBwbGFuaWZpY2F0aW9uXHJcbi8vYSBwYXJ0aXIgZGUgZG9pdCBldHJlIHBsdXMgcGV0aXQgcXVlIGF2YW50IGxlXHJcbi8vZW50cmUgXCJcIiBldCBcIlwiIGRvaXQgw6p0cmUgY29tcHJpcyBlbnRyZSBhIHBhcnRpciBkdSBldCBhdmFudCBsZVxyXG5cclxuJCgnYm9keScpLm9uKCdjaGFuZ2UnLCAnLnByZWZfYV9wYXJ0aXJfZHUnLCBmdW5jdGlvbihlKSB7XHJcbiAgICB2YXIgbmFtZV9pbnB1dF9hdmFudF9sZSA9ICdpbnB1dFtuYW1lPWRhdGVfYXZhbnRfbGVdJztcclxuICAgIHZhciBuYW1lX2lucHV0X2VudHJlX2RlYnV0ID0gJ2lucHV0W25hbWU9ZGF0ZV9lbnRyZV9kZWJ1dF0nO1xyXG4gICAgdmFyIG5hbWVfaW5wdXRfZW50cmVfZmluID0gJ2lucHV0W25hbWU9ZGF0ZV9lbnRyZV9maW5dJztcclxuICAgIHZhciBuYW1lX2FfcGFydGlyX2R1ID0gJ2lucHV0W25hbWU9ZGF0ZV9hX3BhcnRpcl9kdV0nO1xyXG4gICAgaWYoISQodGhpcykudmFsKCkpIHtcclxuICAgICAgICBpZiAoJChuYW1lX2lucHV0X2VudHJlX2RlYnV0KS52YWwoKSAhPSAnJykgJChuYW1lX2FfcGFydGlyX2R1KS5kYXRlcGlja2VyKCdvcHRpb24nLCAnbWluRGF0ZScsICQobmFtZV9pbnB1dF9lbnRyZV9kZWJ1dCkuZGF0ZXBpY2tlcignZ2V0RGF0ZScpKTtcclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgJChuYW1lX2lucHV0X2F2YW50X2xlKS5kYXRlcGlja2VyKCdvcHRpb24nLCAnbWluRGF0ZScsIG51bGwpO1xyXG4gICAgICAgICAgICAkKG5hbWVfaW5wdXRfZW50cmVfZGVidXQpLmRhdGVwaWNrZXIoXCJvcHRpb25cIiwgXCJtaW5EYXRlXCIsIG51bGwpO1xyXG4gICAgICAgICAgICAkKG5hbWVfaW5wdXRfZW50cmVfZmluKS5kYXRlcGlja2VyKFwib3B0aW9uXCIsIFwibWluRGF0ZVwiLCBudWxsKTtcclxuICAgICAgICAgICAgJChuYW1lX2FfcGFydGlyX2R1KS5kYXRlcGlja2VyKCdvcHRpb24nLCAnbWluRGF0ZScsIG51bGwpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHZhciB0aGlzRGF0ZSA9ICQodGhpcykuZGF0ZXBpY2tlcignZ2V0RGF0ZScpO1xyXG4gICAgICAgIGlmICghJChuYW1lX2lucHV0X2F2YW50X2xlKS52YWwoKSkgJChuYW1lX2lucHV0X2F2YW50X2xlKS5kYXRlcGlja2VyKCdvcHRpb24nLCAnbWluRGF0ZScsIHRoaXNEYXRlKTtcclxuICAgICAgICBpZiAoISQobmFtZV9pbnB1dF9lbnRyZV9kZWJ1dCkudmFsKCkpICQobmFtZV9pbnB1dF9lbnRyZV9kZWJ1dCkuZGF0ZXBpY2tlcignb3B0aW9uJywgJ21pbkRhdGUnLCB0aGlzRGF0ZSk7XHJcbiAgICAgICAgaWYgKCEkKG5hbWVfaW5wdXRfZW50cmVfZmluKS52YWwoKSkgJChuYW1lX2lucHV0X2VudHJlX2ZpbikuZGF0ZXBpY2tlcignb3B0aW9uJywgJ21pbkRhdGUnLCB0aGlzRGF0ZSk7XHJcbiAgICB9XHJcbn0pO1xyXG5cclxuJCgnYm9keScpLm9uKCdjaGFuZ2UnLCAnLnByZWZfYXZhbnRfbGUnLCBmdW5jdGlvbihlKSB7XHJcbiAgICB2YXIgbmFtZV9hX3BhcnRpcl9kdSA9ICdpbnB1dFtuYW1lPWRhdGVfYV9wYXJ0aXJfZHVdJztcclxuICAgIHZhciBuYW1lX2lucHV0X2VudHJlX2RlYnV0ID0gJ2lucHV0W25hbWU9ZGF0ZV9lbnRyZV9kZWJ1dF0nO1xyXG4gICAgdmFyIG5hbWVfaW5wdXRfZW50cmVfZmluID0gJ2lucHV0W25hbWU9ZGF0ZV9lbnRyZV9maW5dJztcclxuICAgIHZhciBuYW1lX2lucHV0X2F2YW50X2xlID0gJ2lucHV0W25hbWU9ZGF0ZV9hdmFudF9sZV0nO1xyXG4gICAgaWYoISQodGhpcykudmFsKCkpIHtcclxuICAgICAgICBpZiAoJChuYW1lX2lucHV0X2VudHJlX2ZpbikudmFsKCkgIT0gJycpICQobmFtZV9hX3BhcnRpcl9kdSkuZGF0ZXBpY2tlcignb3B0aW9uJywgJ21heERhdGUnLCAkKG5hbWVfaW5wdXRfZW50cmVfZmluKS5kYXRlcGlja2VyKCdnZXREYXRlJykpO1xyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAkKG5hbWVfYV9wYXJ0aXJfZHUpLmRhdGVwaWNrZXIoJ29wdGlvbicsICdtYXhEYXRlJywgbnVsbCk7XHJcbiAgICAgICAgICAgICQobmFtZV9pbnB1dF9lbnRyZV9kZWJ1dCkuZGF0ZXBpY2tlcihcIm9wdGlvblwiLCBcIm1heERhdGVcIiwgbnVsbCk7XHJcbiAgICAgICAgICAgICQobmFtZV9pbnB1dF9lbnRyZV9maW4pLmRhdGVwaWNrZXIoXCJvcHRpb25cIiwgXCJtYXhEYXRlXCIsIG51bGwpO1xyXG4gICAgICAgICAgICAkKG5hbWVfaW5wdXRfYXZhbnRfbGUpLmRhdGVwaWNrZXIoJ29wdGlvbicsICdtYXhEYXRlJyxudWxsKTtcclxuICAgICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIHZhciB0aGlzRGF0ZSA9ICQodGhpcykuZGF0ZXBpY2tlcignZ2V0RGF0ZScpO1xyXG4gICAgICAgIHRoaXNEYXRlLnNldERhdGUodGhpc0RhdGUuZ2V0RGF0ZSgpIC0gMSk7XHJcblxyXG4gICAgICAgICQobmFtZV9hX3BhcnRpcl9kdSkuZGF0ZXBpY2tlcihcIm9wdGlvblwiLCBcIm1heERhdGVcIiwgdGhpc0RhdGUpO1xyXG4gICAgICAgIGlmICghJChuYW1lX2lucHV0X2VudHJlX2RlYnV0KS52YWwoKSkgJChuYW1lX2lucHV0X2VudHJlX2RlYnV0KS5kYXRlcGlja2VyKFwib3B0aW9uXCIsIFwibWF4RGF0ZVwiLCB0aGlzRGF0ZSk7XHJcbiAgICAgICAgaWYgKCEkKG5hbWVfaW5wdXRfZW50cmVfZmluKS52YWwoKSkgJChuYW1lX2lucHV0X2VudHJlX2ZpbikuZGF0ZXBpY2tlcihcIm9wdGlvblwiLCBcIm1heERhdGVcIiwgdGhpc0RhdGUpO1xyXG4gICAgICAgIGlmKHRoaXNEYXRlIDwgJChuYW1lX2FfcGFydGlyX2R1KS5kYXRlcGlja2VyKCdnZXREYXRlJykpICQobmFtZV9hX3BhcnRpcl9kdSkudmFsKCcnKTtcclxuICAgIH1cclxufSk7XHJcbiQoJ2JvZHknKS5vbignY2hhbmdlJywgJy5wcmVmX2VudHJlX2RlYnV0JywgZnVuY3Rpb24oZSkge1xyXG4gICAgdmFyIG5hbWVfYV9wYXJ0aXJfZHUgPSAnaW5wdXRbbmFtZT1kYXRlX2FfcGFydGlyX2R1XSc7XHJcbiAgICB2YXIgbmFtZV9pbnB1dF9hdmFudF9sZSA9ICdpbnB1dFtuYW1lPWRhdGVfYXZhbnRfbGVdJztcclxuICAgIHZhciBuYW1lX2lucHV0X2VudHJlX2ZpbiA9ICdpbnB1dFtuYW1lPWRhdGVfZW50cmVfZmluXSc7XHJcbiAgICB2YXIgbmFtZV9pbnB1dF9lbnRyZV9kZWJ1dCA9ICdpbnB1dFtuYW1lPWRhdGVfZW50cmVfZGVidXRdJztcclxuICAgIGlmKCEkKHRoaXMpLnZhbCgpKSB7XHJcbiAgICAgICAgaWYgKCQobmFtZV9hX3BhcnRpcl9kdSkudmFsKCkgIT0gJycpICQobmFtZV9pbnB1dF9lbnRyZV9maW4pLmRhdGVwaWNrZXIoJ29wdGlvbicsICdtaW5EYXRlJywgJChuYW1lX2FfcGFydGlyX2R1KS5kYXRlcGlja2VyKCdnZXREYXRlJykpO1xyXG4gICAgICAgIGVsc2UgIHtcclxuICAgICAgICAgICAgJChuYW1lX2lucHV0X2VudHJlX2ZpbikuZGF0ZXBpY2tlcignb3B0aW9uJywgJ21pbkRhdGUnLCBudWxsKTtcclxuICAgICAgICAgICAgJChuYW1lX2FfcGFydGlyX2R1KS5kYXRlcGlja2VyKCdvcHRpb24nLCAnbWluRGF0ZScsIG51bGwpO1xyXG4gICAgICAgICAgICAkKG5hbWVfaW5wdXRfYXZhbnRfbGUpLmRhdGVwaWNrZXIoJ29wdGlvbicsICdtaW5EYXRlJyxudWxsKTtcclxuICAgICAgICAgICAgJChuYW1lX2lucHV0X2VudHJlX2RlYnV0KS5kYXRlcGlja2VyKCdvcHRpb24nLCAnbWluRGF0ZScsbnVsbCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICB2YXIgdGhpc0RhdGUgPSAkKHRoaXMpLmRhdGVwaWNrZXIoJ2dldERhdGUnKTtcclxuICAgICAgICAkKG5hbWVfaW5wdXRfZW50cmVfZmluKS5kYXRlcGlja2VyKCdvcHRpb24nLCAnbWluRGF0ZScsIHRoaXNEYXRlKTtcclxuICAgICAgICBpZih0aGlzRGF0ZSA+ICQobmFtZV9pbnB1dF9lbnRyZV9maW4pLmRhdGVwaWNrZXIoJ2dldERhdGUnKSkgJChuYW1lX2lucHV0X2VudHJlX2ZpbikudmFsKCcnKTtcclxuICAgICAgICAkKG5hbWVfYV9wYXJ0aXJfZHUpLmRhdGVwaWNrZXIoJ29wdGlvbicsICdtaW5EYXRlJywgdGhpc0RhdGUpO1xyXG4gICAgICAgICQobmFtZV9pbnB1dF9hdmFudF9sZSkuZGF0ZXBpY2tlcignb3B0aW9uJywgJ21pbkRhdGUnLHRoaXNEYXRlKTtcclxuICAgIH1cclxufSk7XHJcbiQoJ2JvZHknKS5vbignY2hhbmdlJywgJy5wcmVmX2VudHJlX2ZpbicsIGZ1bmN0aW9uKGUpIHtcclxuICAgIHZhciBuYW1lX2FfcGFydGlyX2R1ID0gJ2lucHV0W25hbWU9ZGF0ZV9hX3BhcnRpcl9kdV0nO1xyXG4gICAgdmFyIG5hbWVfaW5wdXRfYXZhbnRfbGUgPSAnaW5wdXRbbmFtZT1kYXRlX2F2YW50X2xlXSc7XHJcbiAgICB2YXIgbmFtZV9pbnB1dF9lbnRyZV9kZWJ1dCA9ICdpbnB1dFtuYW1lPWRhdGVfZW50cmVfZGVidXRdJztcclxuICAgIHZhciBuYW1lX2lucHV0X2VudHJlX2ZpbiA9ICdpbnB1dFtuYW1lPWRhdGVfZW50cmVfZmluXSc7XHJcblxyXG4gICAgaWYgKCEkKHRoaXMpLnZhbCgpKSB7XHJcbiAgICAgICAgaWYgKCQobmFtZV9pbnB1dF9hdmFudF9sZSkudmFsKCkgIT0gJycpICQobmFtZV9pbnB1dF9lbnRyZV9kZWJ1dCkuZGF0ZXBpY2tlcignb3B0aW9uJywgJ21heERhdGUnLCAkKG5hbWVfaW5wdXRfYXZhbnRfbGUpLmRhdGVwaWNrZXIoJ2dldERhdGUnKSk7XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICQobmFtZV9pbnB1dF9lbnRyZV9kZWJ1dCkuZGF0ZXBpY2tlcignb3B0aW9uJywgJ21heERhdGUnLG51bGwpO1xyXG4gICAgICAgICAgICAkKG5hbWVfYV9wYXJ0aXJfZHUpLmRhdGVwaWNrZXIoJ29wdGlvbicsICdtYXhEYXRlJywgbnVsbCk7XHJcbiAgICAgICAgICAgICQobmFtZV9pbnB1dF9hdmFudF9sZSkuZGF0ZXBpY2tlcignb3B0aW9uJywgJ21heERhdGUnLCBudWxsKTtcclxuICAgICAgICAgICAgJChuYW1lX2lucHV0X2VudHJlX2ZpbikuZGF0ZXBpY2tlcignb3B0aW9uJywgJ21heERhdGUnLG51bGwpO1xyXG4gICAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdmFyIHRoaXNEYXRlID0gJCh0aGlzKS5kYXRlcGlja2VyKCdnZXREYXRlJyk7XHJcbiAgICAgICAgJChuYW1lX2lucHV0X2VudHJlX2RlYnV0KS5kYXRlcGlja2VyKCdvcHRpb24nLCAnbWF4RGF0ZScsdGhpc0RhdGUpO1xyXG4gICAgICAgIGlmICgodGhpc0RhdGUpIDwgJChuYW1lX2lucHV0X2VudHJlX2RlYnV0KS5kYXRlcGlja2VyKCdnZXREYXRlJykpICQobmFtZV9pbnB1dF9lbnRyZV9kZWJ1dCkudmFsKCcnKTtcclxuICAgICAgICAkKG5hbWVfYV9wYXJ0aXJfZHUpLmRhdGVwaWNrZXIoJ29wdGlvbicsICdtYXhEYXRlJywgdGhpc0RhdGUpO1xyXG4gICAgICAgICQobmFtZV9pbnB1dF9hdmFudF9sZSkuZGF0ZXBpY2tlcignb3B0aW9uJywgJ21heERhdGUnLCB0aGlzRGF0ZSk7XHJcbiAgICB9XHJcbn0pO1xyXG5cclxuJCgnYm9keScpLm9uKCdjbGljaycsJy5waWN0by1ncm91cC1jb250cmF0JywgZnVuY3Rpb24oZSkge1xyXG4gICAgJC5hamF4KHtcclxuICAgICAgICBtZXRob2Q6IFwiR0VUXCIsXHJcbiAgICAgICAgdXJsOiAkKHRoaXMpLmRhdGEoJ3BhdGgnKSxcclxuICAgICAgICBkYXRhVHlwZTogXCJqc29uXCIsXHJcbiAgICAgICAgc3VjY2VzczogZnVuY3Rpb24oZGF0YSl7XHJcbiAgICAgICAgICAgZGF0YS5mb3JFYWNoKGZ1bmN0aW9uKGUpIHtcclxuICAgICAgICAgICAgICAgd2luZG93Lm9wZW4oZSk7XHJcbiAgICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICB9KVxyXG59KTtcclxuXHJcbiQoJ2JvZHknKS5vbignY2xpY2snLCAnLmludGVydmVudGlvbl9jbGllbnQnLCBmdW5jdGlvbigpIHtcclxuICAgIC8vIDEuIFJldGlyZXIgbGUgYmFja2dyb3VuZCBkZSB0b3VzXHJcbiAgICAkKCcuaW50ZXJ2ZW50aW9uX2NsaWVudCcpLmNzcygnYmFja2dyb3VuZCcsICcnKTtcclxuICAgIC8vIDIuIEFwcGxpcXVlciBsZSBiYWNrZ3JvdW5kIHN1ciBsJ8OpbMOpbWVudCBjbGlxdcOpXHJcbiAgICAkKHRoaXMpLmNzcygnYmFja2dyb3VuZCcsICcjRjJGMkYyJyk7XHJcblxyXG4gICAgLy8gMy4gUsOpY3Vww6lyZXIgbCdpZCBkZSBsJ2ludGVydmVudGlvblxyXG4gICAgdmFyIGlkID0gJCh0aGlzKS5kYXRhKCdpZCcpO1xyXG5cclxuICAgIC8vIDQuIENoYXJnZXIgbGUgdGVtcGxhdGUgdmlhIEFKQVhcclxuICAgICQuYWpheCh7XHJcbiAgICAgICAgdXJsOiAnL2VxdWlwZW1lbnQvaW50ZXJ2ZW50aW9uL3Jlc3VsdC8nICsgaWQsXHJcbiAgICAgICAgdHlwZTogJ0dFVCcsXHJcbiAgICAgICAgc3VjY2VzczogZnVuY3Rpb24oaHRtbCkge1xyXG4gICAgICAgICAgICAkKCcjcmVzdWx0X2ludGVydmVudGlvbl9jbGllbnQnKS5odG1sKGh0bWwpO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgICQuYWpheCh7XHJcbiAgICAgICAgdXJsOiAnL2VxdWlwZW1lbnQvaW50ZXJ2ZW50aW9uL2ZhY3R1cmF0aW9uLycgKyBpZCwgLy8gw6AgYWRhcHRlciBzZWxvbiB0YSByb3V0ZVxyXG4gICAgICAgIHR5cGU6ICdHRVQnLFxyXG4gICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKGh0bWwpIHtcclxuICAgICAgICAgICAgJCgnI3Jlc3VsdF9pbnRlcnZlbnRpb25fY2xpZW50X2ZhY3R1cmF0aW9uJykuaHRtbChodG1sKTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxufSk7XHJcblxyXG5cclxuZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVhZHkgdHVyYm86bG9hZCcsIGxvYWRDbGllbnQpO1xyXG4kKGRvY3VtZW50KS5vbigncmVhZHkgdHVyYm86bG9hZCcsIGxvYWRDbGllbnQpO1xyXG5mdW5jdGlvbiB0b2dnbGVEYXRlRm9ybWF0Rm9yTXVsdGlwbGVJbnB1dHMoZGF0ZUlucHV0SWRzLCBjaGVja2JveElkKSB7XHJcbiAgICBjb25zdCBmb3JtYXRDaGVja2JveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGNoZWNrYm94SWQpO1xyXG4gICAgY29uc3QgbmV3Rm9ybWF0ID0gJCgnIycgKyBjaGVja2JveElkKVswXS5jaGVja2VkID8gJ2RkIE1NJyA6ICdkZC9tbS95eSc7XHJcbiAgICBkYXRlSW5wdXRJZHMuZm9yRWFjaChmdW5jdGlvbiAoZGF0ZUlucHV0SWQpIHtcclxuICAgICAgICAkKCcjJyArIGRhdGVJbnB1dElkKS5kYXRlcGlja2VyKCdvcHRpb24nLCAnZGF0ZUZvcm1hdCcsIG5ld0Zvcm1hdCk7XHJcbiAgICB9KTtcclxuICAgIGZvcm1hdENoZWNrYm94LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBjb25zdCBuZXdGb3JtYXQgPSAkKCcjJyArIGNoZWNrYm94SWQpWzBdLmNoZWNrZWQgPyAnZGQgTU0nIDogJ2RkL21tL3l5JztcclxuICAgICAgICBkYXRlSW5wdXRJZHMuZm9yRWFjaChmdW5jdGlvbiAoZGF0ZUlucHV0SWQpIHtcclxuICAgICAgICAgICAgJCgnIycgKyBkYXRlSW5wdXRJZCkuZGF0ZXBpY2tlcignb3B0aW9uJywgJ2RhdGVGb3JtYXQnLCBuZXdGb3JtYXQpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbn1cclxuZnVuY3Rpb24gbG9hZENsaWVudChlKSB7XHJcbiAgICB3aW5kb3cuZm9ybUNoYW5nZWQgPSBmYWxzZTtcclxuXHJcbiAgICB2YXIgc2Nyb2xsVmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnc2Nyb2xsQ2xpZW50Jyk7XHJcbiAgICAvLyB2YXIgc2lkZWJhcm1pbmltID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3NpZGViYXJtaW5pbScpO1xyXG4gICAgaWYgKHNjcm9sbFZhbHVlID4gMCkge1xyXG4gICAgICAgIHNldFRpbWVvdXQoXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICAgICAgJCgnaHRtbCwgYm9keScpLmFuaW1hdGUoIHsgc2Nyb2xsVG9wOiBzY3JvbGxWYWx1ZSB9KTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgNzUwXHJcbiAgICAgICAgKTtcclxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnc2Nyb2xsQ2xpZW50JywgMCk7XHJcbiAgICB9XHJcblxyXG4gICAgJCgnLmlucHV0LWRhdGVwaWNrZXInKS5lYWNoKGZ1bmN0aW9uICgpIHtcclxuICAgICAgIHZhciBmb3JtYXQgPSAkKHRoaXMpLmRhdGEoJ2Zvcm1hdCcpO1xyXG4gICAgICAgdmFyIG1pbkRhdGUgPSAkKHRoaXMpLmRhdGEoJ21pbicpO1xyXG4gICAgICAgdmFyIG1heERhdGUgPSAkKHRoaXMpLmRhdGEoJ21heCcpO1xyXG4gICAgICAgICQodGhpcykuZGF0ZXBpY2tlcih7XHJcbiAgICAgICAgICAgIGZvcm1hdDogZm9ybWF0LFxyXG4gICAgICAgICAgICBsYW5ndWFnZSA6ICdmcicsXHJcbiAgICAgICAgICAgIHNob3dCdXR0b25QYW5lbDogdHJ1ZSxcclxuICAgICAgICAgICAgbWluRGF0ZTogbWluRGF0ZSxcclxuICAgICAgICAgICAgbWF4RGF0ZSA6IG1heERhdGUsXHJcbiAgICAgICAgICAgIGNsZWFyVGV4dDogXCJFZmZhY2VyXCIsXHJcbiAgICAgICAgICAgIGJlZm9yZVNob3c6IGZ1bmN0aW9uKGlucHV0LCBpbnN0KSB7XHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBidXR0b25QYW5lID0gJChpbnN0LmRwRGl2KS5maW5kKCcudWktZGF0ZXBpY2tlci1idXR0b25wYW5lJyk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8vIEFqb3V0ZXIgdW4gYm91dG9uIEVmZmFjZXJcclxuICAgICAgICAgICAgICAgICAgICAkKCc8YnV0dG9uPicsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogJ0VmZmFjZXInLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGlucHV0KS52YWwoJycpOyAvLyBWaWRlciBsJ2lucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGlucHV0KS5kYXRlcGlja2VyKCdzZXREYXRlJywgbnVsbCk7IC8vIFLDqWluaXRpYWxpc2VyIGxlIERhdGVwaWNrZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoaW5wdXQpLnRyaWdnZXIoJ2NoYW5nZScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSkuYXBwZW5kVG8oYnV0dG9uUGFuZSkuYWRkQ2xhc3MoJ3VpLWRhdGVwaWNrZXItY2xlYXIgdWktc3RhdGUtZGVmYXVsdCB1aS1wcmlvcml0eS1wcmltYXJ5IHVpLWNvcm5lci1hbGwnKTtcclxuICAgICAgICAgICAgICAgIH0sIDEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgfSk7XHJcblxyXG4gICAgdG9nZ2xlRGF0ZUZvcm1hdEZvck11bHRpcGxlSW5wdXRzKFsncGxhbmlmaWNhdGlvbl9lbnRyZV9kZWJ1dCcsICdwbGFuaWZpY2F0aW9uX2VudHJlX2ZpbiddLCAnaW5jbHVzaW9uX3JlY3VycmVudGUnKTtcclxuICAgIHRvZ2dsZURhdGVGb3JtYXRGb3JNdWx0aXBsZUlucHV0cyhbJ2RhdGVfYXByZXNfbGUnXSwgJ2FwcmVzX3JlY3VycmVudGUnKTtcclxuICAgIHRvZ2dsZURhdGVGb3JtYXRGb3JNdWx0aXBsZUlucHV0cyhbJ2RhdGVfYXZhbnRfbGUnXSwgJ2F2YW50X3JlY3VycmVudGUnKTtcclxuICAgIC8vIGlmIChzaWRlYmFybWluaW0gPT0gXCJ0cnVlXCIpIHtcclxuICAgIC8vICAgICAkKCcudG9nZ2xlLXNpZGViYXItY2xpZW50JykuY2xpY2soKTtcclxuICAgIC8vIH1cclxuICAgICQoJy5pbnB1dF90ZWw6bm90KC5ub3RfZnIpJykubWFzaygnMDAuMDAuMDAuMDAuMDAnLHt0cmFuc2xhdGlvbjogIHsnMCc6IHtwYXR0ZXJuOiAvWzAtOV0vLCByZWN1cnNpdmU6IGZhbHNlfX19KTtcclxuICAgICQoJy5pbnB1dF90ZWwubm90X2ZyJykubWFzaygnOTk5OTk5OTk5OScpO1xyXG5cclxuICAgICQoJy5pbnB1dF9udW1lcm9fc2VyaWUnKS5tYXNrKCdTU1NTIFNTU1NTUyBTU1NTJywge1xyXG4gICAgICAgIHRyYW5zbGF0aW9uOiB7XHJcbiAgICAgICAgICAgICdTJzogeyBwYXR0ZXJuOiAvW0EtWmEtejAtOV0vIH1cclxuICAgICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnYWN0aXZlVGFiJywgJycpO1xyXG4gICAgJCgnLmZvcm1fcmVzaWxpZXJfY29udHJhdCcpLmVhY2goZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICAkKHRoaXMpWzBdLnJlc2V0KCk7XHJcbiAgICB9KTtcclxuICAgIGlmICgkKCcjdHlwZV9jbGllbnQgb3B0aW9uOnNlbGVjdGVkJykudmFsKCkgPT0gXCIyXCIpIHtcclxuICAgICAgICAkKCcjY2F0ZWdvcmllX3BybycpLnBhcmVudCgpLnJlbW92ZUNsYXNzKCdoaWRlJyk7XHJcbiAgICAgICAgJCgnI2NsaWVudF9lbnRyZXByaXNlJykucGFyZW50KCkucmVtb3ZlQ2xhc3MoJ2hpZGUnKTtcclxuICAgICAgICAkKCcjZXF1aXBlbWVudF90dmEnKS52YWwoNCk7XHJcbiAgICB9XHJcblxyXG4gICAgJCgnaW5wdXQsc2VsZWN0JykuY2hhbmdlKGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIGlmICghJCh0aGlzKS5kYXRhKCdmb3JtY2hhbmdlZCcpKSB7XHJcbiAgICAgICAgICAgIHdpbmRvdy5mb3JtQ2hhbmdlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH0pO1xyXG5cclxuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0dXJibzpiZWZvcmUtdmlzaXRcIix1bnNhdmVDaGFuZ2VkKTtcclxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJ0dXJibzpiZWZvcmUtdmlzaXRcIiwgdW5zYXZlQ2hhbmdlZCk7XHJcblxyXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcInR1cmJvOmxpbmtcIiwoZXZlbnQpID0+IHtcclxuICAgICAgICB3aW5kb3cuZm9ybUNoYW5nZWQgPSBmYWxzZTtcclxuICAgIH0pO1xyXG5cclxuXHJcbiAgICBpZiAoJCgnc2VsZWN0W25hbWU9ZXF1aXBlbWVudF96b25lXzFdIG9wdGlvbjpzZWxlY3RlZCcpLnZhbCgpID09IDYpXHJcbiAgICAgICAgJCgkKCdzZWxlY3RbbmFtZT1lcXVpcGVtZW50X3pvbmVfMV0nKS5kYXRhKCd0YXJnZXQnKSkuY3NzKCd2aXNpYmlsaXR5JywgJ2luaGVyaXQnKTtcclxuICAgIGlmICgkKCdzZWxlY3RbbmFtZT1lcXVpcGVtZW50X3pvbmVfMl0gb3B0aW9uOnNlbGVjdGVkJykudmFsKCkgPT0gNilcclxuICAgICAgICAkKCQoJ3NlbGVjdFtuYW1lPWVxdWlwZW1lbnRfem9uZV8yXScpLmRhdGEoJ3RhcmdldCcpKS5jc3MoJ3Zpc2liaWxpdHknLCAnaW5oZXJpdCcpO1xyXG4gICAgaWYgKCQoJ3NlbGVjdFtuYW1lPWVxdWlwZW1lbnRfem9uZV8zXSBvcHRpb246c2VsZWN0ZWQnKS52YWwoKSA9PSA2KVxyXG4gICAgICAgICQoJCgnc2VsZWN0W25hbWU9ZXF1aXBlbWVudF96b25lXzNdJykuZGF0YSgndGFyZ2V0JykpLmNzcygndmlzaWJpbGl0eScsICdpbmhlcml0Jyk7XHJcblxyXG4gICAgJCgnaW5wdXRbbmFtZT1jbGllbnRfYWRyZXNzZV9hdXRvXScpLmF1dG9jb21wbGV0ZSh7XHJcbiAgICAgICAgc291cmNlOiBmdW5jdGlvbihyZXF1ZXN0LCByZXNwb25zZSkge1xyXG4gICAgICAgICAgICAkLmFqYXgoe1xyXG4gICAgICAgICAgICAgICAgbWV0aG9kOiBcIkdFVFwiLFxyXG4gICAgICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly9hcGktYWRyZXNzZS5kYXRhLmdvdXYuZnIvc2VhcmNoLz9xPScgKyAkKFwiaW5wdXRbbmFtZT0nY2xpZW50X2FkcmVzc2VfYXV0byddXCIpLnZhbCgpICsgJyZ0eXBlPWhvdXNlbnVtYmVyJmF1dG9jb21wbGV0ZT0xJmxpbWl0MTAmbGF0JmxvbicsXHJcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogXCJqc29uXCIsXHJcbiAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbihkYXRhKXtcclxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZSgkLm1hcChkYXRhLmZlYXR1cmVzLCBmdW5jdGlvbiAoaXRlbSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgYWRyZXNzZXMgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWNpIG9uIGVzdCBvYmxpZ8OpIGQnYWpvdXRlciBsZXMgQ1AgZGFucyB1biBhcnJheSBwb3VyIG5lIHBhcyBhdm9pciBwbHVzaWV1cnMgZm9pcyBsZSBtw6ptZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJC5pbkFycmF5KGl0ZW0ucHJvcGVydGllcy5sYWJlbCwgYWRyZXNzZXMpID09IC0xICYmIGl0ZW0ucHJvcGVydGllcy5ob3VzZW51bWJlciAmJiBpdGVtLnByb3BlcnRpZXMucG9zdGNvZGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkcmVzc2VzLnB1c2goaXRlbS5wcm9wZXJ0aWVzLmxhYmVsKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGxhYmVsOiBpdGVtLnByb3BlcnRpZXMubGFiZWwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2l0eTogaXRlbS5wcm9wZXJ0aWVzLmNpdHksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zdGNvZGU6IGl0ZW0ucHJvcGVydGllcy5wb3N0Y29kZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBpdGVtLnByb3BlcnRpZXMubmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb29yZGluYXRlczogaXRlbS5nZW9tZXRyeS5jb29yZGluYXRlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9LFxyXG4gICAgICAgIC8vIE9uIHJlbXBsaXQgYXVzc2kgbGEgdmlsbGVcclxuICAgICAgICBzZWxlY3Q6IGZ1bmN0aW9uKGV2ZW50LCB1aSkge1xyXG4gICAgICAgICAgICB2YXIgaWRfc2l0ZSA9ICQodGhpcykuZGF0YSgnaWRzaXRlJyk7XHJcbiAgICAgICAgICAgIHZhciBlbGVtZW50ID0gJCh0aGlzKTtcclxuICAgICAgICAgICAgJChcImlucHV0W25hbWU9J3NvdXNjcmlwdGV1cl9jb2RlX3Bvc3RhbCddXCIpLnZhbCh1aS5pdGVtLnBvc3Rjb2RlKTtcclxuICAgICAgICAgICAgJChcImlucHV0W25hbWU9J3NvdXNjcmlwdGV1cl92aWxsZSddXCIpLnZhbCh1aS5pdGVtLmNpdHkpO1xyXG4gICAgICAgICAgICAkKFwiaW5wdXRbbmFtZT0nc291c2NyaXB0ZXVyX2FkcmVzc2UnXVwiKS52YWwodWkuaXRlbS5uYW1lKTtcclxuICAgICAgICAgICAgJChcImlucHV0W25hbWU9J3NvdXNjcmlwdGV1cl9jb29yZGluYXRlcyddXCIpLnZhbCh1aS5pdGVtLmNvb3JkaW5hdGVzKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChpZF9zaXRlICE9ICcnKSB7XHJcbiAgICAgICAgICAgICAgICAkLmFqYXgoe1xyXG4gICAgICAgICAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAnL3NlY3RldXIvY29tcGFyZS9zZWN0ZXVyX3NpdGUvJytpZF9zaXRlKycnLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiBcImpzb25cIixcclxuICAgICAgICAgICAgICAgICAgICBkYXRhOiB7XCJjb29yZGluYXRlc1wiOiB1aS5pdGVtLmNvb3JkaW5hdGVzfSxcclxuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbihkYXRhKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuZXJyb3IgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChlbGVtZW50KS5uZXh0KCkuc2hvdygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChlbGVtZW50KS5uZXh0KCkuYWRkQ2xhc3MoJ2FsZXJ0IGFsZXJ0LWRhbmdlcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChlbGVtZW50KS5uZXh0KCkuY3NzKCdkaXNwbGF5JywgJ2ZsZXgnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZWxlbWVudCkubmV4dCgpLmNzcygnYWxpZ24taXRlbXMnLCAnY2VudGVyJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGVsZW1lbnQpLm5leHQoKS5odG1sKCc8aSBjbGFzcz1cImZhIGZhLXdhcm5pbmdcIj48L2k+JyArZGF0YS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZWxlbWVudCkubmV4dCgpLnJlbW92ZUNsYXNzKCdhbGVydCBhbGVydC1kYW5nZXInKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZWxlbWVudCkubmV4dCgpLmhpZGUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICAkKCdpbnB1dFtuYW1lPWVxdWlwZW1lbnRfbG9jYWxpc2F0aW9uX2FkZF0nKS5hdXRvY29tcGxldGUoe1xyXG4gICAgICAgIHNvdXJjZTogZnVuY3Rpb24ocmVxdWVzdCwgcmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgJC5hamF4KHtcclxuICAgICAgICAgICAgICAgIG1ldGhvZDogXCJHRVRcIixcclxuICAgICAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vYXBpLWFkcmVzc2UuZGF0YS5nb3V2LmZyL3NlYXJjaC8/cT0nICsgJChcImlucHV0W25hbWU9J2VxdWlwZW1lbnRfbG9jYWxpc2F0aW9uX2FkZCddXCIpLnZhbCgpICsgJyZ0eXBlPWhvdXNlbnVtYmVyJmF1dG9jb21wbGV0ZT0xJmxpbWl0PTEwJyxcclxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiBcImpzb25cIixcclxuICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKGRhdGEpe1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlKCQubWFwKGRhdGEuZmVhdHVyZXMsIGZ1bmN0aW9uIChpdGVtKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhZHJlc3NlcyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBJY2kgb24gZXN0IG9ibGlnw6kgZCdham91dGVyIGxlcyBDUCBkYW5zIHVuIGFycmF5IHBvdXIgbmUgcGFzIGF2b2lyIHBsdXNpZXVycyBmb2lzIGxlIG3Dqm1lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkLmluQXJyYXkoaXRlbS5wcm9wZXJ0aWVzLmxhYmVsLCBhZHJlc3NlcykgPT0gLTEgJiYgaXRlbS5wcm9wZXJ0aWVzLmhvdXNlbnVtYmVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZHJlc3Nlcy5wdXNoKGl0ZW0ucHJvcGVydGllcy5sYWJlbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBsYWJlbDogaXRlbS5wcm9wZXJ0aWVzLmxhYmVsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNpdHk6IGl0ZW0ucHJvcGVydGllcy5jaXR5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc3Rjb2RlOiBpdGVtLnByb3BlcnRpZXMucG9zdGNvZGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogaXRlbS5wcm9wZXJ0aWVzLm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29vcmRpbmF0ZXM6IGl0ZW0uZ2VvbWV0cnkuY29vcmRpbmF0ZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLyBPbiByZW1wbGl0IGF1c3NpIGxhIHZpbGxlXHJcbiAgICAgICAgc2VsZWN0OiBmdW5jdGlvbihldmVudCwgdWkpIHtcclxuICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSAkKHRoaXMpO1xyXG4gICAgICAgICAgICAkKFwiaW5wdXRbbmFtZT0nY29kZV9wb3N0YWxfYWRkJ11cIikudmFsKHVpLml0ZW0ucG9zdGNvZGUpO1xyXG4gICAgICAgICAgICAkKFwiaW5wdXRbbmFtZT0ndmlsbGVfYWRkJ11cIikudmFsKHVpLml0ZW0uY2l0eSk7XHJcbiAgICAgICAgICAgICQoXCJpbnB1dFtuYW1lPSdhZHJlc3NlX2FkZCddXCIpLnZhbCh1aS5pdGVtLm5hbWUpO1xyXG4gICAgICAgICAgICAkKFwiaW5wdXRbbmFtZT0nY29vcmRpbmF0ZXNfYWRkJ11cIikudmFsKHVpLml0ZW0uY29vcmRpbmF0ZXMpO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgICQoJ2JvZHknKS5vbignY2xpY2snLCAnLmJ0bi1jcCcsIGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgJCgnLmJ0bi1jcCcpLnJlbW92ZUNsYXNzKCdiZy12ZXJ0Jyk7XHJcbiAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygnYmctdmVydCcpO1xyXG4gICAgICAgIHZhciBpZF9lcXVpcGVtZW50ID0gJCh0aGlzKS5kYXRhKCdlcXVpcGVtZW50Jyk7XHJcbiAgICAgICAgaWYgKCQodGhpcykuYXR0cignaWQnKSA9PSAnYnRuLWNoYW50aWVyLScgKyBpZF9lcXVpcGVtZW50KSB7XHJcbiAgICAgICAgICAgICQoJyNjcC1udW0tY2hhbnRpZXItJyArIGlkX2VxdWlwZW1lbnQpLnByb3AoJ3JlcXVpcmVkJyx0cnVlKTtcclxuICAgICAgICAgICAgJCgnI3NhbGFyaWVfY2hhbnRpZXItJyArIGlkX2VxdWlwZW1lbnQgKS52YWwoJ2NoYW50aWVyJyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgJCgnI2NwLW51bS1jaGFudGllci0nICsgaWRfZXF1aXBlbWVudCkucHJvcCgncmVxdWlyZWQnLGZhbHNlKTtcclxuICAgICAgICAgICAgJCgnI3NhbGFyaWVfY2hhbnRpZXItJyArIGlkX2VxdWlwZW1lbnQpLnZhbCgnc2FsYXJpZScpO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgJCgnYm9keScpLm9uKCdjbGljaycsICcuZGV0YWlsLWNsaWVudCcsIGZ1bmN0aW9uKGUpIHtcclxuICAgICAgICB2YXIgaWRfc2VsZWN0ID0gJCh0aGlzKS5kYXRhKCdzZWxlY3QtaWQnKTtcclxuICAgICAgICB2YXIgdmFsdWUgPSAkKCcjJytpZF9zZWxlY3QpLnZhbCgpO1xyXG4gICAgICAgICQodGhpcykuZGF0YSgnY29udGVudC10ZW1wbGF0ZS1hamF4JywgJy9jbGllbnRzL2RldGFpbF9jbGllbnQvJyArIHZhbHVlKTtcclxuICAgIH0pO1xyXG5cclxuICAgICQoJ2JvZHknKS5vbignY2xpY2snLCAnI3NhbGFyaWUtZnJpc3F1ZXQnLCBmdW5jdGlvbihlKSB7XHJcbiAgICAgICAgaWYgKCQodGhpcykuYXR0cignZGlzYWJsZWQnKSkge1xyXG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKCQodGhpcykuaGFzQ2xhc3MoJ2FjdGl2ZScpKSB7XHJcbiAgICAgICAgICAgICAgICAkKHRoaXMpLnJlbW92ZUNsYXNzKCdhY3RpdmUnKTtcclxuICAgICAgICAgICAgICAgICQoJ2lucHV0W25hbWU9c2FsYXJpZV9mcmlzcXVldF0nKS52YWwoZmFsc2UpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygnYWN0aXZlJyk7XHJcbiAgICAgICAgICAgICAgICAkKCdpbnB1dFtuYW1lPXNhbGFyaWVfZnJpc3F1ZXRdJykudmFsKHRydWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSlcclxuICAgICQoJ2JvZHknKS5vbignY2xpY2snLCAnI2NsaWVudC1jaGFudGllcicsIGZ1bmN0aW9uKGUpIHtcclxuICAgICAgICBpZiAoJCh0aGlzKS5hdHRyKCdkaXNhYmxlZCcpKSB7XHJcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoJCh0aGlzKS5oYXNDbGFzcygnYWN0aXZlJykpIHtcclxuICAgICAgICAgICAgICAgICQodGhpcykucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpO1xyXG4gICAgICAgICAgICAgICAgJCgnaW5wdXRbbmFtZT1lcXVpcGVtZW50X2NoYW50aWVyXScpLnByb3AoJ2Rpc2FibGVkJyx0cnVlKTtcclxuICAgICAgICAgICAgICAgICQoJ2lucHV0W25hbWU9ZXF1aXBlbWVudF9jaGFudGllcl0nKS52YWwoJycpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygnYWN0aXZlJyk7XHJcbiAgICAgICAgICAgICAgICAkKCdpbnB1dFtuYW1lPWVxdWlwZW1lbnRfY2hhbnRpZXJdJykucHJvcCgnZGlzYWJsZWQnLGZhbHNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0pXHJcbiAgICAkKGRvY3VtZW50KS5jbGljayhmdW5jdGlvbihldmVudCkge1xyXG4gICAgICAgIC8vIFbDqXJpZmlleiBzaSBsZSBjbGljIGVzdCBlbiBkZWhvcnMgZGUgI215RWxlbWVudFxyXG4gICAgICAgIGlmICgkKGV2ZW50LnRhcmdldCkuYXR0cignaWQnKSAhPSAnc2hvdy1lcXVpcGVtZW50cycgJiYgJChldmVudC50YXJnZXQpLnBhcmVudCgpLmF0dHIoJ2lkJykgIT0gJ3Nob3ctZXF1aXBlbWVudHMnKSB7XHJcbiAgICAgICAgICAgIGlmICghJChldmVudC50YXJnZXQpLmNsb3Nlc3QoJyNsaXN0LWVxdWlwZW1lbnRzJykubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBDYWNoZXIgbCfDqWzDqW1lbnQgc2kgaWwgZXN0IHZpc2libGVcclxuICAgICAgICAgICAgICAgIGlmICghJCgnI2xpc3QtZXF1aXBlbWVudHMnKS5pcygnOmhpZGRlbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgJCgnI2xpc3QtZXF1aXBlbWVudHMnKS5oaWRlKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9KVxyXG4gICAgJCgnYm9keScpLm9uKCdjbGljaycsICcjc2hvdy1lcXVpcGVtZW50cycsIGZ1bmN0aW9uKGUpIHtcclxuICAgICAgICBpZiAoISQoJyNsaXN0LWVxdWlwZW1lbnRzJykuaXMoJzpoaWRkZW4nKSkge1xyXG4gICAgICAgICAgICAkKCcjbGlzdC1lcXVpcGVtZW50cycpLmhpZGUoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAkKCcjbGlzdC1lcXVpcGVtZW50cycpLnNob3coKTtcclxuICAgICAgICB9XHJcbiAgICB9KVxyXG4gICAgJCgnI2xpc3QtZXF1aXBlbWVudHMnKS5jbGljayhmdW5jdGlvbihldmVudCl7XHJcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB9KTtcclxuICAgICQoJ2JvZHknKS5vbignY2xpY2snLCAnI3Jlc2V0LXByZWZlcmVuY2VzJywgZnVuY3Rpb24oZSkge1xyXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAkKCcjZm9ybS1wcmVmZXJlbmNlcy1wbGFuaWZpY2F0aW9uJylbMF0ucmVzZXQoKTtcclxuICAgICAgICAkKCcucGxhbmlmaWNhdGlvbicpLnZhbCgnJyk7XHJcbiAgICAgICAgJCgnI2Zvcm0tcHJlZmVyZW5jZXMtcGxhbmlmaWNhdGlvbiBzZWxlY3QnKS5lYWNoKGZ1bmN0aW9uKGUpeyQodGhpcykuZmluZCgnb3B0aW9uOmZpcnN0JykucHJvcCgnc2VsZWN0ZWQnLHRydWUpO30pO1xyXG4gICAgICAgICQoJyNmb3JtLXByZWZlcmVuY2VzLXBsYW5pZmljYXRpb24gaW5wdXRbdHlwZT1jaGVja2JveF0nKS5lYWNoKGZ1bmN0aW9uKGUpIHtcclxuICAgICAgICAgICAgJCh0aGlzKS5wcm9wKCdjaGVja2VkJywgZmFsc2UpO1xyXG4gICAgICAgICAgICAkKHRoaXMpLnJlbW92ZUF0dHIoJ2NoZWNrZWQnKTtcclxuICAgICAgICB9KVxyXG4gICAgICAgICQoJy5pbnB1dC1kYXRlcGlja2VyJykuZWFjaChmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICQodGhpcykuZGF0ZXBpY2tlcignc2V0RGF0ZScsbnVsbCk7XHJcbiAgICAgICAgICAgICQodGhpcykuZGF0ZXBpY2tlcignb3B0aW9uJywgJ21pbkRhdGUnLCBudWxsKTtcclxuICAgICAgICAgICAgJCh0aGlzKS5kYXRlcGlja2VyKCdvcHRpb24nLCAnbWF4RGF0ZScsIG51bGwpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgJCgnYm9keScpLm9uKCdjbGljaycsICcjc3VibWl0LWdlc3Rpb24tcHJlZicsIGZ1bmN0aW9uKGUpIHtcclxuICAgICAgICBpZiAoISQoJ2lucHV0W25hbWU9XCJlcXVpcGVtZW50X2R1cGxpcXVlcltdXCJdJykuaXMoJzpjaGVja2VkJykpIHtcclxuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgLy9nZXN0aW9uIHJlY2hlcmNoZSBjbGllbnQgZGFucyBzb3VzY3JpcHRldXIgZXQgdXRpbGlzYXRldXJcclxuICAgICQoJyNwb3B1cC1jaGFuZ2VtZW50LXNvdXNjcmlwdGV1ciBpbnB1dFtuYW1lPW51bWVyb19jbGllbnRdJykubWFzaygnMDAgMDAgMDAwMDAnLHt0cmFuc2xhdGlvbjogIHsnMCc6IHtwYXR0ZXJuOiAvWzAtOV0vLCByZWN1cnNpdmU6IGZhbHNlfX19KTtcclxuICAgICQoJyNwb3B1cC1hZGQtdXRpbGlzYXRldXIgaW5wdXRbbmFtZT1udW1lcm9fY2xpZW50XScpLm1hc2soJzAwIDAwIDAwMDAwJyx7dHJhbnNsYXRpb246ICB7JzAnOiB7cGF0dGVybjogL1swLTldLywgcmVjdXJzaXZlOiBmYWxzZX19fSk7XHJcbiAgICAkKCcuaW5wdXRfYWZmZWN0ZXJfZXF1aXBlbWVudCcpLnByb3AoJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJyk7XHJcbiAgICAkKCcuaW5wdXRfY3JlZXJfY2xpZW50JykucHJvcCgnZGlzYWJsZWQnLCdkaXNhYmxlZCcpO1xyXG4gICAgJCgnLmlucHV0X2FmZmVjdGVyX2VxdWlwZW1lbnQnKS5vbignY2hhbmdlJyxmdW5jdGlvbihlKSB7XHJcbiAgICAgICAgdmFyIGZvcm0gPSAnIycrJCh0aGlzKS5hdHRyKCdmb3JtJyk7XHJcbiAgICAgICAgaWYgKCQodGhpcykuaXMoJzpjaGVja2VkJykpIHtcclxuICAgICAgICAgICAgJChmb3JtICsnIC5zcGFuX2FmZmVjdGVyX2VxdWlwZW1lbnQnKS5hZGRDbGFzcygnY29sb3ItcHJpbWFyeScpO1xyXG4gICAgICAgICAgICAkKGZvcm0gKycgLm5vdXZlYXVfY2xpZW50X2NyZWF0aW9uJykuaGlkZSgpO1xyXG4gICAgICAgICAgICAkKGZvcm0gKycgLm5vdXZlYXVfY2xpZW50X3JlY2hlcmNoZScpLnNob3coKTtcclxuICAgICAgICAgICAgJChmb3JtICsnIC5zdWJtaXQtZm9ybScpLnJlbW92ZUF0dHIoJ2Rpc2FibGVkJyk7XHJcbiAgICAgICAgICAgICQoZm9ybSArJyBpbnB1dFtuYW1lPXR5cGVfYWRkXScpLnZhbCgncmVjaGVyY2hlJyk7XHJcbiAgICAgICAgICAgICQoZm9ybSArJyAuaW5wdXRfY3JlZXJfY2xpZW50JykucHJvcCgnY2hlY2tlZCcsIGZhbHNlKTtcclxuICAgICAgICAgICAgJChmb3JtICsnIC5zcGFuX2NyZWVyX2NsaWVudCcpLnJlbW92ZUNsYXNzKCdjb2xvci1wcmltYXJ5Jyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgJChmb3JtICsnIC5zdWJtaXQtZm9ybScpLmF0dHIoJ2Rpc2FibGVkJyk7XHJcbiAgICAgICAgICAgICQoZm9ybSArJyAuc3VibWl0LWZvcm0nKS5wcm9wKCdkaXNhYmxlZCcsICdkaXNhYmxlZCcpO1xyXG4gICAgICAgICAgICAkKGZvcm0gKycgLnNwYW5fYWZmZWN0ZXJfZXF1aXBlbWVudCcpLnJlbW92ZUNsYXNzKCdjb2xvci1wcmltYXJ5Jyk7XHJcbiAgICAgICAgICAgICQoZm9ybSArJyAubm91dmVhdV9jbGllbnRfcmVjaGVyY2hlJykuaGlkZSgpO1xyXG4gICAgICAgICAgICAkKGZvcm0gKycgaW5wdXRbbmFtZT10eXBlX2FkZF0nKS52YWwoJycpO1xyXG4gICAgICAgIH1cclxuICAgIH0pXHJcbiAgICAkKCcuaW5wdXRfY3JlZXJfY2xpZW50Jykub24oJ2NoYW5nZScsZnVuY3Rpb24oZSkge1xyXG4gICAgICAgIGlmICgkKHRoaXMpLmlzKCc6Y2hlY2tlZCcpKSB7XHJcbiAgICAgICAgICAgIHZhciBmb3JtID0gJyMnKyQodGhpcykuYXR0cignZm9ybScpO1xyXG4gICAgICAgICAgICAkKGZvcm0rJyAuc3Bhbl9jcmVlcl9jbGllbnQnKS5hZGRDbGFzcygnY29sb3ItcHJpbWFyeScpO1xyXG4gICAgICAgICAgICAkKGZvcm0gKycgLnN1Ym1pdC1mb3JtJykucmVtb3ZlQXR0cignZGlzYWJsZWQnKTtcclxuICAgICAgICAgICAgJChmb3JtICsnIGlucHV0W25hbWU9dHlwZV9hZGRdJykudmFsKCduZXcnKTtcclxuICAgICAgICAgICAgJChmb3JtICsnIC5ub3V2ZWF1X2NsaWVudF9jcmVhdGlvbi0tdGl0bGUnKS50ZXh0KCdOdW1lcm8gQ2xpZW50IDogLScpO1xyXG4gICAgICAgICAgICBpZiAoJChmb3JtICsgJyBpbnB1dFtuYW1lPWNsaWVudF9ub21dJykuaXMoJzp2aXNpYmxlJykpIHtcclxuICAgICAgICAgICAgICAgICQoZm9ybSArJyAubm91dmVhdV9jbGllbnRfY3JlYXRpb24tLW5vbScpLnRleHQoJChmb3JtICsgJyBpbnB1dFtuYW1lPWV0YXRfY2l2aWxdOnNlbGVjdGVkJykudGV4dCgpICsgJyAnICskKGZvcm0gKyAnIGlucHV0W25hbWU9Y2xpZW50X25vbScpLnZhbCgpICsgJyAnICsgJChmb3JtICsgJyBpbnB1dFtuYW1lPWNsaWVudF9wcmVub20nKS52YWwoKSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAkKGZvcm0gKycgLm5vdXZlYXVfY2xpZW50X2NyZWF0aW9uLS1ub20nKS50ZXh0KCQoZm9ybSArICcgaW5wdXRbbmFtZT1jbGllbnRfZW50cmVwcmlzZScpLnZhbCgpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAkKGZvcm0gKycgLm5vdXZlYXVfY2xpZW50X2NyZWF0aW9uLS1lbWFpbHMnKS50ZXh0KCQoZm9ybSArICcgaW5wdXRbbmFtZT1lbWFpbCcpLnZhbCgpKTtcclxuICAgICAgICAgICAgJChmb3JtICsnIC5ub3V2ZWF1X2NsaWVudF9jcmVhdGlvbi0tYWRyZXNzZScpLnRleHQoJycpO1xyXG4gICAgICAgICAgICAkKGZvcm0gKycgLm5vdXZlYXVfY2xpZW50X2NyZWF0aW9uJykuc2hvdygpO1xyXG4gICAgICAgICAgICAkKGZvcm0gKycgLm5vdXZlYXVfY2xpZW50X3JlY2hlcmNoZScpLmhpZGUoKTtcclxuICAgICAgICAgICAgJChmb3JtICsnIGlucHV0W25hbWU9aW5wdXRfYWZmZWN0ZXJfZXF1aXBlbWVudF0nKS5wcm9wKCdjaGVja2VkJywgZmFsc2UpO1xyXG4gICAgICAgICAgICAkKGZvcm0gKycgLnNwYW5fYWZmZWN0ZXJfZXF1aXBlbWVudCcpLnJlbW92ZUNsYXNzKCdjb2xvci1wcmltYXJ5Jyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgJChmb3JtICsnIC5zcGFuX2NyZWVyX2NsaWVudCcpLnJlbW92ZUNsYXNzKCdjb2xvci1wcmltYXJ5Jyk7XHJcbiAgICAgICAgICAgICQoZm9ybSArJyAubm91dmVhdV9jbGllbnRfY3JlYXRpb24nKS5oaWRlKCk7XHJcbiAgICAgICAgICAgICQoZm9ybSArJyAuc3VibWl0LWZvcm0nKS5hdHRyKCdkaXNhYmxlZCcpO1xyXG4gICAgICAgICAgICAkKGZvcm0gKycgLnN1Ym1pdC1mb3JtJykucHJvcCgnZGlzYWJsZWQnLCAnZGlzYWJsZWQnKTtcclxuICAgICAgICAgICAgJChmb3JtICsnIGlucHV0W25hbWU9dHlwZV9hZGRdJykudmFsKCcnKTtcclxuICAgICAgICB9XHJcbiAgICB9KVxyXG5cclxuICAgICQoJ2JvZHknKS5vbignY2xpY2snLCAnI3Jlc2V0LWZvcm0tY2hhbmdlLXNvdXNjcmlwdGV1ciwjcmVzZXQtZm9ybS1jaGFuZ2UtdXRpbGlzYXRldXInLCBmdW5jdGlvbihlKSB7XHJcbiAgICAgICAgJCgnI2Zvcm0tY2hhbmdlbWVudC1zb3VzY3JpcHRldXInKVswXS5yZXNldCgpO1xyXG4gICAgICAgICQoJyNmb3JtLWFkZC11dGlsaXNhdGV1cicpWzBdLnJlc2V0KCk7XHJcbiAgICAgICAgJCgnLnJlc3VsdC1zb3VzY3JpcHRldXItY2xpZW50JykuaGlkZSgpO1xyXG4gICAgICAgICQoJy5ub3V2ZWF1X2NsaWVudF9yZWNoZXJjaGUnKS5oaWRlKCk7XHJcbiAgICAgICAgJCgnLm5vdXZlYXVfY2xpZW50X2NyZWF0aW9uJykuaGlkZSgpO1xyXG4gICAgICAgICQoJy5pbnB1dF9hZmZlY3Rlcl9lcXVpcGVtZW50JykucHJvcCgnY2hlY2tlZCcsIGZhbHNlKTtcclxuICAgICAgICAkKCcuaW5wdXRfY3JlZXJfY2xpZW50JykucHJvcCgnY2hlY2tlZCcsIGZhbHNlKTtcclxuICAgIH0pXHJcbiAgICB2YXIgY3VycmVudFJlcXVlc3QgPSBudWxsO1xyXG4gICAgdmFyIGRlYm91bmNlVGltZXI7XHJcbiAgICAkKCdib2R5Jykub24oJ2lucHV0JywnaW5wdXRbbmFtZT1jbGllbnRfbm9tXSxpbnB1dFtuYW1lPWNsaWVudF9lbnRyZXByaXNlXSxpbnB1dFtuYW1lPWNsaWVudF9wcmVub21dLGlucHV0W25hbWU9ZW1haWxdLGlucHV0W25hbWU9bnVtZXJvX2NsaWVudF0sc2VsZWN0W25hbWU9Y2F0ZWdvcmllX3Byb10nLCBmdW5jdGlvbihlKSB7XHJcbiAgICAgICAgdmFyIG5vbV9mb3JtID0gJyMnKyQodGhpcykuYXR0cignZm9ybScpO1xyXG4gICAgICAgIC8vIEFubnVsZSBsJ8OpdsOpbmVtZW50IHByw6ljw6lkZW50IHMnaWwgZXN0IGVuY29yZSBlbiBjb3Vyc1xyXG4gICAgICAgIGNsZWFyVGltZW91dChkZWJvdW5jZVRpbWVyKTtcclxuICAgICAgICBpZiAoKCQobm9tX2Zvcm0gKyAnIHNlbGVjdFtuYW1lPXR5cGVfY2xpZW50XScpLnZhbCgpID09IDEgJiYgJChub21fZm9ybSArJyBpbnB1dFtuYW1lPWNsaWVudF9ub21dJykudmFsKCkudHJpbSgpLmxlbmd0aCA+IDIpXHJcbiAgICAgICAgICAgIHx8ICgkKG5vbV9mb3JtICsgJyBzZWxlY3RbbmFtZT10eXBlX2NsaWVudF0nKS52YWwoKSA9PSAyICYmICQobm9tX2Zvcm0gKycgaW5wdXRbbmFtZT1jbGllbnRfZW50cmVwcmlzZV0nKS52YWwoKS50cmltKCkubGVuZ3RoID4gMiAmJiAkKG5vbV9mb3JtICsnIHNlbGVjdFtuYW1lPWNhdGVnb3JpZV9wcm9dJykudmFsKCkgIT0gJycpKSB7XHJcbiAgICAgICAgICAgICQobm9tX2Zvcm0gKyAnIGlucHV0W25hbWU9aW5wdXRfY3JlZXJfY2xpZW50XScpLnJlbW92ZUF0dHIoJ2Rpc2FibGVkJyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgJChub21fZm9ybSArICcgaW5wdXRbbmFtZT1pbnB1dF9jcmVlcl9jbGllbnRdJykuYXR0cignZGlzYWJsZWQnKTtcclxuICAgICAgICAgICAgJChub21fZm9ybSArICcgaW5wdXRbbmFtZT1pbnB1dF9jcmVlcl9jbGllbnRdJykucHJvcCgnZGlzYWJsZWQnLCdkaXNhYmxlZCcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgZm9ybURhdGEgPSAkKCcjJyskKHRoaXMpLmF0dHIoJ2Zvcm0nKSkuc2VyaWFsaXplKCk7XHJcblxyXG4gICAgICAgIGRlYm91bmNlVGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAkKG5vbV9mb3JtICsnIGlucHV0W25hbWU9Y2xpZW50X25vbV0nKS52YWwoKS50cmltKCkubGVuZ3RoID4gMiB8fFxyXG4gICAgICAgICAgICAgICAgJChub21fZm9ybSArJyBpbnB1dFtuYW1lPWNsaWVudF9wcmVub21dJykudmFsKCkudHJpbSgpLmxlbmd0aCA+IDIgfHxcclxuICAgICAgICAgICAgICAgICQobm9tX2Zvcm0gKycgaW5wdXRbbmFtZT1lbWFpbF0nKS52YWwoKS50cmltKCkubGVuZ3RoID4gMiB8fFxyXG4gICAgICAgICAgICAgICAgJChub21fZm9ybSArJyBpbnB1dFtuYW1lPWNsaWVudF9lbnRyZXByaXNlXScpLnZhbCgpLnRyaW0oKS5sZW5ndGggPiAyIHx8XHJcbiAgICAgICAgICAgICAgICAkKG5vbV9mb3JtICsnIGlucHV0W25hbWU9bnVtZXJvX2NsaWVudF0nKS52YWwoKS50cmltKCkubGVuZ3RoID4gMlxyXG4gICAgICAgICAgICApIHtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBBbm51bGVyIGxhIHJlcXXDqnRlIHByw6ljw6lkZW50ZSBzaSBlbGxlIGVzdCB0b3Vqb3VycyBlbiBjb3Vyc1xyXG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRSZXF1ZXN0ICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50UmVxdWVzdC5hYm9ydCgpOyAvLyBBbm51bGUgbGEgcmVxdcOqdGUgcHLDqWPDqWRlbnRlXHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgY3VycmVudFJlcXVlc3QgPSAkLmFqYXgoe1xyXG4gICAgICAgICAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAnL2NsaWVudHMvcmVjaGVyY2hlJyxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogXCJqc29uXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogZm9ybURhdGEsXHJcbiAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc0RhdGE6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKGRhdGFzKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGFzLnNvdXJjZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChub21fZm9ybSArICcgLnJlc3VsdC1zb3VzY3JpcHRldXItY2xpZW50JykuY3NzKCdtYXgtaGVpZ2h0JywnMjI5cHgnKS5jc3MoJ21pbi1oZWlnaHQnLCcyMjlweCcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChub21fZm9ybSArJyBpbnB1dFtuYW1lPWlucHV0X2FmZmVjdGVyX2VxdWlwZW1lbnRdJykucHJvcCgnZGlzYWJsZWQnLCAnZGlzYWJsZWQnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQobm9tX2Zvcm0gKyAnIC5yZXN1bHQtc291c2NyaXB0ZXVyLWNsaWVudCcpLnNob3coKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChub21fZm9ybSArJyBpbnB1dFtuYW1lPWlucHV0X2FmZmVjdGVyX2VxdWlwZW1lbnRdJykucHJvcCgnZGlzYWJsZWQnLCAnZGlzYWJsZWQnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQobm9tX2Zvcm0gKycgaW5wdXRbbmFtZT1pbnB1dF9hZmZlY3Rlcl9lcXVpcGVtZW50XScpLnByb3AoJ2NoZWNrZWQnLCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKG5vbV9mb3JtICsgJyAubm91dmVhdV9jbGllbnRfcmVjaGVyY2hlJykuaGlkZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChub21fZm9ybSArICcgLm5vdXZlYXVfY2xpZW50X3JlY2hlcmNoZS0tdGl0bGUnKS50ZXh0KCcnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQobm9tX2Zvcm0gKyAnIC5ub3V2ZWF1X2NsaWVudF9yZWNoZXJjaGUtLW5vbScpLnRleHQoJycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChub21fZm9ybSArICcgLm5vdXZlYXVfY2xpZW50X3JlY2hlcmNoZS0tYWRyZXNzZScpLnRleHQoJycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChub21fZm9ybSArICcgLm5vdXZlYXVfY2xpZW50X3JlY2hlcmNoZS0tZW1haWxzJykudGV4dCgnJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgJChub21fZm9ybSArICcgLnJlc3VsdC1zb3VzY3JpcHRldXItY2xpZW50JykuZHhEYXRhR3JpZCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhU291cmNlOiBkYXRhcy5zb3VyY2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zOmRhdGFzLmNvbG9ubmVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uQXV0b1dpZHRoOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0JvcmRlcnM6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkluaXRpYWxpemVkOiBmdW5jdGlvbihlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5jb21wb25lbnQuYmVnaW5DdXN0b21Mb2FkaW5nKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db250ZW50UmVhZHk6IGZ1bmN0aW9uKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmNvbXBvbmVudC5lbmRDdXN0b21Mb2FkaW5nKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZTogJ3NpbmdsZScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TZWxlY3Rpb25DaGFuZ2VkOiBmdW5jdGlvbihlKSB7IC8vIEhhbmRsZXIgb2YgdGhlIFwic2VsZWN0aW9uQ2hhbmdlZFwiIGV2ZW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGFsbFNlbGVjdGVkUm93c0RhdGEgPSBlLnNlbGVjdGVkUm93c0RhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFsbFNlbGVjdGVkUm93c0RhdGEubGVuZ3RoICE9IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChub21fZm9ybSArJyBpbnB1dFtuYW1lPWlucHV0X2FmZmVjdGVyX2VxdWlwZW1lbnRdJykucmVtb3ZlQXR0cignZGlzYWJsZWQnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChub21fZm9ybSArICcgLm5vdXZlYXVfY2xpZW50X3JlY2hlcmNoZS0tdGl0bGUnKS50ZXh0KCdOdW1lcm8gQ2xpZW50IDogJyArIGFsbFNlbGVjdGVkUm93c0RhdGFbMF0ubnVtZXJvX2NsaWVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQobm9tX2Zvcm0gKyAnIC5ub3V2ZWF1X2NsaWVudF9yZWNoZXJjaGUtLW5vbScpLnRleHQoYWxsU2VsZWN0ZWRSb3dzRGF0YVswXS5ub21fY29tcGxldCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQobm9tX2Zvcm0gKyAnIC5ub3V2ZWF1X2NsaWVudF9yZWNoZXJjaGUtLWFkcmVzc2UnKS50ZXh0KGFsbFNlbGVjdGVkUm93c0RhdGFbMF0uYWRyZXNzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQobm9tX2Zvcm0gKyAnIC5ub3V2ZWF1X2NsaWVudF9yZWNoZXJjaGUtLWVtYWlscycpLnRleHQoYWxsU2VsZWN0ZWRSb3dzRGF0YVswXS5lbWFpbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQobm9tX2Zvcm0gKyAnIGlucHV0W25hbWU9bmV3X2NsaWVudF9zb3VzY3JpcHRldXJdJykudmFsKGFsbFNlbGVjdGVkUm93c0RhdGFbMF0uaWRfY2xpZW50KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkKG5vbV9mb3JtICsgJyBpbnB1dFtuYW1lPWlucHV0X2FmZmVjdGVyX2VxdWlwZW1lbnQnKS5pcygnOmNoZWNrZWQnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChub21fZm9ybSArJyBpbnB1dFtuYW1lPWlucHV0X2FmZmVjdGVyX2VxdWlwZW1lbnRdJykuY2xpY2soKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoJChub21fZm9ybSArICcgLnJlc3VsdC1zb3VzY3JpcHRldXItY2xpZW50JykuaXMoJzp2aXNpYmxlJykpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgZ3JpZCA9ICQobm9tX2Zvcm0gKyBcIiAucmVzdWx0LXNvdXNjcmlwdGV1ci1jbGllbnRcIikuZHhEYXRhR3JpZChcImluc3RhbmNlXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGdyaWQub3B0aW9uKFwiZGF0YVNvdXJjZVwiLCBbXSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LCAzMDApO1xyXG5cclxuICAgIH0pO1xyXG5cclxuICAgICQoJ2JvZHknKS5vbignY2hhbmdlJywgJ3NlbGVjdFtuYW1lPXBsYW5pZmllcl9wcmVmZXJlbmNlXSwgc2VsZWN0W25hbWU9cGxhbmlmaWVyX3BhcnRpZV9qb3VybmVlXSwgc2VsZWN0W25hbWU9cGxhbmlmaWVyX2FnZW50XScsIGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIGNoZWNrUHJlZmVyZW5jZVBsYW5uaWZpY2F0aW9uKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCBsb2NrSWQgPSAkKCcjbG9jay1pZCcpLnZhbCgpO1xyXG5cclxuICAgIGZ1bmN0aW9uIGNoZWNrTG9ja0V4cGlyYXRpb24oKSB7XHJcbiAgICAgICAgaWYgKGxvY2tJZCkge1xyXG4gICAgICAgICAgICAkLmFqYXgoe1xyXG4gICAgICAgICAgICAgICAgdXJsOiBgL2NoZWNrX2V4cGlyYXRpb25fbG9jay8ke2xvY2tJZH1gLCAvLyBNb2RpZmllIGwnVVJMIHNlbG9uIHRhIHJvdXRlIFN5bWZvbnlcclxuICAgICAgICAgICAgICAgIG1ldGhvZDogJ0dFVCcsXHJcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ2pzb24nLFxyXG4gICAgICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmV4cGlyZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy9hZmZpY2hlciBsYSBwb3B1cCBkdSBjaG9peCBkZSBmZXJtZXIgbGEgZmljaGUgb3UgcmFmZnJhaWNoaXIgbGEgcGFnZSBjbGllbnRcclxuICAgICAgICAgICAgICAgICAgICAgICAvLyB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCAkKCcjcG9wdXAtbG9jay1leHBpcmVkLScgKyAkKCcjaWRfZXF1aXBlbWVudF91cGRhdGUnKS52YWwoKSkuaXMoJzpoaWRkZW4nKSApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcG9wdXBfbG9jayA9ICQoJyNwb3B1cC1sb2NrLWV4cGlyZWQtJyArICQoJyNpZF9lcXVpcGVtZW50X3VwZGF0ZScpLnZhbCgpKS5keFBvcHVwKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogXCJhdXRvXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OlwiYXV0b1wiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEhlaWdodDogXCI5MHZoXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyOiBcIi5keC12aWV3cG9ydFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dUaXRsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXCJJbmFjdGl2aXTDqVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYWdFbmFibGVkOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYWdPdXRzaWRlQm91bmRhcnk6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VPbk91dHNpZGVDbGljazogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0Nsb3NlQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRBdHRyOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiBcIm5vYnV0dG9uIGRhcmtfc2hhZG93XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0OiBcImNlbnRlclwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteTogXCJjZW50ZXJcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbGlzaW9uIDogJ2ZpdCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLmR4UG9wdXAoJ2luc3RhbmNlJyk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI3BvcHVwLWxvY2stZXhwaXJlZC0nICsgJCgnI2lkX2VxdWlwZW1lbnRfdXBkYXRlJykudmFsKCkpLnNob3coKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcHVwX2xvY2suc2hvdygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0VycmV1ciBsb3JzIGRlIGxhIHbDqXJpZmljYXRpb24gZHUgbG9jay4nKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ3BhcyBkZSBsb2NrJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIGNoZWNrUHJlZmVyZW5jZVBsYW5uaWZpY2F0aW9uKCkge1xyXG4gICAgICAgIGlmKCQoJ3NlbGVjdFtuYW1lPXBsYW5pZmllcl9wcmVmZXJlbmNlXSBvcHRpb246c2VsZWN0ZWQnKS52YWwoKSA9PSAnSW5kaWZmw6lyZW50Jykge1xyXG4gICAgICAgICAgICAkKCdpbnB1dFtuYW1lPVwicGxhbmlmaWVyX2pvdXJbXVwiXScpLmF0dHIoJ2Rpc2FibGVkJyk7XHJcbiAgICAgICAgICAgICQoJ2lucHV0W25hbWU9XCJwbGFuaWZpZXJfam91cltdXCJdJykucHJvcCgnZGlzYWJsZWQnLHRydWUpO1xyXG4gICAgICAgICAgICAkKCdpbnB1dFtuYW1lPVwicGxhbmlmaWVyX2pvdXJbXVwiXScpLnByb3AoJ2NoZWNrZWQnLGZhbHNlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAkKCdpbnB1dFtuYW1lPVwicGxhbmlmaWVyX2pvdXJbXVwiXScpLnJlbW92ZUF0dHIoJ2Rpc2FibGVkJyk7XHJcbiAgICAgICAgICAgICQoJ2lucHV0W25hbWU9XCJwbGFuaWZpZXJfam91cltdXCJdJykucHJvcCgnZGlzYWJsZWQnLGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYoJCgnc2VsZWN0W25hbWU9cGxhbmlmaWVyX3BhcnRpZV9qb3VybmVlXSBvcHRpb246c2VsZWN0ZWQnKS52YWwoKSA9PSAnSW5kaWZmw6lyZW50Jykge1xyXG4gICAgICAgICAgICAkKCdpbnB1dFtuYW1lPXByZW1pZXJlX3Zpc2l0ZV0nKS5wcm9wKCdkaXNhYmxlZCcsdHJ1ZSk7XHJcbiAgICAgICAgICAgICQoJ2lucHV0W25hbWU9cHJlbWllcmVfdmlzaXRlXScpLmF0dHIoJ2Rpc2FibGVkJyk7XHJcbiAgICAgICAgICAgICQoJ2lucHV0W25hbWU9cHJlbWllcmVfdmlzaXRlXScpLnByb3AoJ2NoZWNrZWQnLCBmYWxzZSk7XHJcbiAgICAgICAgICAgICQoJ3NlbGVjdFtuYW1lPXBsYW5pZmllcl9wbGFnZV9ob3JhaXJlXSBvcHRpb246Zmlyc3QnKS5wcm9wKCdzZWxlY3RlZCcsIHRydWUpO1xyXG4gICAgICAgICAgICAkKCdzZWxlY3RbbmFtZT1wbGFuaWZpZXJfcGxhZ2VfaG9yYWlyZV0nKS5wcm9wKCdkaXNhYmxlZCcsdHJ1ZSk7XHJcbiAgICAgICAgICAgICQoJ3NlbGVjdFtuYW1lPXBsYW5pZmllcl9wbGFnZV9ob3JhaXJlXScpLmF0dHIoJ2Rpc2FibGVkJyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgJCgnaW5wdXRbbmFtZT1wcmVtaWVyZV92aXNpdGVdJykucmVtb3ZlQXR0cignZGlzYWJsZWQnKTtcclxuICAgICAgICAgICAgJCgnaW5wdXRbbmFtZT1wcmVtaWVyZV92aXNpdGVdJykucHJvcCgnZGlzYWJsZWQnLGZhbHNlKTtcclxuICAgICAgICAgICAgJCgnc2VsZWN0W25hbWU9cGxhbmlmaWVyX3BsYWdlX2hvcmFpcmVdJykucHJvcCgnZGlzYWJsZWQnLGZhbHNlKTtcclxuICAgICAgICAgICAgJCgnc2VsZWN0W25hbWU9cGxhbmlmaWVyX3BsYWdlX2hvcmFpcmVdJykucmVtb3ZlQXR0cignZGlzYWJsZWQnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmKCQoJ3NlbGVjdFtuYW1lPXBsYW5pZmllcl9hZ2VudF0gb3B0aW9uOnNlbGVjdGVkJykudmFsKCkgPT0gJ0luZGlmZsOpcmVudCcpIHtcclxuICAgICAgICAgICAgJCgnc2VsZWN0W25hbWU9cHJlZmVyZW5jZV9hZ2VudF0nKS5wcm9wKCdkaXNhYmxlZCcsdHJ1ZSk7XHJcbiAgICAgICAgICAgICQoJ3NlbGVjdFtuYW1lPXByZWZlcmVuY2VfYWdlbnRdIG9wdGlvbjpmaXJzdCcpLnByb3AoJ3NlbGVjdGVkJyx0cnVlKTtcclxuICAgICAgICAgICAgJCgnc2VsZWN0W25hbWU9cHJlZmVyZW5jZV9hZ2VudF0nKS5hdHRyKCdkaXNhYmxlZCcpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICQoJ3NlbGVjdFtuYW1lPXByZWZlcmVuY2VfYWdlbnRdJykucHJvcCgnZGlzYWJsZWQnLGZhbHNlKTtcclxuICAgICAgICAgICAgJCgnc2VsZWN0W25hbWU9cHJlZmVyZW5jZV9hZ2VudF0nKS5yZW1vdmVBdHRyKCdkaXNhYmxlZCcpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHNldEludGVydmFsKGNoZWNrTG9ja0V4cGlyYXRpb24sIDYwMDAwKTtcclxuICAgIGNoZWNrUHJlZmVyZW5jZVBsYW5uaWZpY2F0aW9uKCk7XHJcblxyXG4gICAgLy9vbiBzZWxlY3Rpb25uZSBsYSBwcmVtaWVyZSBpbnRlcnZlbnRpb24gc2kgeWVuIGEgdW5lXHJcbiAgICBpZiAoJCgnLmludGVydmVudGlvbl9jbGllbnQnKS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgJCgnLmludGVydmVudGlvbl9jbGllbnQnKS5maXJzdCgpLnRyaWdnZXIoJ2NsaWNrJyk7XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9", "@public_path/build/client.js", "/builds/dev/refonte_sav/public/build/client.js");
    }
}
