403Webshell
Server IP : 85.158.181.41  /  Your IP : 216.73.217.12
Web Server : Apache
System : Linux cloud9-vm129 6.1.178+1-ph #ph SMP PREEMPT_DYNAMIC Wed Jul 29 09:00:54 UTC 2026 x86_64
User : moncbefd ( 1024)
PHP Version : 7.3.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/moncbefd/www.moneta.at/public/theme/javascripts/system/widgets/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /home/moncbefd/www.moneta.at/public/theme/javascripts/system/widgets/parcelshopfinderresult.js
'use strict';

/* --------------------------------------------------------------
	parcelshopfinderresult.js 2017-03-21
	Gambio GmbH
	http://www.gambio.de
	Copyright (c) 2016 Gambio GmbH
	Released under the GNU General Public License (Version 2)
	[http://www.gnu.org/licenses/gpl-2.0.html]
	--------------------------------------------------------------
*/

gambio.widgets.module('parcelshopfinderresult', [], function (data) {

    'use strict';

    // ########## VARIABLE INITIALIZATION ##########

    var $this = $(this),
        defaults = {},
        options = $.extend(true, {}, defaults, data),
        module = {};

    var initMap = function initMap() {
        var map;
        var geocoder;
        var clickMarker;
        var markers = [];
        map = new google.maps.Map(document.getElementById('map'), {
            center: markerData[0].position,
            zoom: 14
        });
        map.addListener('click', function (e) {
            console.log(e);
            geocoder.geocode({ 'location': e.latLng }, function (results, status) {
                if (status === 'OK') {
                    console.log(results);
                    if (results[0].types[0] === 'street_address') {
                        var markerAddress = results[0].formatted_address;

                        if (!clickMarker) {
                            clickMarker = new google.maps.Marker({
                                map: map,
                                position: results[0].geometry.location,
                                title: markerAddress
                            });
                        } else {
                            clickMarker.setPosition(results[0].geometry.location);
                            clickMarker.setTitle(markerAddress);
                        }

                        var street = void 0,
                            houseNo = void 0,
                            postCode = void 0,
                            city = void 0,
                            country = void 0,
                            country_iso = void 0;
                        results[0].address_components.forEach(function (component) {
                            if (component.types.indexOf('street_number') >= 0) {
                                houseNo = component.long_name;
                                $('input[name="house"]').val(houseNo);
                            }
                            if (component.types.indexOf('route') >= 0) {
                                street = component.long_name;
                                $('input[name="street"]').val(street);
                            }
                            if (component.types.indexOf('postal_code') >= 0) {
                                postCode = component.long_name;
                                $('input[name="zip"]').val(postCode);
                            }
                            if (component.types.indexOf('locality') >= 0) {
                                city = component.long_name;
                                $('input[name="city"]').val(city);
                            }
                            if (component.types.indexOf('country') >= 0) {
                                country = component.long_name;
                                country_iso = component.short_name;
                                if ($('select[name="country"] option[value="' + country_iso + '"]').length > 0) {
                                    $('select[name="country"]').val(country_iso);
                                }
                            }
                        });
                        /* $('#psf-form').show();
                        $('#psfnewsearch').hide(); */
                        $('#psf-form').trigger('submit');
                    }
                } else {
                    console.log('geocoder failed - ' + status);
                }
            });
        });
        markerData.forEach(function (markerParams) {
            markerParams.map = map;
            var newMarker = new google.maps.Marker(markerParams);
            newMarker.addListener('click', function (e) {
                var markerLabel = markerParams.label,
                    $markerRow = $('tr#marker_' + markerLabel),
                    markerRowOffset = $markerRow.offset();
                $('html, body').animate({ 'scrollTop': markerRowOffset.top - $('body').height() / 2 }, 500);
                $markerRow.addClass('marker_clicked');
                $('tr.parcelshop').not($markerRow).removeClass('marker_clicked');
                markers.forEach(function (marker, index) {
                    marker.setAnimation(null);
                });
                newMarker.setAnimation(google.maps.Animation.BOUNCE);
            });
            markers.push(newMarker);
            $('#marker_' + markerParams.label + ' div.mapmarkerlabel_icon').on('click', function (e) {
                var $markerRow = $(this).closest('tr');
                map.setCenter(newMarker.getPosition());
                markers.forEach(function (marker, index) {
                    marker.setAnimation(null);
                });
                newMarker.setAnimation(google.maps.Animation.BOUNCE);
                $markerRow.addClass('marker_clicked');
                $('tr.parcelshop').not($markerRow).removeClass('marker_clicked');
                $('#map').get(0).scrollIntoView({ behavior: "smooth", block: "end" });
            });
        });
        geocoder = new google.maps.Geocoder();
        geocoder.geocode({ 'address': searchAddress }, function (results, status) {
            if (status == 'OK') {
                map.setCenter(results[0].geometry.location);
                var marker = new google.maps.Marker({
                    map: map,
                    position: results[0].geometry.location
                });
            }
        });
    };

    // ########## INITIALIZATION ##########

    /**
     * Initialize Module
     * @constructor
     */
    module.init = function (done) {
        var toggleButton = function toggleButton(enabled) {
            if (enabled == true) {
                $('#psf_make_new_ab_entry').removeAttr('disabled');
            } else {
                $('#psf_make_new_ab_entry').attr('disabled', 'disabled');
            }
        };

        var validateInput = function validateInput() {
            toggleButton($('#psf_new_ab input').hasClass('invalid') === false);
        };

        $('button.prepare_ab_entry').on('click', function (e) {
            e.preventDefault();
            var $row = $(this).closest('tr'),
                parcelshop_heading = $('strong.parcelshop_heading', $row).text(),
                street_address = $('span.street_address', $row).text(),
                house_number = $('span.house_number', $row).text(),
                additional_info = $('span.additional_info', $row).text(),
                country_iso = $('span.country_iso', $row).text(),
                postcode = $('span.postcode', $row).text(),
                city = $('span.city', $row).text(),
                shop_name = $('span.shop_name', $row).text(),
                psf_name;
            if (country_iso !== 'DE') {
                additional_info = additional_info + ' (' + shop_name + ')';
            }
            psf_name = parcelshop_heading;
            if (shop_name.length > 0) {
                psf_name += ', ' + shop_name;
            }
            psf_name += ', ' + postcode + ' ' + city;
            $('#psf_name').val(psf_name);
            $('#psf_new_ab input[name="street_address"]').val(street_address);
            $('#psf_new_ab input[name="house_number"]').val(house_number);
            $('#psf_new_ab input[name="additional_info"]').val(additional_info);
            $('#psf_new_ab input[name="country"]').val(country_iso);
            $('#psf_new_ab input[name="postcode"]').val(postcode);
            $('#psf_new_ab input[name="city"]').val(city);
            $('#psf_name').removeClass('invalid');
            $('#psf_new_ab').show('fast', function () {
                $('#psf_new_ab').get(0).scrollIntoView({ behavior: "smooth", block: "end" });
            });
            validateInput();
        });

        $('#psf_new_ab input[name="firstname"], #psf_new_ab input[name="lastname"]').on('keyup', function (e) {
            $(e.target).toggleClass('invalid', $(e.target).val().length <= 2);
            validateInput();
        });

        $('#psf_new_ab input[name="postnumber"]').on('keyup', function (e) {
            if ($(this).val().length > 5) {
                $.ajax({
                    url: jse.core.config.get('appUrl') + '/shop.php?do=Parcelshopfinder/ValidatePostnumber&postnumber=' + $(this).val(),
                    dataType: 'json'
                }).done(function (data) {
                    $('#psf_new_ab input[name="postnumber"]').toggleClass('invalid', data.postnumberIsValid !== true);
                    validateInput();
                });
            } else {
                $('#psf_new_ab input[name="postnumber"]').toggleClass('invalid', true);
                validateInput();
            }
        });
        $('#psf_new_ab input[name="postnumber"]').on('change', function (e) {
            $('#psf_new_ab input[name="postnumber"]').trigger('keyup');
        });
        $('#psf_new_ab input').trigger('keyup');

        if (typeof psfDynamic !== 'undefined' && psfDynamic === true) {
            initMap();
        }

        done();
    };

    return module;
});
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndpZGdldHMvcGFyY2Vsc2hvcGZpbmRlcnJlc3VsdC5qcyJdLCJuYW1lcyI6WyJnYW1iaW8iLCJ3aWRnZXRzIiwibW9kdWxlIiwiZGF0YSIsIiR0aGlzIiwiJCIsImRlZmF1bHRzIiwib3B0aW9ucyIsImV4dGVuZCIsImluaXRNYXAiLCJtYXAiLCJnZW9jb2RlciIsImNsaWNrTWFya2VyIiwibWFya2VycyIsImdvb2dsZSIsIm1hcHMiLCJNYXAiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiY2VudGVyIiwibWFya2VyRGF0YSIsInBvc2l0aW9uIiwiem9vbSIsImFkZExpc3RlbmVyIiwiZSIsImNvbnNvbGUiLCJsb2ciLCJnZW9jb2RlIiwibGF0TG5nIiwicmVzdWx0cyIsInN0YXR1cyIsInR5cGVzIiwibWFya2VyQWRkcmVzcyIsImZvcm1hdHRlZF9hZGRyZXNzIiwiTWFya2VyIiwiZ2VvbWV0cnkiLCJsb2NhdGlvbiIsInRpdGxlIiwic2V0UG9zaXRpb24iLCJzZXRUaXRsZSIsInN0cmVldCIsImhvdXNlTm8iLCJwb3N0Q29kZSIsImNpdHkiLCJjb3VudHJ5IiwiY291bnRyeV9pc28iLCJhZGRyZXNzX2NvbXBvbmVudHMiLCJmb3JFYWNoIiwiY29tcG9uZW50IiwiaW5kZXhPZiIsImxvbmdfbmFtZSIsInZhbCIsInNob3J0X25hbWUiLCJsZW5ndGgiLCJ0cmlnZ2VyIiwibWFya2VyUGFyYW1zIiwibmV3TWFya2VyIiwibWFya2VyTGFiZWwiLCJsYWJlbCIsIiRtYXJrZXJSb3ciLCJtYXJrZXJSb3dPZmZzZXQiLCJvZmZzZXQiLCJhbmltYXRlIiwidG9wIiwiaGVpZ2h0IiwiYWRkQ2xhc3MiLCJub3QiLCJyZW1vdmVDbGFzcyIsIm1hcmtlciIsImluZGV4Iiwic2V0QW5pbWF0aW9uIiwiQW5pbWF0aW9uIiwiQk9VTkNFIiwicHVzaCIsIm9uIiwiY2xvc2VzdCIsInNldENlbnRlciIsImdldFBvc2l0aW9uIiwiZ2V0Iiwic2Nyb2xsSW50b1ZpZXciLCJiZWhhdmlvciIsImJsb2NrIiwiR2VvY29kZXIiLCJzZWFyY2hBZGRyZXNzIiwiaW5pdCIsImRvbmUiLCJ0b2dnbGVCdXR0b24iLCJlbmFibGVkIiwicmVtb3ZlQXR0ciIsImF0dHIiLCJ2YWxpZGF0ZUlucHV0IiwiaGFzQ2xhc3MiLCJwcmV2ZW50RGVmYXVsdCIsIiRyb3ciLCJwYXJjZWxzaG9wX2hlYWRpbmciLCJ0ZXh0Iiwic3RyZWV0X2FkZHJlc3MiLCJob3VzZV9udW1iZXIiLCJhZGRpdGlvbmFsX2luZm8iLCJwb3N0Y29kZSIsInNob3BfbmFtZSIsInBzZl9uYW1lIiwic2hvdyIsInRhcmdldCIsInRvZ2dsZUNsYXNzIiwiYWpheCIsInVybCIsImpzZSIsImNvcmUiLCJjb25maWciLCJkYXRhVHlwZSIsInBvc3RudW1iZXJJc1ZhbGlkIiwicHNmRHluYW1pYyJdLCJtYXBwaW5ncyI6Ijs7QUFBQTs7Ozs7Ozs7OztBQVVBQSxPQUFPQyxPQUFQLENBQWVDLE1BQWYsQ0FDSSx3QkFESixFQUdJLEVBSEosRUFLSSxVQUFVQyxJQUFWLEVBQWdCOztBQUVaOztBQUVBOztBQUVBLFFBQUlDLFFBQVFDLEVBQUUsSUFBRixDQUFaO0FBQUEsUUFDSUMsV0FBVyxFQURmO0FBQUEsUUFFSUMsVUFBVUYsRUFBRUcsTUFBRixDQUFTLElBQVQsRUFBZSxFQUFmLEVBQW1CRixRQUFuQixFQUE2QkgsSUFBN0IsQ0FGZDtBQUFBLFFBR0lELFNBQVMsRUFIYjs7QUFLQSxRQUFJTyxVQUFVLFNBQVZBLE9BQVUsR0FBWTtBQUN0QixZQUFJQyxHQUFKO0FBQ0EsWUFBSUMsUUFBSjtBQUNBLFlBQUlDLFdBQUo7QUFDQSxZQUFJQyxVQUFVLEVBQWQ7QUFDQUgsY0FBTSxJQUFJSSxPQUFPQyxJQUFQLENBQVlDLEdBQWhCLENBQW9CQyxTQUFTQyxjQUFULENBQXdCLEtBQXhCLENBQXBCLEVBQW9EO0FBQ3REQyxvQkFBUUMsV0FBVyxDQUFYLEVBQWNDLFFBRGdDO0FBRXREQyxrQkFBTTtBQUZnRCxTQUFwRCxDQUFOO0FBSUFaLFlBQUlhLFdBQUosQ0FBZ0IsT0FBaEIsRUFBeUIsVUFBVUMsQ0FBVixFQUFhO0FBQ2xDQyxvQkFBUUMsR0FBUixDQUFZRixDQUFaO0FBQ0FiLHFCQUFTZ0IsT0FBVCxDQUFpQixFQUFDLFlBQVlILEVBQUVJLE1BQWYsRUFBakIsRUFBeUMsVUFBVUMsT0FBVixFQUFtQkMsTUFBbkIsRUFBMkI7QUFDaEUsb0JBQUlBLFdBQVcsSUFBZixFQUFxQjtBQUNqQkwsNEJBQVFDLEdBQVIsQ0FBWUcsT0FBWjtBQUNBLHdCQUFJQSxRQUFRLENBQVIsRUFBV0UsS0FBWCxDQUFpQixDQUFqQixNQUF3QixnQkFBNUIsRUFBOEM7QUFDMUMsNEJBQUlDLGdCQUFnQkgsUUFBUSxDQUFSLEVBQVdJLGlCQUEvQjs7QUFFQSw0QkFBSSxDQUFDckIsV0FBTCxFQUFrQjtBQUNkQSwwQ0FBYyxJQUFJRSxPQUFPQyxJQUFQLENBQVltQixNQUFoQixDQUF1QjtBQUNqQ3hCLHFDQUFLQSxHQUQ0QjtBQUVqQ1csMENBQVVRLFFBQVEsQ0FBUixFQUFXTSxRQUFYLENBQW9CQyxRQUZHO0FBR2pDQyx1Q0FBT0w7QUFIMEIsNkJBQXZCLENBQWQ7QUFLSCx5QkFORCxNQU1PO0FBQ0hwQix3Q0FBWTBCLFdBQVosQ0FBd0JULFFBQVEsQ0FBUixFQUFXTSxRQUFYLENBQW9CQyxRQUE1QztBQUNBeEIsd0NBQVkyQixRQUFaLENBQXFCUCxhQUFyQjtBQUNIOztBQUVELDRCQUFJUSxlQUFKO0FBQUEsNEJBQVlDLGdCQUFaO0FBQUEsNEJBQXFCQyxpQkFBckI7QUFBQSw0QkFBK0JDLGFBQS9CO0FBQUEsNEJBQXFDQyxnQkFBckM7QUFBQSw0QkFBOENDLG9CQUE5QztBQUNBaEIsZ0NBQVEsQ0FBUixFQUFXaUIsa0JBQVgsQ0FBOEJDLE9BQTlCLENBQXNDLFVBQVVDLFNBQVYsRUFBcUI7QUFDdkQsZ0NBQUlBLFVBQVVqQixLQUFWLENBQWdCa0IsT0FBaEIsQ0FBd0IsZUFBeEIsS0FBNEMsQ0FBaEQsRUFBbUQ7QUFDL0NSLDBDQUFVTyxVQUFVRSxTQUFwQjtBQUNBN0Msa0NBQUUscUJBQUYsRUFBeUI4QyxHQUF6QixDQUE2QlYsT0FBN0I7QUFDSDtBQUNELGdDQUFJTyxVQUFVakIsS0FBVixDQUFnQmtCLE9BQWhCLENBQXdCLE9BQXhCLEtBQW9DLENBQXhDLEVBQTJDO0FBQ3ZDVCx5Q0FBU1EsVUFBVUUsU0FBbkI7QUFDQTdDLGtDQUFFLHNCQUFGLEVBQTBCOEMsR0FBMUIsQ0FBOEJYLE1BQTlCO0FBQ0g7QUFDRCxnQ0FBSVEsVUFBVWpCLEtBQVYsQ0FBZ0JrQixPQUFoQixDQUF3QixhQUF4QixLQUEwQyxDQUE5QyxFQUFpRDtBQUM3Q1AsMkNBQVdNLFVBQVVFLFNBQXJCO0FBQ0E3QyxrQ0FBRSxtQkFBRixFQUF1QjhDLEdBQXZCLENBQTJCVCxRQUEzQjtBQUNIO0FBQ0QsZ0NBQUlNLFVBQVVqQixLQUFWLENBQWdCa0IsT0FBaEIsQ0FBd0IsVUFBeEIsS0FBdUMsQ0FBM0MsRUFBOEM7QUFDMUNOLHVDQUFPSyxVQUFVRSxTQUFqQjtBQUNBN0Msa0NBQUUsb0JBQUYsRUFBd0I4QyxHQUF4QixDQUE0QlIsSUFBNUI7QUFDSDtBQUNELGdDQUFJSyxVQUFVakIsS0FBVixDQUFnQmtCLE9BQWhCLENBQXdCLFNBQXhCLEtBQXNDLENBQTFDLEVBQTZDO0FBQ3pDTCwwQ0FBVUksVUFBVUUsU0FBcEI7QUFDQUwsOENBQWNHLFVBQVVJLFVBQXhCO0FBQ0Esb0NBQUkvQyxFQUFFLDBDQUEwQ3dDLFdBQTFDLEdBQXdELElBQTFELEVBQWdFUSxNQUFoRSxHQUF5RSxDQUE3RSxFQUFnRjtBQUM1RWhELHNDQUFFLHdCQUFGLEVBQTRCOEMsR0FBNUIsQ0FBZ0NOLFdBQWhDO0FBQ0g7QUFDSjtBQUNKLHlCQXhCRDtBQXlCQTs7QUFFQXhDLDBCQUFFLFdBQUYsRUFBZWlELE9BQWYsQ0FBdUIsUUFBdkI7QUFDSDtBQUNKLGlCQTlDRCxNQThDTztBQUNIN0IsNEJBQVFDLEdBQVIsQ0FBWSx1QkFBdUJJLE1BQW5DO0FBQ0g7QUFDSixhQWxERDtBQW1ESCxTQXJERDtBQXNEQVYsbUJBQVcyQixPQUFYLENBQW1CLFVBQVVRLFlBQVYsRUFBd0I7QUFDdkNBLHlCQUFhN0MsR0FBYixHQUFtQkEsR0FBbkI7QUFDQSxnQkFBSThDLFlBQVksSUFBSTFDLE9BQU9DLElBQVAsQ0FBWW1CLE1BQWhCLENBQXVCcUIsWUFBdkIsQ0FBaEI7QUFDQUMsc0JBQVVqQyxXQUFWLENBQXNCLE9BQXRCLEVBQStCLFVBQVVDLENBQVYsRUFBYTtBQUN4QyxvQkFBSWlDLGNBQWNGLGFBQWFHLEtBQS9CO0FBQUEsb0JBQ0lDLGFBQWF0RCxFQUFFLGVBQWVvRCxXQUFqQixDQURqQjtBQUFBLG9CQUVJRyxrQkFBa0JELFdBQVdFLE1BQVgsRUFGdEI7QUFHQXhELGtCQUFFLFlBQUYsRUFBZ0J5RCxPQUFoQixDQUF3QixFQUFDLGFBQWFGLGdCQUFnQkcsR0FBaEIsR0FBdUIxRCxFQUFFLE1BQUYsRUFBVTJELE1BQVYsS0FBcUIsQ0FBMUQsRUFBeEIsRUFBdUYsR0FBdkY7QUFDQUwsMkJBQVdNLFFBQVgsQ0FBb0IsZ0JBQXBCO0FBQ0E1RCxrQkFBRSxlQUFGLEVBQW1CNkQsR0FBbkIsQ0FBdUJQLFVBQXZCLEVBQW1DUSxXQUFuQyxDQUErQyxnQkFBL0M7QUFDQXRELHdCQUFRa0MsT0FBUixDQUFnQixVQUFVcUIsTUFBVixFQUFrQkMsS0FBbEIsRUFBeUI7QUFDckNELDJCQUFPRSxZQUFQLENBQW9CLElBQXBCO0FBQ0gsaUJBRkQ7QUFHQWQsMEJBQVVjLFlBQVYsQ0FBdUJ4RCxPQUFPQyxJQUFQLENBQVl3RCxTQUFaLENBQXNCQyxNQUE3QztBQUNILGFBWEQ7QUFZQTNELG9CQUFRNEQsSUFBUixDQUFhakIsU0FBYjtBQUNBbkQsY0FBRSxhQUFha0QsYUFBYUcsS0FBMUIsR0FBa0MsMEJBQXBDLEVBQWdFZ0IsRUFBaEUsQ0FBbUUsT0FBbkUsRUFBNEUsVUFBVWxELENBQVYsRUFBYTtBQUNyRixvQkFBSW1DLGFBQWF0RCxFQUFFLElBQUYsRUFBUXNFLE9BQVIsQ0FBZ0IsSUFBaEIsQ0FBakI7QUFDQWpFLG9CQUFJa0UsU0FBSixDQUFjcEIsVUFBVXFCLFdBQVYsRUFBZDtBQUNBaEUsd0JBQVFrQyxPQUFSLENBQWdCLFVBQVVxQixNQUFWLEVBQWtCQyxLQUFsQixFQUF5QjtBQUNyQ0QsMkJBQU9FLFlBQVAsQ0FBb0IsSUFBcEI7QUFDSCxpQkFGRDtBQUdBZCwwQkFBVWMsWUFBVixDQUF1QnhELE9BQU9DLElBQVAsQ0FBWXdELFNBQVosQ0FBc0JDLE1BQTdDO0FBQ0FiLDJCQUFXTSxRQUFYLENBQW9CLGdCQUFwQjtBQUNBNUQsa0JBQUUsZUFBRixFQUFtQjZELEdBQW5CLENBQXVCUCxVQUF2QixFQUFtQ1EsV0FBbkMsQ0FBK0MsZ0JBQS9DO0FBQ0E5RCxrQkFBRSxNQUFGLEVBQVV5RSxHQUFWLENBQWMsQ0FBZCxFQUFpQkMsY0FBakIsQ0FBZ0MsRUFBQ0MsVUFBVSxRQUFYLEVBQXFCQyxPQUFPLEtBQTVCLEVBQWhDO0FBQ0gsYUFWRDtBQVdILFNBM0JEO0FBNEJBdEUsbUJBQVcsSUFBSUcsT0FBT0MsSUFBUCxDQUFZbUUsUUFBaEIsRUFBWDtBQUNBdkUsaUJBQVNnQixPQUFULENBQWlCLEVBQUMsV0FBV3dELGFBQVosRUFBakIsRUFBNkMsVUFBVXRELE9BQVYsRUFBbUJDLE1BQW5CLEVBQTJCO0FBQ3BFLGdCQUFJQSxVQUFVLElBQWQsRUFBb0I7QUFDaEJwQixvQkFBSWtFLFNBQUosQ0FBYy9DLFFBQVEsQ0FBUixFQUFXTSxRQUFYLENBQW9CQyxRQUFsQztBQUNBLG9CQUFJZ0MsU0FBUyxJQUFJdEQsT0FBT0MsSUFBUCxDQUFZbUIsTUFBaEIsQ0FBdUI7QUFDaEN4Qix5QkFBS0EsR0FEMkI7QUFFaENXLDhCQUFVUSxRQUFRLENBQVIsRUFBV00sUUFBWCxDQUFvQkM7QUFGRSxpQkFBdkIsQ0FBYjtBQUlIO0FBQ0osU0FSRDtBQVNILEtBckdEOztBQXVHQTs7QUFFQTs7OztBQUlBbEMsV0FBT2tGLElBQVAsR0FBYyxVQUFVQyxJQUFWLEVBQWdCO0FBQzFCLFlBQUlDLGVBQWUsU0FBZkEsWUFBZSxDQUFVQyxPQUFWLEVBQW1CO0FBQ2xDLGdCQUFJQSxXQUFXLElBQWYsRUFBcUI7QUFDakJsRixrQkFBRSx3QkFBRixFQUE0Qm1GLFVBQTVCLENBQXVDLFVBQXZDO0FBQ0gsYUFGRCxNQUVPO0FBQ0huRixrQkFBRSx3QkFBRixFQUE0Qm9GLElBQTVCLENBQWlDLFVBQWpDLEVBQTZDLFVBQTdDO0FBQ0g7QUFDSixTQU5EOztBQVFBLFlBQUlDLGdCQUFnQixTQUFoQkEsYUFBZ0IsR0FBWTtBQUM1QkoseUJBQWFqRixFQUFFLG1CQUFGLEVBQXVCc0YsUUFBdkIsQ0FBZ0MsU0FBaEMsTUFBK0MsS0FBNUQ7QUFDSCxTQUZEOztBQUtBdEYsVUFBRSx5QkFBRixFQUE2QnFFLEVBQTdCLENBQWdDLE9BQWhDLEVBQXlDLFVBQVVsRCxDQUFWLEVBQWE7QUFDbERBLGNBQUVvRSxjQUFGO0FBQ0EsZ0JBQUlDLE9BQU94RixFQUFFLElBQUYsRUFBUXNFLE9BQVIsQ0FBZ0IsSUFBaEIsQ0FBWDtBQUFBLGdCQUNJbUIscUJBQXFCekYsRUFBRSwyQkFBRixFQUErQndGLElBQS9CLEVBQXFDRSxJQUFyQyxFQUR6QjtBQUFBLGdCQUVJQyxpQkFBaUIzRixFQUFFLHFCQUFGLEVBQXlCd0YsSUFBekIsRUFBK0JFLElBQS9CLEVBRnJCO0FBQUEsZ0JBR0lFLGVBQWU1RixFQUFFLG1CQUFGLEVBQXVCd0YsSUFBdkIsRUFBNkJFLElBQTdCLEVBSG5CO0FBQUEsZ0JBSUlHLGtCQUFrQjdGLEVBQUUsc0JBQUYsRUFBMEJ3RixJQUExQixFQUFnQ0UsSUFBaEMsRUFKdEI7QUFBQSxnQkFLSWxELGNBQWN4QyxFQUFFLGtCQUFGLEVBQXNCd0YsSUFBdEIsRUFBNEJFLElBQTVCLEVBTGxCO0FBQUEsZ0JBTUlJLFdBQVc5RixFQUFFLGVBQUYsRUFBbUJ3RixJQUFuQixFQUF5QkUsSUFBekIsRUFOZjtBQUFBLGdCQU9JcEQsT0FBT3RDLEVBQUUsV0FBRixFQUFld0YsSUFBZixFQUFxQkUsSUFBckIsRUFQWDtBQUFBLGdCQVFJSyxZQUFZL0YsRUFBRSxnQkFBRixFQUFvQndGLElBQXBCLEVBQTBCRSxJQUExQixFQVJoQjtBQUFBLGdCQVNJTSxRQVRKO0FBVUEsZ0JBQUl4RCxnQkFBZ0IsSUFBcEIsRUFBMEI7QUFDdEJxRCxrQ0FBa0JBLGtCQUFrQixJQUFsQixHQUF5QkUsU0FBekIsR0FBcUMsR0FBdkQ7QUFDSDtBQUNEQyx1QkFBV1Asa0JBQVg7QUFDQSxnQkFBSU0sVUFBVS9DLE1BQVYsR0FBbUIsQ0FBdkIsRUFBMEI7QUFDdEJnRCw0QkFBWSxPQUFPRCxTQUFuQjtBQUNIO0FBQ0RDLHdCQUFZLE9BQU9GLFFBQVAsR0FBa0IsR0FBbEIsR0FBd0J4RCxJQUFwQztBQUNBdEMsY0FBRSxXQUFGLEVBQWU4QyxHQUFmLENBQW1Ca0QsUUFBbkI7QUFDQWhHLGNBQUUsMENBQUYsRUFBOEM4QyxHQUE5QyxDQUFrRDZDLGNBQWxEO0FBQ0EzRixjQUFFLHdDQUFGLEVBQTRDOEMsR0FBNUMsQ0FBZ0Q4QyxZQUFoRDtBQUNBNUYsY0FBRSwyQ0FBRixFQUErQzhDLEdBQS9DLENBQW1EK0MsZUFBbkQ7QUFDQTdGLGNBQUUsbUNBQUYsRUFBdUM4QyxHQUF2QyxDQUEyQ04sV0FBM0M7QUFDQXhDLGNBQUUsb0NBQUYsRUFBd0M4QyxHQUF4QyxDQUE0Q2dELFFBQTVDO0FBQ0E5RixjQUFFLGdDQUFGLEVBQW9DOEMsR0FBcEMsQ0FBd0NSLElBQXhDO0FBQ0F0QyxjQUFFLFdBQUYsRUFBZThELFdBQWYsQ0FBMkIsU0FBM0I7QUFDQTlELGNBQUUsYUFBRixFQUFpQmlHLElBQWpCLENBQXNCLE1BQXRCLEVBQThCLFlBQVk7QUFDdENqRyxrQkFBRSxhQUFGLEVBQWlCeUUsR0FBakIsQ0FBcUIsQ0FBckIsRUFBd0JDLGNBQXhCLENBQXVDLEVBQUNDLFVBQVUsUUFBWCxFQUFxQkMsT0FBTyxLQUE1QixFQUF2QztBQUNILGFBRkQ7QUFHQVM7QUFDSCxTQWhDRDs7QUFtQ0FyRixVQUFFLHlFQUFGLEVBQTZFcUUsRUFBN0UsQ0FBZ0YsT0FBaEYsRUFBeUYsVUFBVWxELENBQVYsRUFBYTtBQUNsR25CLGNBQUVtQixFQUFFK0UsTUFBSixFQUFZQyxXQUFaLENBQXdCLFNBQXhCLEVBQW1DbkcsRUFBRW1CLEVBQUUrRSxNQUFKLEVBQVlwRCxHQUFaLEdBQWtCRSxNQUFsQixJQUE0QixDQUEvRDtBQUNBcUM7QUFDSCxTQUhEOztBQUtBckYsVUFBRSxzQ0FBRixFQUEwQ3FFLEVBQTFDLENBQTZDLE9BQTdDLEVBQXNELFVBQVVsRCxDQUFWLEVBQWE7QUFDL0QsZ0JBQUluQixFQUFFLElBQUYsRUFBUThDLEdBQVIsR0FBY0UsTUFBZCxHQUF1QixDQUEzQixFQUE4QjtBQUMxQmhELGtCQUFFb0csSUFBRixDQUFPO0FBQ0hDLHlCQUFLQyxJQUFJQyxJQUFKLENBQVNDLE1BQVQsQ0FBZ0IvQixHQUFoQixDQUFvQixRQUFwQixJQUFnQyw4REFBaEMsR0FBaUd6RSxFQUFFLElBQUYsRUFBUThDLEdBQVIsRUFEbkc7QUFFSDJELDhCQUFVO0FBRlAsaUJBQVAsRUFJS3pCLElBSkwsQ0FJVSxVQUFVbEYsSUFBVixFQUFnQjtBQUNsQkUsc0JBQUUsc0NBQUYsRUFBMENtRyxXQUExQyxDQUFzRCxTQUF0RCxFQUFrRXJHLEtBQUs0RyxpQkFBTCxLQUEyQixJQUE3RjtBQUNBckI7QUFDSCxpQkFQTDtBQVFILGFBVEQsTUFTTztBQUNIckYsa0JBQUUsc0NBQUYsRUFBMENtRyxXQUExQyxDQUFzRCxTQUF0RCxFQUFpRSxJQUFqRTtBQUNBZDtBQUNIO0FBQ0osU0FkRDtBQWVBckYsVUFBRSxzQ0FBRixFQUEwQ3FFLEVBQTFDLENBQTZDLFFBQTdDLEVBQXVELFVBQVVsRCxDQUFWLEVBQWE7QUFDaEVuQixjQUFFLHNDQUFGLEVBQTBDaUQsT0FBMUMsQ0FBa0QsT0FBbEQ7QUFDSCxTQUZEO0FBR0FqRCxVQUFFLG1CQUFGLEVBQXVCaUQsT0FBdkIsQ0FBK0IsT0FBL0I7O0FBRUEsWUFBSSxPQUFRMEQsVUFBUixLQUF3QixXQUF4QixJQUF1Q0EsZUFBZSxJQUExRCxFQUFnRTtBQUM1RHZHO0FBQ0g7O0FBRUQ0RTtBQUNILEtBL0VEOztBQWlGQSxXQUFPbkYsTUFBUDtBQUNILENBL01MIiwiZmlsZSI6IndpZGdldHMvcGFyY2Vsc2hvcGZpbmRlcnJlc3VsdC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cdHBhcmNlbHNob3BmaW5kZXJyZXN1bHQuanMgMjAxNy0wMy0yMVxuXHRHYW1iaW8gR21iSFxuXHRodHRwOi8vd3d3LmdhbWJpby5kZVxuXHRDb3B5cmlnaHQgKGMpIDIwMTYgR2FtYmlvIEdtYkhcblx0UmVsZWFzZWQgdW5kZXIgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChWZXJzaW9uIDIpXG5cdFtodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTIuMC5odG1sXVxuXHQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuKi9cblxuZ2FtYmlvLndpZGdldHMubW9kdWxlKFxuICAgICdwYXJjZWxzaG9wZmluZGVycmVzdWx0JyxcblxuICAgIFtdLFxuXG4gICAgZnVuY3Rpb24gKGRhdGEpIHtcblxuICAgICAgICAndXNlIHN0cmljdCc7XG5cbiAgICAgICAgLy8gIyMjIyMjIyMjIyBWQVJJQUJMRSBJTklUSUFMSVpBVElPTiAjIyMjIyMjIyMjXG5cbiAgICAgICAgdmFyICR0aGlzID0gJCh0aGlzKSxcbiAgICAgICAgICAgIGRlZmF1bHRzID0ge30sXG4gICAgICAgICAgICBvcHRpb25zID0gJC5leHRlbmQodHJ1ZSwge30sIGRlZmF1bHRzLCBkYXRhKSxcbiAgICAgICAgICAgIG1vZHVsZSA9IHt9O1xuXG4gICAgICAgIHZhciBpbml0TWFwID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIG1hcDtcbiAgICAgICAgICAgIHZhciBnZW9jb2RlcjtcbiAgICAgICAgICAgIHZhciBjbGlja01hcmtlcjtcbiAgICAgICAgICAgIHZhciBtYXJrZXJzID0gW107XG4gICAgICAgICAgICBtYXAgPSBuZXcgZ29vZ2xlLm1hcHMuTWFwKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYXAnKSwge1xuICAgICAgICAgICAgICAgIGNlbnRlcjogbWFya2VyRGF0YVswXS5wb3NpdGlvbixcbiAgICAgICAgICAgICAgICB6b29tOiAxNFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBtYXAuYWRkTGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICAgICAgICAgICAgICBnZW9jb2Rlci5nZW9jb2RlKHsnbG9jYXRpb24nOiBlLmxhdExuZ30sIGZ1bmN0aW9uIChyZXN1bHRzLCBzdGF0dXMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cyA9PT0gJ09LJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2cocmVzdWx0cyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0c1swXS50eXBlc1swXSA9PT0gJ3N0cmVldF9hZGRyZXNzJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtYXJrZXJBZGRyZXNzID0gcmVzdWx0c1swXS5mb3JtYXR0ZWRfYWRkcmVzcztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY2xpY2tNYXJrZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2tNYXJrZXIgPSBuZXcgZ29vZ2xlLm1hcHMuTWFya2VyKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcDogbWFwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlc3VsdHNbMF0uZ2VvbWV0cnkubG9jYXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogbWFya2VyQWRkcmVzc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGlja01hcmtlci5zZXRQb3NpdGlvbihyZXN1bHRzWzBdLmdlb21ldHJ5LmxvY2F0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2tNYXJrZXIuc2V0VGl0bGUobWFya2VyQWRkcmVzcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHN0cmVldCwgaG91c2VObywgcG9zdENvZGUsIGNpdHksIGNvdW50cnksIGNvdW50cnlfaXNvO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHNbMF0uYWRkcmVzc19jb21wb25lbnRzLmZvckVhY2goZnVuY3Rpb24gKGNvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29tcG9uZW50LnR5cGVzLmluZGV4T2YoJ3N0cmVldF9udW1iZXInKSA+PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3VzZU5vID0gY29tcG9uZW50LmxvbmdfbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJ2lucHV0W25hbWU9XCJob3VzZVwiXScpLnZhbChob3VzZU5vKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29tcG9uZW50LnR5cGVzLmluZGV4T2YoJ3JvdXRlJykgPj0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWV0ID0gY29tcG9uZW50LmxvbmdfbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJ2lucHV0W25hbWU9XCJzdHJlZXRcIl0nKS52YWwoc3RyZWV0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29tcG9uZW50LnR5cGVzLmluZGV4T2YoJ3Bvc3RhbF9jb2RlJykgPj0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zdENvZGUgPSBjb21wb25lbnQubG9uZ19uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnaW5wdXRbbmFtZT1cInppcFwiXScpLnZhbChwb3N0Q29kZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbXBvbmVudC50eXBlcy5pbmRleE9mKCdsb2NhbGl0eScpID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNpdHkgPSBjb21wb25lbnQubG9uZ19uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnaW5wdXRbbmFtZT1cImNpdHlcIl0nKS52YWwoY2l0eSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbXBvbmVudC50eXBlcy5pbmRleE9mKCdjb3VudHJ5JykgPj0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRyeSA9IGNvbXBvbmVudC5sb25nX25hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudHJ5X2lzbyA9IGNvbXBvbmVudC5zaG9ydF9uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQoJ3NlbGVjdFtuYW1lPVwiY291bnRyeVwiXSBvcHRpb25bdmFsdWU9XCInICsgY291bnRyeV9pc28gKyAnXCJdJykubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJ3NlbGVjdFtuYW1lPVwiY291bnRyeVwiXScpLnZhbChjb3VudHJ5X2lzbyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAkKCcjcHNmLWZvcm0nKS5zaG93KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI3BzZm5ld3NlYXJjaCcpLmhpZGUoKTsgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjcHNmLWZvcm0nKS50cmlnZ2VyKCdzdWJtaXQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdnZW9jb2RlciBmYWlsZWQgLSAnICsgc3RhdHVzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBtYXJrZXJEYXRhLmZvckVhY2goZnVuY3Rpb24gKG1hcmtlclBhcmFtcykge1xuICAgICAgICAgICAgICAgIG1hcmtlclBhcmFtcy5tYXAgPSBtYXA7XG4gICAgICAgICAgICAgICAgdmFyIG5ld01hcmtlciA9IG5ldyBnb29nbGUubWFwcy5NYXJrZXIobWFya2VyUGFyYW1zKTtcbiAgICAgICAgICAgICAgICBuZXdNYXJrZXIuYWRkTGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG1hcmtlckxhYmVsID0gbWFya2VyUGFyYW1zLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgJG1hcmtlclJvdyA9ICQoJ3RyI21hcmtlcl8nICsgbWFya2VyTGFiZWwpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFya2VyUm93T2Zmc2V0ID0gJG1hcmtlclJvdy5vZmZzZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgJCgnaHRtbCwgYm9keScpLmFuaW1hdGUoeydzY3JvbGxUb3AnOiBtYXJrZXJSb3dPZmZzZXQudG9wIC0gKCQoJ2JvZHknKS5oZWlnaHQoKSAvIDIpfSwgNTAwKTtcbiAgICAgICAgICAgICAgICAgICAgJG1hcmtlclJvdy5hZGRDbGFzcygnbWFya2VyX2NsaWNrZWQnKTtcbiAgICAgICAgICAgICAgICAgICAgJCgndHIucGFyY2Vsc2hvcCcpLm5vdCgkbWFya2VyUm93KS5yZW1vdmVDbGFzcygnbWFya2VyX2NsaWNrZWQnKTtcbiAgICAgICAgICAgICAgICAgICAgbWFya2Vycy5mb3JFYWNoKGZ1bmN0aW9uIChtYXJrZXIsIGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXIuc2V0QW5pbWF0aW9uKG51bGwpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgbmV3TWFya2VyLnNldEFuaW1hdGlvbihnb29nbGUubWFwcy5BbmltYXRpb24uQk9VTkNFKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBtYXJrZXJzLnB1c2gobmV3TWFya2VyKTtcbiAgICAgICAgICAgICAgICAkKCcjbWFya2VyXycgKyBtYXJrZXJQYXJhbXMubGFiZWwgKyAnIGRpdi5tYXBtYXJrZXJsYWJlbF9pY29uJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyICRtYXJrZXJSb3cgPSAkKHRoaXMpLmNsb3Nlc3QoJ3RyJyk7XG4gICAgICAgICAgICAgICAgICAgIG1hcC5zZXRDZW50ZXIobmV3TWFya2VyLmdldFBvc2l0aW9uKCkpO1xuICAgICAgICAgICAgICAgICAgICBtYXJrZXJzLmZvckVhY2goZnVuY3Rpb24gKG1hcmtlciwgaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlci5zZXRBbmltYXRpb24obnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBuZXdNYXJrZXIuc2V0QW5pbWF0aW9uKGdvb2dsZS5tYXBzLkFuaW1hdGlvbi5CT1VOQ0UpO1xuICAgICAgICAgICAgICAgICAgICAkbWFya2VyUm93LmFkZENsYXNzKCdtYXJrZXJfY2xpY2tlZCcpO1xuICAgICAgICAgICAgICAgICAgICAkKCd0ci5wYXJjZWxzaG9wJykubm90KCRtYXJrZXJSb3cpLnJlbW92ZUNsYXNzKCdtYXJrZXJfY2xpY2tlZCcpO1xuICAgICAgICAgICAgICAgICAgICAkKCcjbWFwJykuZ2V0KDApLnNjcm9sbEludG9WaWV3KHtiZWhhdmlvcjogXCJzbW9vdGhcIiwgYmxvY2s6IFwiZW5kXCJ9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZ2VvY29kZXIgPSBuZXcgZ29vZ2xlLm1hcHMuR2VvY29kZXIoKTtcbiAgICAgICAgICAgIGdlb2NvZGVyLmdlb2NvZGUoeydhZGRyZXNzJzogc2VhcmNoQWRkcmVzc30sIGZ1bmN0aW9uIChyZXN1bHRzLCBzdGF0dXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoc3RhdHVzID09ICdPSycpIHtcbiAgICAgICAgICAgICAgICAgICAgbWFwLnNldENlbnRlcihyZXN1bHRzWzBdLmdlb21ldHJ5LmxvY2F0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG1hcmtlciA9IG5ldyBnb29nbGUubWFwcy5NYXJrZXIoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFwOiBtYXAsXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVzdWx0c1swXS5nZW9tZXRyeS5sb2NhdGlvblxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vICMjIyMjIyMjIyMgSU5JVElBTElaQVRJT04gIyMjIyMjIyMjI1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJbml0aWFsaXplIE1vZHVsZVxuICAgICAgICAgKiBAY29uc3RydWN0b3JcbiAgICAgICAgICovXG4gICAgICAgIG1vZHVsZS5pbml0ID0gZnVuY3Rpb24gKGRvbmUpIHtcbiAgICAgICAgICAgIHZhciB0b2dnbGVCdXR0b24gPSBmdW5jdGlvbiAoZW5hYmxlZCkge1xuICAgICAgICAgICAgICAgIGlmIChlbmFibGVkID09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgJCgnI3BzZl9tYWtlX25ld19hYl9lbnRyeScpLnJlbW92ZUF0dHIoJ2Rpc2FibGVkJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgJCgnI3BzZl9tYWtlX25ld19hYl9lbnRyeScpLmF0dHIoJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgdmFsaWRhdGVJbnB1dCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0b2dnbGVCdXR0b24oJCgnI3BzZl9uZXdfYWIgaW5wdXQnKS5oYXNDbGFzcygnaW52YWxpZCcpID09PSBmYWxzZSk7XG4gICAgICAgICAgICB9XG5cblxuICAgICAgICAgICAgJCgnYnV0dG9uLnByZXBhcmVfYWJfZW50cnknKS5vbignY2xpY2snLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB2YXIgJHJvdyA9ICQodGhpcykuY2xvc2VzdCgndHInKSxcbiAgICAgICAgICAgICAgICAgICAgcGFyY2Vsc2hvcF9oZWFkaW5nID0gJCgnc3Ryb25nLnBhcmNlbHNob3BfaGVhZGluZycsICRyb3cpLnRleHQoKSxcbiAgICAgICAgICAgICAgICAgICAgc3RyZWV0X2FkZHJlc3MgPSAkKCdzcGFuLnN0cmVldF9hZGRyZXNzJywgJHJvdykudGV4dCgpLFxuICAgICAgICAgICAgICAgICAgICBob3VzZV9udW1iZXIgPSAkKCdzcGFuLmhvdXNlX251bWJlcicsICRyb3cpLnRleHQoKSxcbiAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbF9pbmZvID0gJCgnc3Bhbi5hZGRpdGlvbmFsX2luZm8nLCAkcm93KS50ZXh0KCksXG4gICAgICAgICAgICAgICAgICAgIGNvdW50cnlfaXNvID0gJCgnc3Bhbi5jb3VudHJ5X2lzbycsICRyb3cpLnRleHQoKSxcbiAgICAgICAgICAgICAgICAgICAgcG9zdGNvZGUgPSAkKCdzcGFuLnBvc3Rjb2RlJywgJHJvdykudGV4dCgpLFxuICAgICAgICAgICAgICAgICAgICBjaXR5ID0gJCgnc3Bhbi5jaXR5JywgJHJvdykudGV4dCgpLFxuICAgICAgICAgICAgICAgICAgICBzaG9wX25hbWUgPSAkKCdzcGFuLnNob3BfbmFtZScsICRyb3cpLnRleHQoKSxcbiAgICAgICAgICAgICAgICAgICAgcHNmX25hbWU7XG4gICAgICAgICAgICAgICAgaWYgKGNvdW50cnlfaXNvICE9PSAnREUnKSB7XG4gICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxfaW5mbyA9IGFkZGl0aW9uYWxfaW5mbyArICcgKCcgKyBzaG9wX25hbWUgKyAnKSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHBzZl9uYW1lID0gcGFyY2Vsc2hvcF9oZWFkaW5nO1xuICAgICAgICAgICAgICAgIGlmIChzaG9wX25hbWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBwc2ZfbmFtZSArPSAnLCAnICsgc2hvcF9uYW1lO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwc2ZfbmFtZSArPSAnLCAnICsgcG9zdGNvZGUgKyAnICcgKyBjaXR5O1xuICAgICAgICAgICAgICAgICQoJyNwc2ZfbmFtZScpLnZhbChwc2ZfbmFtZSk7XG4gICAgICAgICAgICAgICAgJCgnI3BzZl9uZXdfYWIgaW5wdXRbbmFtZT1cInN0cmVldF9hZGRyZXNzXCJdJykudmFsKHN0cmVldF9hZGRyZXNzKTtcbiAgICAgICAgICAgICAgICAkKCcjcHNmX25ld19hYiBpbnB1dFtuYW1lPVwiaG91c2VfbnVtYmVyXCJdJykudmFsKGhvdXNlX251bWJlcik7XG4gICAgICAgICAgICAgICAgJCgnI3BzZl9uZXdfYWIgaW5wdXRbbmFtZT1cImFkZGl0aW9uYWxfaW5mb1wiXScpLnZhbChhZGRpdGlvbmFsX2luZm8pO1xuICAgICAgICAgICAgICAgICQoJyNwc2ZfbmV3X2FiIGlucHV0W25hbWU9XCJjb3VudHJ5XCJdJykudmFsKGNvdW50cnlfaXNvKTtcbiAgICAgICAgICAgICAgICAkKCcjcHNmX25ld19hYiBpbnB1dFtuYW1lPVwicG9zdGNvZGVcIl0nKS52YWwocG9zdGNvZGUpO1xuICAgICAgICAgICAgICAgICQoJyNwc2ZfbmV3X2FiIGlucHV0W25hbWU9XCJjaXR5XCJdJykudmFsKGNpdHkpO1xuICAgICAgICAgICAgICAgICQoJyNwc2ZfbmFtZScpLnJlbW92ZUNsYXNzKCdpbnZhbGlkJyk7XG4gICAgICAgICAgICAgICAgJCgnI3BzZl9uZXdfYWInKS5zaG93KCdmYXN0JywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAkKCcjcHNmX25ld19hYicpLmdldCgwKS5zY3JvbGxJbnRvVmlldyh7YmVoYXZpb3I6IFwic21vb3RoXCIsIGJsb2NrOiBcImVuZFwifSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdmFsaWRhdGVJbnB1dCgpO1xuICAgICAgICAgICAgfSk7XG5cblxuICAgICAgICAgICAgJCgnI3BzZl9uZXdfYWIgaW5wdXRbbmFtZT1cImZpcnN0bmFtZVwiXSwgI3BzZl9uZXdfYWIgaW5wdXRbbmFtZT1cImxhc3RuYW1lXCJdJykub24oJ2tleXVwJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICAkKGUudGFyZ2V0KS50b2dnbGVDbGFzcygnaW52YWxpZCcsICQoZS50YXJnZXQpLnZhbCgpLmxlbmd0aCA8PSAyKTtcbiAgICAgICAgICAgICAgICB2YWxpZGF0ZUlucHV0KCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgJCgnI3BzZl9uZXdfYWIgaW5wdXRbbmFtZT1cInBvc3RudW1iZXJcIl0nKS5vbigna2V5dXAnLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgIGlmICgkKHRoaXMpLnZhbCgpLmxlbmd0aCA+IDUpIHtcbiAgICAgICAgICAgICAgICAgICAgJC5hamF4KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDoganNlLmNvcmUuY29uZmlnLmdldCgnYXBwVXJsJykgKyAnL3Nob3AucGhwP2RvPVBhcmNlbHNob3BmaW5kZXIvVmFsaWRhdGVQb3N0bnVtYmVyJnBvc3RudW1iZXI9JyArICQodGhpcykudmFsKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ2pzb24nLFxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgLmRvbmUoZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjcHNmX25ld19hYiBpbnB1dFtuYW1lPVwicG9zdG51bWJlclwiXScpLnRvZ2dsZUNsYXNzKCdpbnZhbGlkJywgKGRhdGEucG9zdG51bWJlcklzVmFsaWQgIT09IHRydWUpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZUlucHV0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAkKCcjcHNmX25ld19hYiBpbnB1dFtuYW1lPVwicG9zdG51bWJlclwiXScpLnRvZ2dsZUNsYXNzKCdpbnZhbGlkJywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlSW5wdXQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICQoJyNwc2ZfbmV3X2FiIGlucHV0W25hbWU9XCJwb3N0bnVtYmVyXCJdJykub24oJ2NoYW5nZScsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgJCgnI3BzZl9uZXdfYWIgaW5wdXRbbmFtZT1cInBvc3RudW1iZXJcIl0nKS50cmlnZ2VyKCdrZXl1cCcpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAkKCcjcHNmX25ld19hYiBpbnB1dCcpLnRyaWdnZXIoJ2tleXVwJyk7XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgKHBzZkR5bmFtaWMpICE9PSAndW5kZWZpbmVkJyAmJiBwc2ZEeW5hbWljID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgaW5pdE1hcCgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBkb25lKCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIG1vZHVsZTtcbiAgICB9XG4pO1xuIl19

Youez - 2016 - github.com/yon3zu
LinuXploit