Overview

URL isevirtualcampus.ise.org.br/moodle/login/forgot_password.php
IP172.104.195.251
ASNLinode, LLC
Location United States
Report completed2022-09-09 13:46:00 UTC
StatusLoading report..
urlquery Alerts No alerts detected


Settings

UserAgentMozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Referer


Intrusion Detection Systems

Suricata /w Emerging Threats Pro  No alerts detected


Blocklists

OpenPhish  No alerts detected
PhishTank  No alerts detected
Fortinet's Web Filter
Scan Date Severity Indicator Comment
2022-09-09 2 survey.ise.org.br/wp-content/uploads/moodle.js Malware
mnemonic secure dns  No alerts detected
Quad9 DNS  No alerts detected


Files

No files detected



Passive DNS (14)

Passive DNS Source Fully Qualifying Domain Name Rank First Seen Last Seen IP Comment
mnemonic passive DNS isevirtualcampus.ise.org.br (20) 0 2019-05-29 20:21:47 UTC 2022-08-13 11:09:40 UTC 172.104.195.251 Unknown ranking
mnemonic passive DNS content-signature-2.cdn.mozilla.net (1) 1152 2020-11-03 12:26:46 UTC 2022-09-09 04:47:11 UTC 143.204.55.35
mnemonic passive DNS cdnjs.cloudflare.com (1) 235 2020-10-20 10:17:36 UTC 2022-09-09 04:40:00 UTC 104.17.24.14
mnemonic passive DNS ocsp.sca1b.amazontrust.com (1) 1015 2017-03-03 15:20:51 UTC 2019-03-27 04:05:54 UTC 143.204.42.88
mnemonic passive DNS img-getpocket.cdn.mozilla.net (6) 1631 2017-09-01 03:40:57 UTC 2022-09-09 07:18:24 UTC 34.120.237.76
mnemonic passive DNS ocsp.digicert.com (1) 86 2012-05-21 07:02:23 UTC 2022-09-09 12:02:18 UTC 93.184.220.29
mnemonic passive DNS ocsp.pki.goog (2) 175 2017-06-14 07:23:31 UTC 2022-09-09 04:41:59 UTC 142.250.74.3
mnemonic passive DNS survey.ise.org.br (2) 0 2019-07-16 00:50:53 UTC 2022-08-07 00:50:20 UTC 162.241.133.109 Unknown ranking
mnemonic passive DNS firefox.settings.services.mozilla.com (2) 867 2020-06-04 20:08:41 UTC 2022-09-09 05:37:59 UTC 143.204.55.35
mnemonic passive DNS r3.o.lencr.org (6) 344 2020-12-02 08:52:13 UTC 2022-09-09 04:40:05 UTC 23.36.76.226
mnemonic passive DNS contile.services.mozilla.com (1) 1114 2021-05-27 18:32:35 UTC 2022-09-09 04:48:21 UTC 34.117.237.239
mnemonic passive DNS fonts.googleapis.com (1) 8877 2014-07-21 13:19:55 UTC 2022-09-09 09:00:59 UTC 142.250.74.10
mnemonic passive DNS push.services.mozilla.com (1) 2140 2015-09-03 10:29:36 UTC 2022-09-09 04:43:53 UTC 52.27.12.161
mnemonic passive DNS vlibras.gov.br (3) 95656 2020-09-24 10:56:53 UTC 2022-09-09 12:04:38 UTC 54.233.154.124


Recent reports on same IP/ASN/Domain/Screenshot

Last 1 reports on IP: 172.104.195.251

Date UQ / IDS / BL URL IP
2022-09-09 13:46:00 +0000
0 - 0 - 1 isevirtualcampus.ise.org.br/moodle/login/forg (...) 172.104.195.251

Last 5 reports on ASN: Linode, LLC

Date UQ / IDS / BL URL IP
2022-12-05 20:33:02 +0000
0 - 0 - 2 ww8.losamigos-restaurant.com/mtm/direct/.eJwV (...) 96.126.123.244
2022-12-05 20:32:55 +0000
0 - 0 - 1 ntta.net/mtm/direct/.eJxdycEKAjEMhOF3yXEtG4-6 (...) 45.33.23.183
2022-12-05 20:32:16 +0000
0 - 0 - 1 otlh.com/mtm/direct/.eJxdycEKAjEMhOF3yXEtG4-6 (...) 45.33.23.183
2022-12-05 20:32:08 +0000
0 - 0 - 3 bkwc.com/mtm/direct/.eJxdyUEOwjAMRNG7eFmimiUU (...) 45.79.19.196
2022-12-05 20:28:35 +0000
0 - 0 - 4 degtee.com/http:/degtee.com/mtm/direct/.eJyrV (...) 72.14.185.43

Last 1 reports on domain: ise.org.br

Date UQ / IDS / BL URL IP
2022-09-09 13:46:00 +0000
0 - 0 - 1 isevirtualcampus.ise.org.br/moodle/login/forg (...) 172.104.195.251

No other reports with similar screenshot



JavaScript

Executed Scripts (20)


Executed Evals (103)

#1 JavaScript::Eval (size: 772, repeated: 1) - SHA256: 172a64feffadf5cc25bea6aec080a008fdfe45b459ae5069530c9e0940b579ba

                                        if (typeof Object.create === 'function') {
    // implementation from standard node.js 'util' module
    module.exports = function inherits(ctor, superCtor) {
        ctor.super_ = superCtor
        ctor.prototype = Object.create(superCtor.prototype, {
            constructor: {
                value: ctor,
                enumerable: false,
                writable: true,
                configurable: true
            }
        });
    };
} else {
    // old school shim for old browsers
    module.exports = function inherits(ctor, superCtor) {
        ctor.super_ = superCtor
        var TempCtor = function() {}
        TempCtor.prototype = superCtor.prototype
        ctor.prototype = new TempCtor()
        ctor.prototype.constructor = ctor
    }
}


//# sourceURL=webpack://VLibras/../vlibras-player-webjs/node_modules/inherits/inherits_browser.js?
                                    

#2 JavaScript::Eval (size: 6432, repeated: 1) - SHA256: fdea99fda50e816429476774e5752f7e570749f3d12c7213840a171bb31fa00b

                                        var window = __webpack_require__( /*! window */ "window");
var assign = __webpack_require__( /*! object-assign */ "../vlibras-player-webjs/node_modules/object-assign/index.js");
var inherits = __webpack_require__( /*! inherits */ "../vlibras-player-webjs/node_modules/inherits/inherits_browser.js");
var path = __webpack_require__( /*! path */ "./node_modules/path-browserify/index.js");
var url = __webpack_require__( /*! url-join */ "../vlibras-player-webjs/node_modules/url-join/lib/url-join.js");
var EventEmitter = __webpack_require__( /*! events */ "./node_modules/events/events.js").EventEmitter;

var config = __webpack_require__( /*! ./config.js */ "../vlibras-player-webjs/src/config.js");
var PlayerManagerAdapter = __webpack_require__( /*! ./PlayerManagerAdapter.js */ "../vlibras-player-webjs/src/PlayerManagerAdapter.js");
var GlosaTranslator = __webpack_require__( /*! ./GlosaTranslator.js */ "../vlibras-player-webjs/src/GlosaTranslator.js");
var globalGlosaLenght = '';

var document = window.document;

const STATUSES = {
    idle: 'idle',
    preparing: 'preparing',
    playing: 'playing',
};

function Player(options) {
    this.options = assign({
        translator: config.translatorUrl,
        targetPath: 'target',
    }, options);

    this.playerManager = new PlayerManagerAdapter();
    this.translator = new GlosaTranslator(this.options.translator);

    this.translated = false;
    this.text = undefined;
    this.gloss = undefined;
    this.loaded = false;
    this.progress = null;
    this.gameContainer = null;
    this.player = null;
    this.status = STATUSES.idle;

    this.playerManager.on('load', () => {
        this.loaded = true;
        this.emit('load');

        this.playerManager.setBaseUrl(config.dictionaryUrl);

        if (this.options.onLoad) {
            this.options.onLoad();
        } else {
            this.play(null, true);
        }

    });

    this.playerManager.on('progress', (progress) => {
        this.emit('animation:progress', progress);
    });

    this.playerManager.on('stateChange', (isPlaying, isPaused, isLoading) => {
        if (isPaused) {
            this.emit('animation:pause');
        } else if (isPlaying && !isPaused) {
            this.emit('animation:play');
            this.changeStatus(STATUSES.playing);
        } else if (!isPlaying && !isLoading) {
            this.emit('animation:end');
            this.changeStatus(STATUSES.idle);
        }
    });

    this.playerManager.on('CounterGloss', (counter, glosaLenght) => {
        this.emit('response:glosa', counter, glosaLenght);
        globalGlosaLenght = glosaLenght;
    });

    this.playerManager.on('FinishWelcome', (bool) => {
        this.emit('stop:welcome', bool);
    });


}

inherits(Player, EventEmitter);

Player.prototype.translate = function(text) {
    this.emit('translate:start');

    if (this.loaded) {
        this.stop();
    }

    this.text = text;

    this.translator.translate(text, (gloss, error) => {
        if (error) {
            this.play(text.toUpperCase());
            this.emit('error', 'translation_error');
            return;
        }

        // console.log('Translator answer:', gloss);
        this.play(gloss, true);
        this.emit('translate:end');
    });
};

Player.prototype.play = function(glosa, fromTranslation = false) {

    this.translated = fromTranslation;
    this.gloss = glosa || this.gloss;

    if (this.gloss !== undefined && this.loaded) {
        this.changeStatus(STATUSES.preparing);
        this.playerManager.play(this.gloss);
    }
};

Player.prototype.playWellcome = function() {
    this.playerManager.playWellcome();
};

Player.prototype.continue = function() {
    this.playerManager.play();
};

Player.prototype.repeat = function() {
    this.play();
};

Player.prototype.pause = function() {
    this.playerManager.pause();
};

Player.prototype.stop = function() {
    this.playerManager.stop();
};

Player.prototype.setSpeed = function(speed) {
    this.playerManager.setSpeed(speed);
};

Player.prototype.setPersonalization = function(personalization) {
    this.playerManager.setPersonalization(personalization);
};

Player.prototype.changeAvatar = function(avatarName) {
    this.playerManager.changeAvatar(avatarName);
};

Player.prototype.toggleSubtitle = function() {
    this.playerManager.toggleSubtitle();
};

Player.prototype.setRegion = function(region) {
    this.playerManager.setRegion(region);
};

Player.prototype.load = function(wrapper) {
    this.gameContainer = document.createElement('div');
    this.gameContainer.setAttribute("id", "gameContainer");
    this.gameContainer.classList.add('emscripten');

    if ('function' == typeof this.options.progress) {
        this.progress = new this.options.progress(wrapper);
    }

    wrapper.appendChild(this.gameContainer);

    this._initializeTarget();
};

Player.prototype._getTargetScript = function() {
    // console.log('Target Script: ' + url(this.options.targetPath, 'UnityLoader.js'));
    return url(this.options.targetPath, 'UnityLoader.js');
    //return path.join(this.options.targetPath, 'UnityLoader.js');
};

Player.prototype._initializeTarget = function() {
    //const targetSetup = path.join(this.options.targetPath, 'playerweb.json');
    // console.log('Target Setup: ' + url(this.options.targetPath, 'playerweb.json'));
    const targetSetup = url(this.options.targetPath, 'playerweb.json');
    const targetScript = document.createElement('script');

    targetScript.src = this._getTargetScript();
    targetScript.onload = () => {
        this.player = UnityLoader.instantiate("gameContainer", targetSetup, {
            compatibilityCheck: (_, accept, deny) => {
                if (UnityLoader.SystemInfo.hasWebGL) {
                    // console.log('Seu navegador suporta WEBGL');
                    return accept();
                }

                this.onError('unsupported');
                alert('Seu navegador n�o suporta WEBGL');
                console.error('Seu navegador n�o suporta WEBGL');
                deny();
            },
        });

        this.playerManager.setPlayerReference(this.player);
    };

    document.body.appendChild(targetScript);
};

Player.prototype.changeStatus = function(status) {
    switch (status) {
        case STATUSES.idle:
            if (this.status === STATUSES.playing) {
                this.status = status;
                this.emit('gloss:end', globalGlosaLenght);
            }
            break;

        case STATUSES.preparing:
            this.status = status;
            break;

        case STATUSES.playing:
            if (this.status === STATUSES.preparing) {
                this.status = status;
                this.emit('gloss:start');
            }
            break;
    }
};

module.exports = Player;


//# sourceURL=webpack://VLibras/../vlibras-player-webjs/src/Player.js?
                                    

#3 JavaScript::Eval (size: 1911, repeated: 1) - SHA256: c89f6aa861257c6f6d62353cc81e68bfc539bb31da16a25c14f54cf4db882c65

                                        exports = module.exports = __webpack_require__( /*! ../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js")(false);
// Module
exports.push([module.i, "[vp] [vp-rate-box] {\n  display: flex;\n  flex-direction: row;\n  justify-content: flex-end;\n  position: absolute;\n  width: 100%;\n  bottom: 68px;\n  overflow: hidden;\n  z-index: 2; }\n  [vp] [vp-rate-box] .vp-container {\n    display: flex;\n    flex-direction: column;\n    width: 100%;\n    padding-top: 10px;\n    padding-bottom: 10px;\n    background-color: rgba(255, 255, 255, 0.96);\n    max-height: 0;\n    transform: translateY(69px);\n    transition: max-height 0s, transform 0.4s linear 0.05s; }\n    [vp] [vp-rate-box] .vp-container .vp-text {\n      text-align: center;\n      font-size: 14px;\n      font-weight: bold;\n      color: #003f86; }\n    [vp] [vp-rate-box] .vp-container .vp-buttons {\n      display: flex;\n      flex-direction: row;\n      justify-content: center;\n      margin-top: 10px; }\n      [vp] [vp-rate-box] .vp-container .vp-buttons .vp-button {\n        display: flex;\n        flex-direction: row;\n        align-items: center;\n        font-size: 13px;\n        font-weight: bold;\n        color: #545454;\n        cursor: pointer; }\n        [vp] [vp-rate-box] .vp-container .vp-buttons .vp-button:not(:last-child) {\n          margin-right: 22px; }\n        [vp] [vp-rate-box] .vp-container .vp-buttons .vp-button img {\n          height: 22px;\n          margin-right: 6px; }\n  [vp] [vp-rate-box].vp-enabled {\n    z-index: 4; }\n    [vp] [vp-rate-box].vp-enabled .vp-container {\n      max-height: 100%;\n      transform: translateY(0);\n      transition: transform 0.4s, max-height 0s linear 0.4s; }\n", ""]);


//# sourceURL=webpack://VLibras/./plugin/components/RateBox/rate-box.scss?./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js
                                    

#4 JavaScript::Eval (size: 537, repeated: 1) - SHA256: cde57d37c712d7fcd7b3975f74fa7d4678300dd34b6c5028f9e0dbf8b7aa39dc

                                        __webpack_require__.r(__webpack_exports__);
/* harmony default export */
__webpack_exports__["default"] = ("<div class=\"vp-bounderies\">\n  <div class=\"vp-container\">\n    <span vp-blue-button class=\"vp-open-screen-button\">\n      Sugerir edi��o\n    </span>\n  </div>\n</div>\n\n<div class=\"vp-button-container\">\n  <span vp-close-button class=\"vp-close-button\">\n    <img data-src=\"assets/close.svg\" />\n  </span>\n</div>\n");

//# sourceURL=webpack://VLibras/./plugin/components/SuggestionButton/suggestion-button.html?
                                    

#5 JavaScript::Eval (size: 750, repeated: 1) - SHA256: 4822314d33925979b743dc6b706b5d80128146c3b827946247b6918725de96eb

                                        if (typeof Object.create === 'function') {
    // implementation from standard node.js 'util' module
    module.exports = function inherits(ctor, superCtor) {
        ctor.super_ = superCtor
        ctor.prototype = Object.create(superCtor.prototype, {
            constructor: {
                value: ctor,
                enumerable: false,
                writable: true,
                configurable: true
            }
        });
    };
} else {
    // old school shim for old browsers
    module.exports = function inherits(ctor, superCtor) {
        ctor.super_ = superCtor
        var TempCtor = function() {}
        TempCtor.prototype = superCtor.prototype
        ctor.prototype = new TempCtor()
        ctor.prototype.constructor = ctor
    }
}


//# sourceURL=webpack://VLibras/./node_modules/inherits/inherits_browser.js?
                                    

#6 JavaScript::Eval (size: 760, repeated: 1) - SHA256: 69de5e69b70c41bbf3aabdca7947f2ae8dd757d8a03b4eeb3c5bed685fb9dbba

                                        var content = __webpack_require__( /*! !../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./switch.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./plugin/components/Settings/switch.scss");

if (typeof content === 'string') {
    content = [
        [module.i, content, '']
    ];
}

var options = {}

options.insert = "head";
options.singleton = false;

var update = __webpack_require__( /*! ../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js")(content, options);

if (content.locals) {
    module.exports = content.locals;
}


//# sourceURL=webpack://VLibras/./plugin/components/Settings/switch.scss?
                                    

#7 JavaScript::Eval (size: 1509, repeated: 1) - SHA256: 0710dd73646e1d1b75c515ff97368573d96891fd799c7dd226acb0a71a24a6d2

                                        exports = module.exports = __webpack_require__( /*! ../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js")(false);
// Module
exports.push([module.i, "[vp] {\n  /* Hide default HTML checkbox */\n  /* The slider */\n  /* Rounded sliders */ }\n  [vp] .vpw-switch {\n    position: relative;\n    display: inline-block;\n    width: 60px;\n    height: 21px;\n    float: right;\n    margin-top: -12px; }\n  [vp] .vpw-switch input {\n    opacity: 0;\n    width: 0;\n    height: 0; }\n  [vp] .vpw-slider-check {\n    position: absolute;\n    cursor: pointer;\n    top: 0;\n    left: 0;\n    right: 0;\n    bottom: 0;\n    background-color: #2196F3; }\n  [vp] .vpw-slider-check:before {\n    position: absolute;\n    content: \"\";\n    height: 26px;\n    width: 26px;\n    left: 4px;\n    bottom: 4px;\n    background-color: white; }\n  [vp] input:checked + .vpw-slider-check {\n    background-color: #2196F3; }\n  [vp] input:focus + .vpw-slider-check {\n    box-shadow: 0 0 1px #ccc; }\n  [vp] input:checked + .vpw-slider-check:before {\n    -webkit-transform: translateX(26px);\n    -ms-transform: translateX(26px);\n    transform: translateX(26px); }\n  [vp] .vpw-slider-check.vpw-round {\n    border-radius: 34px; }\n  [vp] .vpw-slider-check.vpw-round:before {\n    border-radius: 50%;\n    top: -3px; }\n", ""]);


//# sourceURL=webpack://VLibras/./plugin/components/Settings/switch.scss?./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js
                                    

#8 JavaScript::Eval (size: 4879, repeated: 1) - SHA256: fb3e3a4974d6338b68010db08be697119214ea518f9312c059c32272fd8aac09

                                        exports = module.exports = __webpack_require__( /*! ../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js")(false);
// Module
exports.push([module.i, "/*! nouislider - 8.5.1 - 2016-04-24 16:00:30 */\n.noUi-target, .noUi-target * {\n  -webkit-touch-callout: none;\n  -webkit-user-select: none;\n  -ms-touch-action: none;\n  touch-action: none;\n  -ms-user-select: none;\n  -moz-user-select: none;\n  user-select: none;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box; }\n\n.noUi-target {\n  position: relative;\n  direction: ltr; }\n\n.noUi-base {\n  width: 100%;\n  height: 100%;\n  position: relative;\n  z-index: 1; }\n\n.noUi-origin {\n  position: absolute;\n  right: 0;\n  top: 0;\n  left: 0;\n  bottom: 0; }\n\n.noUi-handle {\n  position: relative;\n  z-index: 1; }\n\n.noUi-stacking .noUi-handle {\n  z-index: 10; }\n\n.noUi-state-tap .noUi-origin {\n  -webkit-transition: left .3s,top .3s;\n  transition: left .3s,top .3s; }\n\n.noUi-state-drag * {\n  cursor: inherit !important; }\n\n.noUi-base, .noUi-handle {\n  -webkit-transform: translate3d(0, 0, 0);\n  transform: translate3d(0, 0, 0); }\n\n.noUi-horizontal {\n  height: 18px; }\n\n.noUi-horizontal .noUi-handle {\n  width: 34px;\n  height: 28px;\n  left: -17px;\n  top: -6px; }\n\n.noUi-vertical {\n  width: 18px; }\n\n.noUi-vertical .noUi-handle {\n  width: 28px;\n  height: 34px;\n  left: -6px;\n  top: -17px; }\n\n.noUi-background {\n  background: #FAFAFA;\n  box-shadow: inset 0 1px 1px #f0f0f0; }\n\n.noUi-connect {\n  background: #3FB8AF;\n  box-shadow: inset 0 0 3px rgba(51, 51, 51, 0.45);\n  -webkit-transition: background 450ms;\n  transition: background 450ms; }\n\n.noUi-origin {\n  border-radius: 2px; }\n\n.noUi-target {\n  border-radius: 4px;\n  border: 1px solid #D3D3D3;\n  box-shadow: inset 0 1px 1px #F0F0F0,0 3px 6px -5px #BBB; }\n\n.noUi-target.noUi-connect {\n  box-shadow: inset 0 0 3px rgba(51, 51, 51, 0.45), 0 3px 6px -5px #BBB; }\n\n.noUi-draggable {\n  cursor: w-resize; }\n\n.noUi-vertical .noUi-draggable {\n  cursor: n-resize; }\n\n.noUi-handle {\n  border: 1px solid #D9D9D9;\n  border-radius: 3px;\n  background: #FFF;\n  cursor: default;\n  box-shadow: inset 0 0 1px #FFF,inset 0 1px 7px #EBEBEB,0 3px 6px -3px #BBB; }\n\n.noUi-active {\n  box-shadow: inset 0 0 1px #FFF,inset 0 1px 7px #DDD,0 3px 6px -3px #BBB; }\n\n.noUi-handle:after, .noUi-handle:before {\n  content: \"\";\n  display: block;\n  position: absolute;\n  height: 14px;\n  width: 1px;\n  background: #E8E7E6;\n  left: 14px;\n  top: 6px; }\n\n.noUi-handle:after {\n  left: 17px; }\n\n.noUi-vertical .noUi-handle:after, .noUi-vertical .noUi-handle:before {\n  width: 14px;\n  height: 1px;\n  left: 6px;\n  top: 14px; }\n\n.noUi-vertical .noUi-handle:after {\n  top: 17px; }\n\n[disabled] .noUi-connect, [disabled].noUi-connect {\n  background: #B8B8B8; }\n\n[disabled] .noUi-handle, [disabled].noUi-origin {\n  cursor: not-allowed; }\n\n.noUi-pips, .noUi-pips * {\n  -moz-box-sizing: border-box;\n  box-sizing: border-box; }\n\n.noUi-pips {\n  position: absolute;\n  color: #999; }\n\n.noUi-value {\n  position: absolute;\n  text-align: center; }\n\n.noUi-value-sub {\n  color: #ccc;\n  font-size: 10px; }\n\n.noUi-marker {\n  position: absolute;\n  background: #CCC; }\n\n.noUi-marker-large, .noUi-marker-sub {\n  background: #AAA; }\n\n.noUi-pips-horizontal {\n  padding: 10px 0;\n  height: 80px;\n  top: 100%;\n  left: 0;\n  width: 100%; }\n\n.noUi-value-horizontal {\n  -webkit-transform: translate3d(-50%, 50%, 0);\n  transform: translate3d(-50%, 50%, 0); }\n\n.noUi-marker-horizontal.noUi-marker {\n  margin-left: -1px;\n  width: 2px;\n  height: 5px; }\n\n.noUi-marker-horizontal.noUi-marker-sub {\n  height: 10px; }\n\n.noUi-marker-horizontal.noUi-marker-large {\n  height: 15px; }\n\n.noUi-pips-vertical {\n  padding: 0 10px;\n  height: 100%;\n  top: 0;\n  left: 100%; }\n\n.noUi-value-vertical {\n  -webkit-transform: translate3d(0, -50%, 0);\n  transform: translate3d(0, -50%, 0);\n  padding-left: 25px; }\n\n.noUi-marker-vertical.noUi-marker {\n  width: 5px;\n  height: 2px;\n  margin-top: -1px; }\n\n.noUi-marker-vertical.noUi-marker-sub {\n  width: 10px; }\n\n.noUi-marker-vertical.noUi-marker-large {\n  width: 15px; }\n\n.noUi-tooltip {\n  display: block;\n  position: absolute;\n  border: 1px solid #D9D9D9;\n  border-radius: 3px;\n  background: #fff;\n  padding: 5px;\n  text-align: center; }\n\n.noUi-horizontal .noUi-handle-lower .noUi-tooltip {\n  top: -32px; }\n\n.noUi-horizontal .noUi-handle-upper .noUi-tooltip {\n  bottom: -32px; }\n\n.noUi-vertical .noUi-handle-lower .noUi-tooltip {\n  left: 120%; }\n\n.noUi-vertical .noUi-handle-upper .noUi-tooltip {\n  right: 120%; }\n", ""]);


//# sourceURL=webpack://VLibras/./node_modules/nouislider/distribute/nouislider.min.css?./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js
                                    

#9 JavaScript::Eval (size: 1336, repeated: 1) - SHA256: 01fe1f350b21ac7faf37bc6bf94d3ab223545ca8297035d62bdbff143d4f0c7b

                                        __webpack_require__( /*! ./message-box.scss */ "./plugin/components/MessageBox/message-box.scss");

var messageBoxTlp = '<span class="vpw-message"></span>';

function MessageBox() {
    this.element = null;
    this.message = null;
}

MessageBox.LEVELS = ['info', 'warning', 'success', 'default'];

MessageBox.prototype.load = function(element) {
    this.element = element;
    this.element.classList.add('vpw-message-box');
    this.element.innerHTML = messageBoxTlp;

    this.hide();
};

MessageBox.prototype.hide = function(message) {
    if (message !== this.message) return;

    this.message = null;
    this.element.classList.remove('active');

    MessageBox.LEVELS.forEach(function(level) {
        this.element.classList.remove(level);
    }, this);
};

MessageBox.prototype.show = function(level, message, time) {
    var self = this;

    level = MessageBox.LEVELS.indexOf(level) == -1 ? 'info' : level;

    this.hide();

    self.element.classList.add('active');
    self.element.classList.add(level);
    self.element.querySelector('.vpw-message').innerHTML = message;

    self.message = {
        text: message
    };

    var ref = self.message;
    if (time) {
        setTimeout(function() {
            self.hide(ref);
        }, time + 1);
    }

    return this.message;
};

module.exports = MessageBox;


//# sourceURL=webpack://VLibras/./plugin/components/MessageBox/index.js?
                                    

#10 JavaScript::Eval (size: 1255, repeated: 1) - SHA256: d0dc998a4a0633ba2e73f43634788e00090bd754ebf10b4799ba19dd4b3f635a

                                        exports = module.exports = __webpack_require__( /*! ../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js")(false);
// Module
exports.push([module.i, "[vp] [vp-blue-button] {\n  padding: 7px;\n  border-radius: 6px;\n  font-size: 12px;\n  text-align: center;\n  font-weight: bold;\n  color: white;\n  background-color: #003f86;\n  cursor: pointer;\n  margin: 10px 5px;\n  align-self: center; }\n\n[vp] [vp-visualize-signal-button] {\n  padding: 7px;\n  border-radius: 6px;\n  font-size: 12px;\n  text-align: center;\n  font-weight: bold;\n  color: #003f86;\n  background: white;\n  border: 1px solid #003f86;\n  cursor: pointer;\n  margin: 10px 5px;\n  align-self: center; }\n\n[vp] [vp-sugestion-area] {\n  display: flex; }\n\n[vp] [vp-close-button] {\n  display: flex;\n  flex-direction: row;\n  justify-content: center;\n  align-items: center;\n  width: 28px;\n  height: 28px;\n  border-radius: 14px;\n  background-color: #b3b3b3;\n  cursor: pointer; }\n  [vp] [vp-close-button] img {\n    width: 100%; }\n\n#gameContainer {\n  background: #ebebeb !important; }\n", ""]);


//# sourceURL=webpack://VLibras/./plugin/scss/styles.scss?./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js
                                    

#11 JavaScript::Eval (size: 55564, repeated: 1) - SHA256: beb451860e92801da885b2a28521b7ef2c3516249ce7b494c32622686cf88971

                                        var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; /*! nouislider - 8.5.1 - 2016-04-24 16:00:29 */

(function(factory) {

    if (true) {

        // AMD. Register as an anonymous module.
        !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
            __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
                (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
            __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

    } else {}

}(function() {

    'use strict';


    // Removes duplicates from an array.
    function unique(array) {
        return array.filter(function(a) {
            return !this[a] ? this[a] = true : false;
        }, {});
    }

    // Round a value to the closest 'to'.
    function closest(value, to) {
        return Math.round(value / to) * to;
    }

    // Current position of an element relative to the document.
    function offset(elem) {

        var rect = elem.getBoundingClientRect(),
            doc = elem.ownerDocument,
            docElem = doc.documentElement,
            pageOffset = getPageOffset();

        // getBoundingClientRect contains left scroll in Chrome on Android.
        // I haven't found a feature detection that proves this. Worst case
        // scenario on mis-match: the 'tap' feature on horizontal sliders breaks.
        if (/webkit.*Chrome.*Mobile/i.test(navigator.userAgent)) {
            pageOffset.x = 0;
        }

        return {
            top: rect.top + pageOffset.y - docElem.clientTop,
            left: rect.left + pageOffset.x - docElem.clientLeft
        };
    }

    // Checks whether a value is numerical.
    function isNumeric(a) {
        return typeof a === 'number' && !isNaN(a) && isFinite(a);
    }

    // Sets a class and removes it after [duration] ms.
    function addClassFor(element, className, duration) {
        addClass(element, className);
        setTimeout(function() {
            removeClass(element, className);
        }, duration);
    }

    // Limits a value to 0 - 100
    function limit(a) {
        return Math.max(Math.min(a, 100), 0);
    }

    // Wraps a variable as an array, if it isn't one yet.
    function asArray(a) {
        return Array.isArray(a) ? a : [a];
    }

    // Counts decimals
    function countDecimals(numStr) {
        var pieces = numStr.split(".");
        return pieces.length > 1 ? pieces[1].length : 0;
    }

    // http://youmightnotneedjquery.com/#add_class
    function addClass(el, className) {
        if (el.classList) {
            el.classList.add(className);
        } else {
            el.className += ' ' + className;
        }
    }

    // http://youmightnotneedjquery.com/#remove_class
    function removeClass(el, className) {
        if (el.classList) {
            el.classList.remove(className);
        } else {
            el.className = el.className.replace(new RegExp('(^|\\b)' + className.split(' ').join('|') + '(\\b|$)', 'gi'), ' ');
        }
    }

    // https://plainjs.com/javascript/attributes/adding-removing-and-testing-for-classes-9/
    function hasClass(el, className) {
        return el.classList ? el.classList.contains(className) : new RegExp('\\b' + className + '\\b').test(el.className);
    }

    // https://developer.mozilla.org/en-US/docs/Web/API/Window/scrollY#Notes
    function getPageOffset() {

        var supportPageOffset = window.pageXOffset !== undefined,
            isCSS1Compat = ((document.compatMode || "") === "CSS1Compat"),
            x = supportPageOffset ? window.pageXOffset : isCSS1Compat ? document.documentElement.scrollLeft : document.body.scrollLeft,
            y = supportPageOffset ? window.pageYOffset : isCSS1Compat ? document.documentElement.scrollTop : document.body.scrollTop;

        return {
            x: x,
            y: y
        };
    }

    // we provide a function to compute constants instead
    // of accessing window.* as soon as the module needs it
    // so that we do not compute anything if not needed
    function getActions() {

        // Determine the events to bind. IE11 implements pointerEvents without
        // a prefix, which breaks compatibility with the IE10 implementation.
        return window.navigator.pointerEnabled ? {
            start: 'pointerdown',
            move: 'pointermove',
            end: 'pointerup'
        } : window.navigator.msPointerEnabled ? {
            start: 'MSPointerDown',
            move: 'MSPointerMove',
            end: 'MSPointerUp'
        } : {
            start: 'mousedown touchstart',
            move: 'mousemove touchmove',
            end: 'mouseup touchend'
        };
    }


    // Value calculation

    // Determine the size of a sub-range in relation to a full range.
    function subRangeRatio(pa, pb) {
        return (100 / (pb - pa));
    }

    // (percentage) How many percent is this value of this range?
    function fromPercentage(range, value) {
        return (value * 100) / (range[1] - range[0]);
    }

    // (percentage) Where is this value on this range?
    function toPercentage(range, value) {
        return fromPercentage(range, range[0] < 0 ?
            value + Math.abs(range[0]) :
            value - range[0]);
    }

    // (value) How much is this percentage on this range?
    function isPercentage(range, value) {
        return ((value * (range[1] - range[0])) / 100) + range[0];
    }


    // Range conversion

    function getJ(value, arr) {

        var j = 1;

        while (value >= arr[j]) {
            j += 1;
        }

        return j;
    }

    // (percentage) Input a value, find where, on a scale of 0-100, it applies.
    function toStepping(xVal, xPct, value) {

        if (value >= xVal.slice(-1)[0]) {
            return 100;
        }

        var j = getJ(value, xVal),
            va, vb, pa, pb;

        va = xVal[j - 1];
        vb = xVal[j];
        pa = xPct[j - 1];
        pb = xPct[j];

        return pa + (toPercentage([va, vb], value) / subRangeRatio(pa, pb));
    }

    // (value) Input a percentage, find where it is on the specified range.
    function fromStepping(xVal, xPct, value) {

        // There is no range group that fits 100
        if (value >= 100) {
            return xVal.slice(-1)[0];
        }

        var j = getJ(value, xPct),
            va, vb, pa, pb;

        va = xVal[j - 1];
        vb = xVal[j];
        pa = xPct[j - 1];
        pb = xPct[j];

        return isPercentage([va, vb], (value - pa) * subRangeRatio(pa, pb));
    }

    // (percentage) Get the step that applies at a certain value.
    function getStep(xPct, xSteps, snap, value) {

        if (value === 100) {
            return value;
        }

        var j = getJ(value, xPct),
            a, b;

        // If 'snap' is set, steps are used as fixed points on the slider.
        if (snap) {

            a = xPct[j - 1];
            b = xPct[j];

            // Find the closest position, a or b.
            if ((value - a) > ((b - a) / 2)) {
                return b;
            }

            return a;
        }

        if (!xSteps[j - 1]) {
            return value;
        }

        return xPct[j - 1] + closest(
            value - xPct[j - 1],
            xSteps[j - 1]
        );
    }


    // Entry parsing

    function handleEntryPoint(index, value, that) {

        var percentage;

        // Wrap numerical input in an array.
        if (typeof value === "number") {
            value = [value];
        }

        // Reject any invalid input, by testing whether value is an array.
        if (Object.prototype.toString.call(value) !== '[object Array]') {
            throw new Error("noUiSlider: 'range' contains invalid value.");
        }

        // Covert min/max syntax to 0 and 100.
        if (index === 'min') {
            percentage = 0;
        } else if (index === 'max') {
            percentage = 100;
        } else {
            percentage = parseFloat(index);
        }

        // Check for correct input.
        if (!isNumeric(percentage) || !isNumeric(value[0])) {
            throw new Error("noUiSlider: 'range' value isn't numeric.");
        }

        // Store values.
        that.xPct.push(percentage);
        that.xVal.push(value[0]);

        // NaN will evaluate to false too, but to keep
        // logging clear, set step explicitly. Make sure
        // not to override the 'step' setting with false.
        if (!percentage) {
            if (!isNaN(value[1])) {
                that.xSteps[0] = value[1];
            }
        } else {
            that.xSteps.push(isNaN(value[1]) ? false : value[1]);
        }
    }

    function handleStepPoint(i, n, that) {

        // Ignore 'false' stepping.
        if (!n) {
            return true;
        }

        // Factor to range ratio
        that.xSteps[i] = fromPercentage([
            that.xVal[i], that.xVal[i + 1]
        ], n) / subRangeRatio(
            that.xPct[i],
            that.xPct[i + 1]);
    }


    // Interface

    // The interface to Spectrum handles all direction-based
    // conversions, so the above values are unaware.

    function Spectrum(entry, snap, direction, singleStep) {

        this.xPct = [];
        this.xVal = [];
        this.xSteps = [singleStep || false];
        this.xNumSteps = [false];

        this.snap = snap;
        this.direction = direction;

        var index, ordered = [ /* [0, 'min'], [1, '50%'], [2, 'max'] */ ];

        // Map the object keys to an array.
        for (index in entry) {
            if (entry.hasOwnProperty(index)) {
                ordered.push([entry[index], index]);
            }
        }

        // Sort all entries by value (numeric sort).
        if (ordered.length && typeof ordered[0][0] === "object") {
            ordered.sort(function(a, b) {
                return a[0][0] - b[0][0];
            });
        } else {
            ordered.sort(function(a, b) {
                return a[0] - b[0];
            });
        }


        // Convert all entries to subranges.
        for (index = 0; index < ordered.length; index++) {
            handleEntryPoint(ordered[index][1], ordered[index][0], this);
        }

        // Store the actual step values.
        // xSteps is sorted in the same order as xPct and xVal.
        this.xNumSteps = this.xSteps.slice(0);

        // Convert all numeric steps to the percentage of the subrange they represent.
        for (index = 0; index < this.xNumSteps.length; index++) {
            handleStepPoint(index, this.xNumSteps[index], this);
        }
    }

    Spectrum.prototype.getMargin = function(value) {
        return this.xPct.length === 2 ? fromPercentage(this.xVal, value) : false;
    };

    Spectrum.prototype.toStepping = function(value) {

        value = toStepping(this.xVal, this.xPct, value);

        // Invert the value if this is a right-to-left slider.
        if (this.direction) {
            value = 100 - value;
        }

        return value;
    };

    Spectrum.prototype.fromStepping = function(value) {

        // Invert the value if this is a right-to-left slider.
        if (this.direction) {
            value = 100 - value;
        }

        return fromStepping(this.xVal, this.xPct, value);
    };

    Spectrum.prototype.getStep = function(value) {

        // Find the proper step for rtl sliders by search in inverse direction.
        // Fixes issue #262.
        if (this.direction) {
            value = 100 - value;
        }

        value = getStep(this.xPct, this.xSteps, this.snap, value);

        if (this.direction) {
            value = 100 - value;
        }

        return value;
    };

    Spectrum.prototype.getApplicableStep = function(value) {

        // If the value is 100%, return the negative step twice.
        var j = getJ(value, this.xPct),
            offset = value === 100 ? 2 : 1;
        return [this.xNumSteps[j - 2], this.xVal[j - offset], this.xNumSteps[j - offset]];
    };

    // Outside testing
    Spectrum.prototype.convert = function(value) {
        return this.getStep(this.toStepping(value));
    };

    /*	Every input option is tested and parsed. This'll prevent
    	endless validation in internal methods. These tests are
    	structured with an item for every option available. An
    	option can be marked as required by setting the 'r' flag.
    	The testing function is provided with three arguments:
    		- The provided value for the option;
    		- A reference to the options object;
    		- The name for the option;

    	The testing function returns false when an error is detected,
    	or true when everything is OK. It can also modify the option
    	object, to make sure all values can be correctly looped elsewhere. */

    var defaultFormatter = {
        'to': function(value) {
            return value !== undefined && value.toFixed(2);
        },
        'from': Number
    };

    function testStep(parsed, entry) {

        if (!isNumeric(entry)) {
            throw new Error("noUiSlider: 'step' is not numeric.");
        }

        // The step option can still be used to set stepping
        // for linear sliders. Overwritten if set in 'range'.
        parsed.singleStep = entry;
    }

    function testRange(parsed, entry) {

        // Filter incorrect input.
        if (typeof entry !== 'object' || Array.isArray(entry)) {
            throw new Error("noUiSlider: 'range' is not an object.");
        }

        // Catch missing start or end.
        if (entry.min === undefined || entry.max === undefined) {
            throw new Error("noUiSlider: Missing 'min' or 'max' in 'range'.");
        }

        // Catch equal start or end.
        if (entry.min === entry.max) {
            throw new Error("noUiSlider: 'range' 'min' and 'max' cannot be equal.");
        }

        parsed.spectrum = new Spectrum(entry, parsed.snap, parsed.dir, parsed.singleStep);
    }

    function testStart(parsed, entry) {

        entry = asArray(entry);

        // Validate input. Values aren't tested, as the public .val method
        // will always provide a valid location.
        if (!Array.isArray(entry) || !entry.length || entry.length > 2) {
            throw new Error("noUiSlider: 'start' option is incorrect.");
        }

        // Store the number of handles.
        parsed.handles = entry.length;

        // When the slider is initialized, the .val method will
        // be called with the start options.
        parsed.start = entry;
    }

    function testSnap(parsed, entry) {

        // Enforce 100% stepping within subranges.
        parsed.snap = entry;

        if (typeof entry !== 'boolean') {
            throw new Error("noUiSlider: 'snap' option must be a boolean.");
        }
    }

    function testAnimate(parsed, entry) {

        // Enforce 100% stepping within subranges.
        parsed.animate = entry;

        if (typeof entry !== 'boolean') {
            throw new Error("noUiSlider: 'animate' option must be a boolean.");
        }
    }

    function testAnimationDuration(parsed, entry) {

        parsed.animationDuration = entry;

        if (typeof entry !== 'number') {
            throw new Error("noUiSlider: 'animationDuration' option must be a number.");
        }
    }

    function testConnect(parsed, entry) {

        if (entry === 'lower' && parsed.handles === 1) {
            parsed.connect = 1;
        } else if (entry === 'upper' && parsed.handles === 1) {
            parsed.connect = 2;
        } else if (entry === true && parsed.handles === 2) {
            parsed.connect = 3;
        } else if (entry === false) {
            parsed.connect = 0;
        } else {
            throw new Error("noUiSlider: 'connect' option doesn't match handle count.");
        }
    }

    function testOrientation(parsed, entry) {

        // Set orientation to an a numerical value for easy
        // array selection.
        switch (entry) {
            case 'horizontal':
                parsed.ort = 0;
                break;
            case 'vertical':
                parsed.ort = 1;
                break;
            default:
                throw new Error("noUiSlider: 'orientation' option is invalid.");
        }
    }

    function testMargin(parsed, entry) {

        if (!isNumeric(entry)) {
            throw new Error("noUiSlider: 'margin' option must be numeric.");
        }

        // Issue #582
        if (entry === 0) {
            return;
        }

        parsed.margin = parsed.spectrum.getMargin(entry);

        if (!parsed.margin) {
            throw new Error("noUiSlider: 'margin' option is only supported on linear sliders.");
        }
    }

    function testLimit(parsed, entry) {

        if (!isNumeric(entry)) {
            throw new Error("noUiSlider: 'limit' option must be numeric.");
        }

        parsed.limit = parsed.spectrum.getMargin(entry);

        if (!parsed.limit) {
            throw new Error("noUiSlider: 'limit' option is only supported on linear sliders.");
        }
    }

    function testDirection(parsed, entry) {

        // Set direction as a numerical value for easy parsing.
        // Invert connection for RTL sliders, so that the proper
        // handles get the connect/background classes.
        switch (entry) {
            case 'ltr':
                parsed.dir = 0;
                break;
            case 'rtl':
                parsed.dir = 1;
                parsed.connect = [0, 2, 1, 3][parsed.connect];
                break;
            default:
                throw new Error("noUiSlider: 'direction' option was not recognized.");
        }
    }

    function testBehaviour(parsed, entry) {

        // Make sure the input is a string.
        if (typeof entry !== 'string') {
            throw new Error("noUiSlider: 'behaviour' must be a string containing options.");
        }

        // Check if the string contains any keywords.
        // None are required.
        var tap = entry.indexOf('tap') >= 0,
            drag = entry.indexOf('drag') >= 0,
            fixed = entry.indexOf('fixed') >= 0,
            snap = entry.indexOf('snap') >= 0,
            hover = entry.indexOf('hover') >= 0;

        // Fix #472
        if (drag && !parsed.connect) {
            throw new Error("noUiSlider: 'drag' behaviour must be used with 'connect': true.");
        }

        parsed.events = {
            tap: tap || snap,
            drag: drag,
            fixed: fixed,
            snap: snap,
            hover: hover
        };
    }

    function testTooltips(parsed, entry) {

        var i;

        if (entry === false) {
            return;
        } else if (entry === true) {

            parsed.tooltips = [];

            for (i = 0; i < parsed.handles; i++) {
                parsed.tooltips.push(true);
            }

        } else {

            parsed.tooltips = asArray(entry);

            if (parsed.tooltips.length !== parsed.handles) {
                throw new Error("noUiSlider: must pass a formatter for all handles.");
            }

            parsed.tooltips.forEach(function(formatter) {
                if (typeof formatter !== 'boolean' && (typeof formatter !== 'object' || typeof formatter.to !== 'function')) {
                    throw new Error("noUiSlider: 'tooltips' must be passed a formatter or 'false'.");
                }
            });
        }
    }

    function testFormat(parsed, entry) {

        parsed.format = entry;

        // Any object with a to and from method is supported.
        if (typeof entry.to === 'function' && typeof entry.from === 'function') {
            return true;
        }

        throw new Error("noUiSlider: 'format' requires 'to' and 'from' methods.");
    }

    function testCssPrefix(parsed, entry) {

        if (entry !== undefined && typeof entry !== 'string' && entry !== false) {
            throw new Error("noUiSlider: 'cssPrefix' must be a string or `false`.");
        }

        parsed.cssPrefix = entry;
    }

    function testCssClasses(parsed, entry) {

        if (entry !== undefined && typeof entry !== 'object') {
            throw new Error("noUiSlider: 'cssClasses' must be an object.");
        }

        if (typeof parsed.cssPrefix === 'string') {
            parsed.cssClasses = {};

            for (var key in entry) {
                if (!entry.hasOwnProperty(key)) {
                    continue;
                }

                parsed.cssClasses[key] = parsed.cssPrefix + entry[key];
            }
        } else {
            parsed.cssClasses = entry;
        }
    }

    // Test all developer settings and parse to assumption-safe values.
    function testOptions(options) {

        // To prove a fix for #537, freeze options here.
        // If the object is modified, an error will be thrown.
        // Object.freeze(options);

        var parsed = {
                margin: 0,
                limit: 0,
                animate: true,
                animationDuration: 300,
                format: defaultFormatter
            },
            tests;

        // Tests are executed in the order they are presented here.
        tests = {
            'step': {
                r: false,
                t: testStep
            },
            'start': {
                r: true,
                t: testStart
            },
            'connect': {
                r: true,
                t: testConnect
            },
            'direction': {
                r: true,
                t: testDirection
            },
            'snap': {
                r: false,
                t: testSnap
            },
            'animate': {
                r: false,
                t: testAnimate
            },
            'animationDuration': {
                r: false,
                t: testAnimationDuration
            },
            'range': {
                r: true,
                t: testRange
            },
            'orientation': {
                r: false,
                t: testOrientation
            },
            'margin': {
                r: false,
                t: testMargin
            },
            'limit': {
                r: false,
                t: testLimit
            },
            'behaviour': {
                r: true,
                t: testBehaviour
            },
            'format': {
                r: false,
                t: testFormat
            },
            'tooltips': {
                r: false,
                t: testTooltips
            },
            'cssPrefix': {
                r: false,
                t: testCssPrefix
            },
            'cssClasses': {
                r: false,
                t: testCssClasses
            }
        };

        var defaults = {
            'connect': false,
            'direction': 'ltr',
            'behaviour': 'tap',
            'orientation': 'horizontal',
            'cssPrefix': 'noUi-',
            'cssClasses': {
                target: 'target',
                base: 'base',
                origin: 'origin',
                handle: 'handle',
                handleLower: 'handle-lower',
                handleUpper: 'handle-upper',
                horizontal: 'horizontal',
                vertical: 'vertical',
                background: 'background',
                connect: 'connect',
                ltr: 'ltr',
                rtl: 'rtl',
                draggable: 'draggable',
                drag: 'state-drag',
                tap: 'state-tap',
                active: 'active',
                stacking: 'stacking',
                tooltip: 'tooltip',
                pips: 'pips',
                pipsHorizontal: 'pips-horizontal',
                pipsVertical: 'pips-vertical',
                marker: 'marker',
                markerHorizontal: 'marker-horizontal',
                markerVertical: 'marker-vertical',
                markerNormal: 'marker-normal',
                markerLarge: 'marker-large',
                markerSub: 'marker-sub',
                value: 'value',
                valueHorizontal: 'value-horizontal',
                valueVertical: 'value-vertical',
                valueNormal: 'value-normal',
                valueLarge: 'value-large',
                valueSub: 'value-sub'
            }
        };

        // Run all options through a testing mechanism to ensure correct
        // input. It should be noted that options might get modified to
        // be handled properly. E.g. wrapping integers in arrays.
        Object.keys(tests).forEach(function(name) {

            // If the option isn't set, but it is required, throw an error.
            if (options[name] === undefined && defaults[name] === undefined) {

                if (tests[name].r) {
                    throw new Error("noUiSlider: '" + name + "' is required.");
                }

                return true;
            }

            tests[name].t(parsed, options[name] === undefined ? defaults[name] : options[name]);
        });

        // Forward pips options
        parsed.pips = options.pips;

        // Pre-define the styles.
        parsed.style = parsed.ort ? 'top' : 'left';

        return parsed;
    }


    function closure(target, options, originalOptions) {
        var
            actions = getActions(),
            // All variables local to 'closure' are prefixed with 'scope_'
            scope_Target = target,
            scope_Locations = [-1, -1],
            scope_Base,
            scope_Handles,
            scope_Spectrum = options.spectrum,
            scope_Values = [],
            scope_Events = {},
            scope_Self;


        // Delimit proposed values for handle positions.
        function getPositions(a, b, delimit) {

            // Add movement to current position.
            var c = a + b[0],
                d = a + b[1];

            // Only alter the other position on drag,
            // not on standard sliding.
            if (delimit) {
                if (c < 0) {
                    d += Math.abs(c);
                }
                if (d > 100) {
                    c -= (d - 100);
                }

                // Limit values to 0 and 100.
                return [limit(c), limit(d)];
            }

            return [c, d];
        }

        // Provide a clean event with standardized offset values.
        function fixEvent(e, pageOffset) {

            // Prevent scrolling and panning on touch events, while
            // attempting to slide. The tap event also depends on this.
            e.preventDefault();

            // Filter the event to register the type, which can be
            // touch, mouse or pointer. Offset changes need to be
            // made on an event specific basis.
            var touch = e.type.indexOf('touch') === 0,
                mouse = e.type.indexOf('mouse') === 0,
                pointer = e.type.indexOf('pointer') === 0,
                x, y, event = e;

            // IE10 implemented pointer events with a prefix;
            if (e.type.indexOf('MSPointer') === 0) {
                pointer = true;
            }

            if (touch) {
                // noUiSlider supports one movement at a time,
                // so we can select the first 'changedTouch'.
                x = e.changedTouches[0].pageX;
                y = e.changedTouches[0].pageY;
            }

            pageOffset = pageOffset || getPageOffset();

            if (mouse || pointer) {
                x = e.clientX + pageOffset.x;
                y = e.clientY + pageOffset.y;
            }

            event.pageOffset = pageOffset;
            event.points = [x, y];
            event.cursor = mouse || pointer; // Fix #435

            return event;
        }

        // Append a handle to the base.
        function addHandle(direction, index) {

            var origin = document.createElement('div'),
                handle = document.createElement('div'),
                classModifier = [options.cssClasses.handleLower, options.cssClasses.handleUpper];

            if (direction) {
                classModifier.reverse();
            }

            addClass(handle, options.cssClasses.handle);
            addClass(handle, classModifier[index]);

            addClass(origin, options.cssClasses.origin);
            origin.appendChild(handle);

            return origin;
        }

        // Add the proper connection classes.
        function addConnection(connect, target, handles) {

            // Apply the required connection classes to the elements
            // that need them. Some classes are made up for several
            // segments listed in the class list, to allow easy
            // renaming and provide a minor compression benefit.
            switch (connect) {
                case 1:
                    addClass(target, options.cssClasses.connect);
                    addClass(handles[0], options.cssClasses.background);
                    break;
                case 3:
                    addClass(handles[1], options.cssClasses.background);
                    /* falls through */
                case 2:
                    addClass(handles[0], options.cssClasses.connect);
                    /* falls through */
                case 0:
                    addClass(target, options.cssClasses.background);
                    break;
            }
        }

        // Add handles to the slider base.
        function addHandles(nrHandles, direction, base) {

            var index, handles = [];

            // Append handles.
            for (index = 0; index < nrHandles; index += 1) {

                // Keep a list of all added handles.
                handles.push(base.appendChild(addHandle(direction, index)));
            }

            return handles;
        }

        // Initialize a single slider.
        function addSlider(direction, orientation, target) {

            // Apply classes and data to the target.
            addClass(target, options.cssClasses.target);

            if (direction === 0) {
                addClass(target, options.cssClasses.ltr);
            } else {
                addClass(target, options.cssClasses.rtl);
            }

            if (orientation === 0) {
                addClass(target, options.cssClasses.horizontal);
            } else {
                addClass(target, options.cssClasses.vertical);
            }

            var div = document.createElement('div');
            addClass(div, options.cssClasses.base);
            target.appendChild(div);
            return div;
        }


        function addTooltip(handle, index) {

            if (!options.tooltips[index]) {
                return false;
            }

            var element = document.createElement('div');
            element.className = options.cssClasses.tooltip;
            return handle.firstChild.appendChild(element);
        }

        // The tooltips option is a shorthand for using the 'update' event.
        function tooltips() {

            if (options.dir) {
                options.tooltips.reverse();
            }

            // Tooltips are added with options.tooltips in original order.
            var tips = scope_Handles.map(addTooltip);

            if (options.dir) {
                tips.reverse();
                options.tooltips.reverse();
            }

            bindEvent('update', function(f, o, r) {
                if (tips[o]) {
                    tips[o].innerHTML = options.tooltips[o] === true ? f[o] : options.tooltips[o].to(r[o]);
                }
            });
        }


        function getGroup(mode, values, stepped) {

            // Use the range.
            if (mode === 'range' || mode === 'steps') {
                return scope_Spectrum.xVal;
            }

            if (mode === 'count') {

                // Divide 0 - 100 in 'count' parts.
                var spread = (100 / (values - 1)),
                    v, i = 0;
                values = [];

                // List these parts and have them handled as 'positions'.
                while ((v = i++ * spread) <= 100) {
                    values.push(v);
                }

                mode = 'positions';
            }

            if (mode === 'positions') {

                // Map all percentages to on-range values.
                return values.map(function(value) {
                    return scope_Spectrum.fromStepping(stepped ? scope_Spectrum.getStep(value) : value);
                });
            }

            if (mode === 'values') {

                // If the value must be stepped, it needs to be converted to a percentage first.
                if (stepped) {

                    return values.map(function(value) {

                        // Convert to percentage, apply step, return to value.
                        return scope_Spectrum.fromStepping(scope_Spectrum.getStep(scope_Spectrum.toStepping(value)));
                    });

                }

                // Otherwise, we can simply use the values.
                return values;
            }
        }

        function generateSpread(density, mode, group) {

            function safeIncrement(value, increment) {
                // Avoid floating point variance by dropping the smallest decimal places.
                return (value + increment).toFixed(7) / 1;
            }

            var originalSpectrumDirection = scope_Spectrum.direction,
                indexes = {},
                firstInRange = scope_Spectrum.xVal[0],
                lastInRange = scope_Spectrum.xVal[scope_Spectrum.xVal.length - 1],
                ignoreFirst = false,
                ignoreLast = false,
                prevPct = 0;

            // This function loops the spectrum in an ltr linear fashion,
            // while the toStepping method is direction aware. Trick it into
            // believing it is ltr.
            scope_Spectrum.direction = 0;

            // Create a copy of the group, sort it and filter away all duplicates.
            group = unique(group.slice().sort(function(a, b) {
                return a - b;
            }));

            // Make sure the range starts with the first element.
            if (group[0] !== firstInRange) {
                group.unshift(firstInRange);
                ignoreFirst = true;
            }

            // Likewise for the last one.
            if (group[group.length - 1] !== lastInRange) {
                group.push(lastInRange);
                ignoreLast = true;
            }

            group.forEach(function(current, index) {

                // Get the current step and the lower + upper positions.
                var step, i, q,
                    low = current,
                    high = group[index + 1],
                    newPct, pctDifference, pctPos, type,
                    steps, realSteps, stepsize;

                // When using 'steps' mode, use the provided steps.
                // Otherwise, we'll step on to the next subrange.
                if (mode === 'steps') {
                    step = scope_Spectrum.xNumSteps[index];
                }

                // Default to a 'full' step.
                if (!step) {
                    step = high - low;
                }

                // Low can be 0, so test for false. If high is undefined,
                // we are at the last subrange. Index 0 is already handled.
                if (low === false || high === undefined) {
                    return;
                }

                // Find all steps in the subrange.
                for (i = low; i <= high; i = safeIncrement(i, step)) {

                    // Get the percentage value for the current step,
                    // calculate the size for the subrange.
                    newPct = scope_Spectrum.toStepping(i);
                    pctDifference = newPct - prevPct;

                    steps = pctDifference / density;
                    realSteps = Math.round(steps);

                    // This ratio represents the ammount of percentage-space a point indicates.
                    // For a density 1 the points/percentage = 1. For density 2, that percentage needs to be re-devided.
                    // Round the percentage offset to an even number, then divide by two
                    // to spread the offset on both sides of the range.
                    stepsize = pctDifference / realSteps;

                    // Divide all points evenly, adding the correct number to this subrange.
                    // Run up to <= so that 100% gets a point, event if ignoreLast is set.
                    for (q = 1; q <= realSteps; q += 1) {

                        // The ratio between the rounded value and the actual size might be ~1% off.
                        // Correct the percentage offset by the number of points
                        // per subrange. density = 1 will result in 100 points on the
                        // full range, 2 for 50, 4 for 25, etc.
                        pctPos = prevPct + (q * stepsize);
                        indexes[pctPos.toFixed(5)] = ['x', 0];
                    }

                    // Determine the point type.
                    type = (group.indexOf(i) > -1) ? 1 : (mode === 'steps' ? 2 : 0);

                    // Enforce the 'ignoreFirst' option by overwriting the type for 0.
                    if (!index && ignoreFirst) {
                        type = 0;
                    }

                    if (!(i === high && ignoreLast)) {
                        // Mark the 'type' of this point. 0 = plain, 1 = real value, 2 = step value.
                        indexes[newPct.toFixed(5)] = [i, type];
                    }

                    // Update the percentage count.
                    prevPct = newPct;
                }
            });

            // Reset the spectrum.
            scope_Spectrum.direction = originalSpectrumDirection;

            return indexes;
        }

        function addMarking(spread, filterFunc, formatter) {

            var element = document.createElement('div'),
                out = '',
                valueSizeClasses = [
                    options.cssClasses.valueNormal,
                    options.cssClasses.valueLarge,
                    options.cssClasses.valueSub
                ],
                markerSizeClasses = [
                    options.cssClasses.markerNormal,
                    options.cssClasses.markerLarge,
                    options.cssClasses.markerSub
                ],
                valueOrientationClasses = [
                    options.cssClasses.valueHorizontal,
                    options.cssClasses.valueVertical
                ],
                markerOrientationClasses = [
                    options.cssClasses.markerHorizontal,
                    options.cssClasses.markerVertical
                ];

            addClass(element, options.cssClasses.pips);
            addClass(element, options.ort === 0 ? options.cssClasses.pipsHorizontal : options.cssClasses.pipsVertical);

            function getClasses(type, source) {
                var a = source === options.cssClasses.value,
                    orientationClasses = a ? valueOrientationClasses : markerOrientationClasses,
                    sizeClasses = a ? valueSizeClasses : markerSizeClasses;

                return source + ' ' + orientationClasses[options.ort] + ' ' + sizeClasses[type];
            }

            function getTags(offset, source, values) {
                return 'class="' + getClasses(values[1], source) + '" style="' + options.style + ': ' + offset + '%"';
            }

            function addSpread(offset, values) {

                if (scope_Spectrum.direction) {
                    offset = 100 - offset;
                }

                // Apply the filter function, if it is set.
                values[1] = (values[1] && filterFunc) ? filterFunc(values[0], values[1]) : values[1];

                // Add a marker for every point
                out += '<div ' + getTags(offset, options.cssClasses.marker, values) + '></div>';

                // Values are only appended for points marked '1' or '2'.
                if (values[1]) {
                    out += '<div ' + getTags(offset, options.cssClasses.value, values) + '>' + formatter.to(values[0]) + '</div>';
                }
            }

            // Append all points.
            Object.keys(spread).forEach(function(a) {
                addSpread(a, spread[a]);
            });

            element.innerHTML = out;

            return element;
        }

        function pips(grid) {

            var mode = grid.mode,
                density = grid.density || 1,
                filter = grid.filter || false,
                values = grid.values || false,
                stepped = grid.stepped || false,
                group = getGroup(mode, values, stepped),
                spread = generateSpread(density, mode, group),
                format = grid.format || {
                    to: Math.round
                };

            return scope_Target.appendChild(addMarking(
                spread,
                filter,
                format
            ));
        }


        // Shorthand for base dimensions.
        function baseSize() {
            var rect = scope_Base.getBoundingClientRect(),
                alt = 'offset' + ['Width', 'Height'][options.ort];
            return options.ort === 0 ? (rect.width || scope_Base[alt]) : (rect.height || scope_Base[alt]);
        }

        // External event handling
        function fireEvent(event, handleNumber, tap) {

            var i;

            // During initialization, do not fire events.
            for (i = 0; i < options.handles; i++) {
                if (scope_Locations[i] === -1) {
                    return;
                }
            }

            if (handleNumber !== undefined && options.handles !== 1) {
                handleNumber = Math.abs(handleNumber - options.dir);
            }

            Object.keys(scope_Events).forEach(function(targetEvent) {

                var eventType = targetEvent.split('.')[0];

                if (event === eventType) {
                    scope_Events[targetEvent].forEach(function(callback) {

                        callback.call(
                            // Use the slider public API as the scope ('this')
                            scope_Self,
                            // Return values as array, so arg_1[arg_2] is always valid.
                            asArray(valueGet()),
                            // Handle index, 0 or 1
                            handleNumber,
                            // Unformatted slider values
                            asArray(inSliderOrder(Array.prototype.slice.call(scope_Values))),
                            // Event is fired by tap, true or false
                            tap || false,
                            // Left offset of the handle, in relation to the slider
                            scope_Locations
                        );
                    });
                }
            });
        }

        // Returns the input array, respecting the slider direction configuration.
        function inSliderOrder(values) {

            // If only one handle is used, return a single value.
            if (values.length === 1) {
                return values[0];
            }

            if (options.dir) {
                return values.reverse();
            }

            return values;
        }


        // Handler for attaching events trough a proxy.
        function attach(events, element, callback, data) {

            // This function can be used to 'filter' events to the slider.
            // element is a node, not a nodeList

            var method = function(e) {

                    if (scope_Target.hasAttribute('disabled')) {
                        return false;
                    }

                    // Stop if an active 'tap' transition is taking place.
                    if (hasClass(scope_Target, options.cssClasses.tap)) {
                        return false;
                    }

                    e = fixEvent(e, data.pageOffset);

                    // Ignore right or middle clicks on start #454
                    if (events === actions.start && e.buttons !== undefined && e.buttons > 1) {
                        return false;
                    }

                    // Ignore right or middle clicks on start #454
                    if (data.hover && e.buttons) {
                        return false;
                    }

                    e.calcPoint = e.points[options.ort];

                    // Call the event handler with the event [ and additional data ].
                    callback(e, data);

                },
                methods = [];

            // Bind a closure on the target for every event type.
            events.split(' ').forEach(function(eventName) {
                element.addEventListener(eventName, method, false);
                methods.push([eventName, method]);
            });

            return methods;
        }

        // Handle movement on document for handle and range drag.
        function move(event, data) {

            // Fix #498
            // Check value of .buttons in 'start' to work around a bug in IE10 mobile (data.buttonsProperty).
            // https://connect.microsoft.com/IE/feedback/details/927005/mobile-ie10-windows-phone-buttons-property-of-pointermove-event-always-zero
            // IE9 has .buttons and .which zero on mousemove.
            // Firefox breaks the spec MDN defines.
            if (navigator.appVersion.indexOf("MSIE 9") === -1 && event.buttons === 0 && data.buttonsProperty !== 0) {
                return end(event, data);
            }

            var handles = data.handles || scope_Handles,
                positions, state = false,
                proposal = ((event.calcPoint - data.start) * 100) / data.baseSize,
                handleNumber = handles[0] === scope_Handles[0] ? 0 : 1,
                i;

            // Calculate relative positions for the handles.
            positions = getPositions(proposal, data.positions, handles.length > 1);

            state = setHandle(handles[0], positions[handleNumber], handles.length === 1);

            if (handles.length > 1) {

                state = setHandle(handles[1], positions[handleNumber ? 0 : 1], false) || state;

                if (state) {
                    // fire for both handles
                    for (i = 0; i < data.handles.length; i++) {
                        fireEvent('slide', i);
                    }
                }
            } else if (state) {
                // Fire for a single handle
                fireEvent('slide', handleNumber);
            }
        }

        // Unbind move events on document, call callbacks.
        function end(event, data) {

            // The handle is no longer active, so remove the class.
            var active = scope_Base.querySelector('.' + options.cssClasses.active),
                handleNumber = data.handles[0] === scope_Handles[0] ? 0 : 1;

            if (active !== null) {
                removeClass(active, options.cssClasses.active);
            }

            // Remove cursor styles and text-selection events bound to the body.
            if (event.cursor) {
                document.body.style.cursor = '';
                document.body.removeEventListener('selectstart', document.body.noUiListener);
            }

            var d = document.documentElement;

            // Unbind the move and end events, which are added on 'start'.
            d.noUiListeners.forEach(function(c) {
                d.removeEventListener(c[0], c[1]);
            });

            // Remove dragging class.
            removeClass(scope_Target, options.cssClasses.drag);

            // Fire the change and set events.
            fireEvent('set', handleNumber);
            fireEvent('change', handleNumber);

            // If this is a standard handle movement, fire the end event.
            if (data.handleNumber !== undefined) {
                fireEvent('end', data.handleNumber);
            }
        }

        // Fire 'end' when a mouse or pen leaves the document.
        function documentLeave(event, data) {
            if (event.type === "mouseout" && event.target.nodeName === "HTML" && event.relatedTarget === null) {
                end(event, data);
            }
        }

        // Bind move events on document.
        function start(event, data) {

            var d = document.documentElement;

            // Mark the handle as 'active' so it can be styled.
            if (data.handles.length === 1) {
                // Support 'disabled' handles
                if (data.handles[0].hasAttribute('disabled')) {
                    return false;
                }

                addClass(data.handles[0].children[0], options.cssClasses.active);
            }

            // Fix #551, where a handle gets selected instead of dragged.
            event.preventDefault();

            // A drag should never propagate up to the 'tap' event.
            event.stopPropagation();

            // Attach the move and end events.
            var moveEvent = attach(actions.move, d, move, {
                    start: event.calcPoint,
                    baseSize: baseSize(),
                    pageOffset: event.pageOffset,
                    handles: data.handles,
                    handleNumber: data.handleNumber,
                    buttonsProperty: event.buttons,
                    positions: [
                        scope_Locations[0],
                        scope_Locations[scope_Handles.length - 1]
                    ]
                }),
                endEvent = attach(actions.end, d, end, {
                    handles: data.handles,
                    handleNumber: data.handleNumber
                });

            var outEvent = attach("mouseout", d, documentLeave, {
                handles: data.handles,
                handleNumber: data.handleNumber
            });

            d.noUiListeners = moveEvent.concat(endEvent, outEvent);

            // Text selection isn't an issue on touch devices,
            // so adding cursor styles can be skipped.
            if (event.cursor) {

                // Prevent the 'I' cursor and extend the range-drag cursor.
                document.body.style.cursor = getComputedStyle(event.target).cursor;

                // Mark the target with a dragging state.
                if (scope_Handles.length > 1) {
                    addClass(scope_Target, options.cssClasses.drag);
                }

                var f = function() {
                    return false;
                };

                document.body.noUiListener = f;

                // Prevent text selection when dragging the handles.
                document.body.addEventListener('selectstart', f, false);
            }

            if (data.handleNumber !== undefined) {
                fireEvent('start', data.handleNumber);
            }
        }

        // Move closest handle to tapped location.
        function tap(event) {

            var location = event.calcPoint,
                total = 0,
                handleNumber, to;

            // The tap event shouldn't propagate up and cause 'edge' to run.
            event.stopPropagation();

            // Add up the handle offsets.
            scope_Handles.forEach(function(a) {
                total += offset(a)[options.style];
            });

            // Find the handle closest to the tapped position.
            handleNumber = (location < total / 2 || scope_Handles.length === 1) ? 0 : 1;

            // Check if handler is not disablet if yes set number to the next handler
            if (scope_Handles[handleNumber].hasAttribute('disabled')) {
                handleNumber = handleNumber ? 0 : 1;
            }

            location -= offset(scope_Base)[options.style];

            // Calculate the new position.
            to = (location * 100) / baseSize();

            if (!options.events.snap) {
                // Flag the slider as it is now in a transitional state.
                // Transition takes a configurable amount of ms (default 300). Re-enable the slider after that.
                addClassFor(scope_Target, options.cssClasses.tap, options.animationDuration);
            }

            // Support 'disabled' handles
            if (scope_Handles[handleNumber].hasAttribute('disabled')) {
                return false;
            }

            // Find the closest handle and calculate the tapped point.
            // The set handle to the new position.
            setHandle(scope_Handles[handleNumber], to);

            fireEvent('slide', handleNumber, true);
            fireEvent('set', handleNumber, true);
            fireEvent('change', handleNumber, true);

            if (options.events.snap) {
                start(event, {
                    handles: [scope_Handles[handleNumber]]
                });
            }
        }

        // Fires a 'hover' event for a hovered mouse/pen position.
        function hover(event) {

            var location = event.calcPoint - offset(scope_Base)[options.style],
                to = scope_Spectrum.getStep((location * 100) / baseSize()),
                value = scope_Spectrum.fromStepping(to);

            Object.keys(scope_Events).forEach(function(targetEvent) {
                if ('hover' === targetEvent.split('.')[0]) {
                    scope_Events[targetEvent].forEach(function(callback) {
                        callback.call(scope_Self, value);
                    });
                }
            });
        }

        // Attach events to several slider parts.
        function events(behaviour) {

            // Attach the standard drag event to the handles.
            if (!behaviour.fixed) {

                scope_Handles.forEach(function(handle, index) {

                    // These events are only bound to the visual handle
                    // element, not the 'real' origin element.
                    attach(actions.start, handle.children[0], start, {
                        handles: [handle],
                        handleNumber: index
                    });
                });
            }

            // Attach the tap event to the slider base.
            if (behaviour.tap) {

                attach(actions.start, scope_Base, tap, {
                    handles: scope_Handles
                });
            }

            // Fire hover events
            if (behaviour.hover) {
                attach(actions.move, scope_Base, hover, {
                    hover: true
                });
            }

            // Make the range draggable.
            if (behaviour.drag) {

                var drag = [scope_Base.querySelector('.' + options.cssClasses.connect)];
                addClass(drag[0], options.cssClasses.draggable);

                // When the range is fixed, the entire range can
                // be dragged by the handles. The handle in the first
                // origin will propagate the start event upward,
                // but it needs to be bound manually on the other.
                if (behaviour.fixed) {
                    drag.push(scope_Handles[(drag[0] === scope_Handles[0] ? 1 : 0)].children[0]);
                }

                drag.forEach(function(element) {
                    attach(actions.start, element, start, {
                        handles: scope_Handles
                    });
                });
            }
        }


        // Test suggested values and apply margin, step.
        function setHandle(handle, to, noLimitOption) {

            var trigger = handle !== scope_Handles[0] ? 1 : 0,
                lowerMargin = scope_Locations[0] + options.margin,
                upperMargin = scope_Locations[1] - options.margin,
                lowerLimit = scope_Locations[0] + options.limit,
                upperLimit = scope_Locations[1] - options.limit;

            // For sliders with multiple handles,
            // limit movement to the other handle.
            // Apply the margin option by adding it to the handle positions.
            if (scope_Handles.length > 1) {
                to = trigger ? Math.max(to, lowerMargin) : Math.min(to, upperMargin);
            }

            // The limit option has the opposite effect, limiting handles to a
            // maximum distance from another. Limit must be > 0, as otherwise
            // handles would be unmoveable. 'noLimitOption' is set to 'false'
            // for the .val() method, except for pass 4/4.
            if (noLimitOption !== false && options.limit && scope_Handles.length > 1) {
                to = trigger ? Math.min(to, lowerLimit) : Math.max(to, upperLimit);
            }

            // Handle the step option.
            to = scope_Spectrum.getStep(to);

            // Limit percentage to the 0 - 100 range
            to = limit(to);

            // Return false if handle can't move
            if (to === scope_Locations[trigger]) {
                return false;
            }

            // Set the handle to the new position.
            // Use requestAnimationFrame for efficient painting.
            // No significant effect in Chrome, Edge sees dramatic
            // performace improvements.
            if (window.requestAnimationFrame) {
                window.requestAnimationFrame(function() {
                    handle.style[options.style] = to + '%';
                });
            } else {
                handle.style[options.style] = to + '%';
            }

            // Force proper handle stacking
            if (!handle.previousSibling) {
                removeClass(handle, options.cssClasses.stacking);
                if (to > 50) {
                    addClass(handle, options.cssClasses.stacking);
                }
            }

            // Update locations.
            scope_Locations[trigger] = to;

            // Convert the value to the slider stepping/range.
            scope_Values[trigger] = scope_Spectrum.fromStepping(to);

            fireEvent('update', trigger);

            return true;
        }

        // Loop values from value method and apply them.
        function setValues(count, values) {

            var i, trigger, to;

            // With the limit option, we'll need another limiting pass.
            if (options.limit) {
                count += 1;
            }

            // If there are multiple handles to be set run the setting
            // mechanism twice for the first handle, to make sure it
            // can be bounced of the second one properly.
            for (i = 0; i < count; i += 1) {

                trigger = i % 2;

                // Get the current argument from the array.
                to = values[trigger];

                // Setting with null indicates an 'ignore'.
                // Inputting 'false' is invalid.
                if (to !== null && to !== false) {

                    // If a formatted number was passed, attemt to decode it.
                    if (typeof to === 'number') {
                        to = String(to);
                    }

                    to = options.format.from(to);

                    // Request an update for all links if the value was invalid.
                    // Do so too if setting the handle fails.
                    if (to === false || isNaN(to) || setHandle(scope_Handles[trigger], scope_Spectrum.toStepping(to), i === (3 - options.dir)) === false) {
                        fireEvent('update', trigger);
                    }
                }
            }
        }

        // Set the slider value.
        function valueSet(input, fireSetEvent) {

            var count, values = asArray(input),
                i;

            // Event fires by default
            fireSetEvent = (fireSetEvent === undefined ? true : !!fireSetEvent);

            // The RTL settings is implemented by reversing the front-end,
            // internal mechanisms are the same.
            if (options.dir && options.handles > 1) {
                values.reverse();
            }

            // Animation is optional.
            // Make sure the initial values where set before using animated placement.
            if (options.animate && scope_Locations[0] !== -1) {
                addClassFor(scope_Target, options.cssClasses.tap, options.animationDuration);
            }

            // Determine how often to set the handles.
            count = scope_Handles.length > 1 ? 3 : 1;

            if (values.length === 1) {
                count = 1;
            }

            setValues(count, values);

            // Fire the 'set' event for both handles.
            for (i = 0; i < scope_Handles.length; i++) {

                // Fire the event only for handles that received a new value, as per #579
                if (values[i] !== null && fireSetEvent) {
                    fireEvent('set', i);
                }
            }
        }

        // Get the slider value.
        function valueGet() {

            var i, retour = [];

            // Get the value from all handles.
            for (i = 0; i < options.handles; i += 1) {
                retour[i] = options.format.to(scope_Values[i]);
            }

            return inSliderOrder(retour);
        }

        // Removes classes from the root and empties it.
        function destroy() {

            for (var key in options.cssClasses) {
                if (!options.cssClasses.hasOwnProperty(key)) {
                    continue;
                }
                removeClass(scope_Target, options.cssClasses[key]);
            }

            while (scope_Target.firstChild) {
                scope_Target.removeChild(scope_Target.firstChild);
            }

            delete scope_Target.noUiSlider;
        }

        // Get the current step size for the slider.
        function getCurrentStep() {

            // Check all locations, map them to their stepping point.
            // Get the step point, then find it in the input list.
            var retour = scope_Locations.map(function(location, index) {

                var step = scope_Spectrum.getApplicableStep(location),

                    // As per #391, the comparison for the decrement step can have some rounding issues.
                    // Round the value to the precision used in the step.
                    stepDecimals = countDecimals(String(step[2])),

                    // Get the current numeric value
                    value = scope_Values[index],

                    // To move the slider 'one step up', the current step value needs to be added.
                    // Use null if we are at the maximum slider value.
                    increment = location === 100 ? null : step[2],

                    // Going 'one step down' might put the slider in a different sub-range, so we
                    // need to switch between the current or the previous step.
                    prev = Number((value - step[2]).toFixed(stepDecimals)),

                    // If the value fits the step, return the current step value. Otherwise, use the
                    // previous step. Return null if the slider is at its minimum value.
                    decrement = location === 0 ? null : (prev >= step[1]) ? step[2] : (step[0] || false);

                return [decrement, increment];
            });

            // Return values in the proper order.
            return inSliderOrder(retour);
        }

        // Attach an event to this slider, possibly including a namespace
        function bindEvent(namespacedEvent, callback) {
            scope_Events[namespacedEvent] = scope_Events[namespacedEvent] || [];
            scope_Events[namespacedEvent].push(callback);

            // If the event bound is 'update,' fire it immediately for all handles.
            if (namespacedEvent.split('.')[0] === 'update') {
                scope_Handles.forEach(function(a, index) {
                    fireEvent('update', index);
                });
            }
        }

        // Undo attachment of event
        function removeEvent(namespacedEvent) {

            var event = namespacedEvent && namespacedEvent.split('.')[0],
                namespace = event && namespacedEvent.substring(event.length);

            Object.keys(scope_Events).forEach(function(bind) {

                var tEvent = bind.split('.')[0],
                    tNamespace = bind.substring(tEvent.length);

                if ((!event || event === tEvent) && (!namespace || namespace === tNamespace)) {
                    delete scope_Events[bind];
                }
            });
        }

        // Updateable: margin, limit, step, range, animate, snap
        function updateOptions(optionsToUpdate, fireSetEvent) {

            // Spectrum is created using the range, snap, direction and step options.
            // 'snap' and 'step' can be updated, 'direction' cannot, due to event binding.
            // If 'snap' and 'step' are not passed, they should remain unchanged.
            var v = valueGet(),
                newOptions = testOptions({
                    start: [0, 0],
                    margin: optionsToUpdate.margin,
                    limit: optionsToUpdate.limit,
                    step: optionsToUpdate.step === undefined ? options.singleStep : optionsToUpdate.step,
                    range: optionsToUpdate.range,
                    animate: optionsToUpdate.animate,
                    snap: optionsToUpdate.snap === undefined ? options.snap : optionsToUpdate.snap
                });

            ['margin', 'limit', 'range', 'animate'].forEach(function(name) {

                // Only change options that we're actually passed to update.
                if (optionsToUpdate[name] !== undefined) {
                    options[name] = optionsToUpdate[name];
                }
            });

            // Save current spectrum direction as testOptions in testRange call
            // doesn't rely on current direction
            newOptions.spectrum.direction = scope_Spectrum.direction;
            scope_Spectrum = newOptions.spectrum;

            // Invalidate the current positioning so valueSet forces an update.
            scope_Locations = [-1, -1];
            valueSet(optionsToUpdate.start || v, fireSetEvent);
        }


        // Throw an error if the slider was already initialized.
        if (scope_Target.noUiSlider) {
            throw new Error('Slider was already initialized.');
        }

        // Create the base element, initialise HTML and set classes.
        // Add handles and links.
        scope_Base = addSlider(options.dir, options.ort, scope_Target);
        scope_Handles = addHandles(options.handles, options.dir, scope_Base);

        // Set the connect classes.
        addConnection(options.connect, scope_Target, scope_Handles);

        if (options.pips) {
            pips(options.pips);
        }

        if (options.tooltips) {
            tooltips();
        }

        scope_Self = {
            destroy: destroy,
            steps: getCurrentStep,
            on: bindEvent,
            off: removeEvent,
            get: valueGet,
            set: valueSet,
            updateOptions: updateOptions,
            options: originalOptions, // Issue #600
            target: scope_Target, // Issue #597
            pips: pips // Issue #594
        };

        // Attach user events.
        events(options.events);

        return scope_Self;

    }


    // Run the standard initializer
    function initialize(target, originalOptions) {

        if (!target.nodeName) {
            throw new Error('noUiSlider.create requires a single element.');
        }

        // Test the options and create the slider environment;
        var options = testOptions(originalOptions, target),
            slider = closure(target, options, originalOptions);

        // Use the public value method to set the start values.
        slider.set(options.start);

        target.noUiSlider = slider;
        return slider;
    }

    // Use an object instead of a function for future expansibility;
    return {
        create: initialize
    };

}));

//# sourceURL=webpack://VLibras/./node_modules/nouislider/distribute/nouislider.js?
                                    

#12 JavaScript::Eval (size: 749, repeated: 1) - SHA256: 2271999f6e609da155c357fea708a1219908499a497105d098ecbeae816be080

                                        var content = __webpack_require__( /*! !../../css-loader/dist/cjs.js!../../sass-loader/dist/cjs.js!./nouislider.min.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./node_modules/nouislider/distribute/nouislider.min.css");

if (typeof content === 'string') {
    content = [
        [module.i, content, '']
    ];
}

var options = {}

options.insert = "head";
options.singleton = false;

var update = __webpack_require__( /*! ../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js")(content, options);

if (content.locals) {
    module.exports = content.locals;
}


//# sourceURL=webpack://VLibras/./node_modules/nouislider/distribute/nouislider.min.css?
                                    

#13 JavaScript::Eval (size: 721, repeated: 1) - SHA256: 33ca300044f3df2eca6dca07b9c2f904df6253503c174b73123279e8409914fc

                                        var content = __webpack_require__( /*! !../../node_modules/css-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js!./styles.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./plugin/scss/styles.scss");

if (typeof content === 'string') {
    content = [
        [module.i, content, '']
    ];
}

var options = {}

options.insert = "head";
options.singleton = false;

var update = __webpack_require__( /*! ../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js")(content, options);

if (content.locals) {
    module.exports = content.locals;
}


//# sourceURL=webpack://VLibras/./plugin/scss/styles.scss?
                                    

#14 JavaScript::Eval (size: 2189, repeated: 1) - SHA256: 52b72603b8f654295717b8f0b05f52f8182e3706d09f48cc9685ccbc4ef31d6e

                                        /*
object-assign
(c) Sindre Sorhus
@license MIT
*/


/* eslint-disable no-unused-vars */
var getOwnPropertySymbols = Object.getOwnPropertySymbols;
var hasOwnProperty = Object.prototype.hasOwnProperty;
var propIsEnumerable = Object.prototype.propertyIsEnumerable;

function toObject(val) {
    if (val === null || val === undefined) {
        throw new TypeError('Object.assign cannot be called with null or undefined');
    }

    return Object(val);
}

function shouldUseNative() {
    try {
        if (!Object.assign) {
            return false;
        }

        // Detect buggy property enumeration order in older V8 versions.

        // https://bugs.chromium.org/p/v8/issues/detail?id=4118
        var test1 = new String('abc'); // eslint-disable-line no-new-wrappers
        test1[5] = 'de';
        if (Object.getOwnPropertyNames(test1)[0] === '5') {
            return false;
        }

        // https://bugs.chromium.org/p/v8/issues/detail?id=3056
        var test2 = {};
        for (var i = 0; i < 10; i++) {
            test2['_' + String.fromCharCode(i)] = i;
        }
        var order2 = Object.getOwnPropertyNames(test2).map(function(n) {
            return test2[n];
        });
        if (order2.join('') !== '0123456789') {
            return false;
        }

        // https://bugs.chromium.org/p/v8/issues/detail?id=3056
        var test3 = {};
        'abcdefghijklmnopqrst'.split('').forEach(function(letter) {
            test3[letter] = letter;
        });
        if (Object.keys(Object.assign({}, test3)).join('') !==
            'abcdefghijklmnopqrst') {
            return false;
        }

        return true;
    } catch (err) {
        // We don't expect any of the above to throw, but better to be safe.
        return false;
    }
}

module.exports = shouldUseNative() ? Object.assign : function(target, source) {
    var from;
    var to = toObject(target);
    var symbols;

    for (var s = 1; s < arguments.length; s++) {
        from = Object(arguments[s]);

        for (var key in from) {
            if (hasOwnProperty.call(from, key)) {
                to[key] = from[key];
            }
        }

        if (getOwnPropertySymbols) {
            symbols = getOwnPropertySymbols(from);
            for (var i = 0; i < symbols.length; i++) {
                if (propIsEnumerable.call(from, symbols[i])) {
                    to[symbols[i]] = from[symbols[i]];
                }
            }
        }
    }

    return to;
};


//# sourceURL=webpack://VLibras/../vlibras-player-webjs/node_modules/object-assign/index.js?
                                    

#15 JavaScript::Eval (size: 2884, repeated: 1) - SHA256: 2f978e6acc19feddaedcc5b93318e5fe3e80cce4a48caa0cdc289038c828d646

                                        __webpack_require__.r(__webpack_exports__);
/* harmony default export */
__webpack_exports__["default"] = ("<div class=\"vpw-arrow vpw-arrow-left\">\n  <img data-src=\"assets/ToLeft-2019.png\" />\n</div>\n<div id=\"vpw-info-tabset\">\n  <div id=\"vpw-info-main\" class=\"vpw-info-tab active\">\n    <div id=\"vpw-info-logo\">\n      <img data-src=\"assets/logo.png\" />\n    </div>\n    <div id=\"vpw-info-meta\">\n      <p>Vers�o 5.2.0</p>\n      <a href=\"http://vlibras.gov.br\" target=\"_blank\">vlibras.gov.br</a>\n    </div>\n    <div id=\"vpw-info-text\">\n      <p>\n        O VLibras � uma ferramenta gratuita (de c�digo aberto e distribui��o\n        livre) que faz a tradu��o autom�tica da L�ngua Portuguesa para a L�ngua\n        Brasileira de Sinais (Libras). Pode ser instalado em qualquer site ou no\n        computador, e tamb�m em tablets e smartphones.\n      </p>\n      <p>\n        Resultado de uma parceria entre a Secretaria de Governo Digital do\n        Minist�rio da Economia e a Universidade Federal da Para�ba (UFPB), o\n        VLibras foi desenvolvido para melhorar o acesso das pessoas surdas\n        usu�rias de Libras � informa��o e � comunica��o.\n      </p>\n    </div>\n  </div>\n  <div id=\"vpw-info-realizadores\" class=\"vpw-info-tab\">\n    <span class=\"vpw-info-tab-label\">Contatos</span>\n\n    <div class=\"vpw-logo-group text\">\n      <p class=\"format-text\">Universidade Federal da Para�ba</p>\n      <p class=\"format-text\">Centro de Inform�tica</p>\n      <p class=\"format-text\">N�cleo de Pesquisa e Extens�o LAVID</p>\n      <p class=\"format-text\">contato@lavid.ufpb.br</p>\n\n      <p class=\"p-separator\"></p>\n\n      <p class=\"format-text\">Minist�rio da Economia</p>\n      <p class=\"format-text\">Secretaria de Governo Digital</p>\n      <p class=\"format-text\">govbr@planejamento.gov.br</p>\n    </div>\n\n    <span class=\"vpw-info-tab-label-two\">Realizadores</span>\n\n    <div class=\"vpw-logo-group logo1\">\n      <img class=\"vpw-logo vpw-siz\" data-src=\"assets/about_min_eco.png\" />\n      <img class=\"vpw-logo vpw-siz\" data-src=\"assets/camdeputados.png\" />\n    </div>\n\n    <div class=\"vpw-logo-group logo2\">\n      <img class=\"vpw-logo\" data-src=\"assets/about_lavid.png\" />\n      <img class=\"vpw-logo ufpb\" data-src=\"assets/about_ufpb.png\" />\n      <img class=\"vpw-logo\" data-src=\"assets/about_rnp.png\" />\n    </div>\n  </div>\n  <div id=\"vpw-info-tab-bullets\">\n    <img class=\"vpw-info-bullet active\" data-src=\"assets/CounterOn-1.png\" />\n    <img class=\"vpw-info-bullet\" data-src=\"assets/CounterOff.png\" />\n  </div>\n</div>\n<div class=\"vpw-arrow vpw-arrow-right active\">\n  <img data-src=\"assets/ToRight-2019.png\" />\n</div>\n");

//# sourceURL=webpack://VLibras/./plugin/components/InfoScreen/info-screen.html?
                                    

#16 JavaScript::Eval (size: 2956, repeated: 1) - SHA256: 8dcf7b9c7a80c95fb35dc7923e60bf708be1d2848f4163fb6e938ad6dd5905e9

                                        var window = __webpack_require__( /*! window */ "window");
var inherits = __webpack_require__( /*! inherits */ "../vlibras-player-webjs/node_modules/inherits/inherits_browser.js");
var EventEmitter = __webpack_require__( /*! events */ "./node_modules/events/events.js").EventEmitter;

var GAME_OBJECT = 'PlayerManager';

function PlayerManagerAdapter() {
    if (PlayerManagerAdapter.instance) return PlayerManagerAdapter.instance;

    this.subtitle = true;

    this.on('load', function() {
        this._send('initRandomAnimationsProcess');
    }.bind(this));

    PlayerManagerAdapter.instance = this;
}

inherits(PlayerManagerAdapter, EventEmitter);

PlayerManagerAdapter.prototype.setPlayerReference = function(player) {
    this.player = player;
};

PlayerManagerAdapter.prototype._send = function(method, params) {
    this.player.SendMessage(GAME_OBJECT, method, params);
};

PlayerManagerAdapter.prototype.play = function(glosa) {
    if (glosa) {
        this._send('playNow', glosa);
    } else {
        this._send('setPauseState', 0);
    }
};

PlayerManagerAdapter.prototype.setPersonalization = function(personalization) {
    this.player.SendMessage('Avatar', 'setURL', personalization);
};

PlayerManagerAdapter.prototype.pause = function() {
    this._send('setPauseState', 1);
};

PlayerManagerAdapter.prototype.stop = function() {
    this._send('stopAll');
};

PlayerManagerAdapter.prototype.setSpeed = function(speed) {
    this._send('setSlider', speed);
};

PlayerManagerAdapter.prototype.toggleSubtitle = function() {
    this.subtitle = !this.subtitle;
    this._send('setSubtitlesState', toInt(this.subtitle));
};

PlayerManagerAdapter.prototype.setRegion = function(region) {
    this._send('setRegion', region);
};

PlayerManagerAdapter.prototype.playWellcome = function() {
    this._send('playWellcome');
};

PlayerManagerAdapter.prototype.changeAvatar = function(avatarName) {
    this._send('Change', avatarName);
};


PlayerManagerAdapter.prototype.setBaseUrl = function(url) {
    this._send('setBaseUrl', url);
};

window.onLoadPlayer = function() {
    PlayerManagerAdapter.instance.emit('load');
};

window.updateProgress = function(progress) {
    PlayerManagerAdapter.instance.emit('progress', progress);
};

window.onPlayingStateChange = function(
    isPlaying, isPaused, isPlayingIntervalAnimation, isLoading, isRepeatable) {
    PlayerManagerAdapter.instance.emit(
        'stateChange', toBoolean(isPlaying), toBoolean(isPaused), toBoolean(isLoading)
    );
};

window.CounterGloss = function(counter, glosaLenght) {
    PlayerManagerAdapter.instance.emit(
        'CounterGloss', counter, glosaLenght
    );
};

window.FinishWelcome = function(bool) {
    PlayerManagerAdapter.instance.emit(
        'FinishWelcome', bool
    );
};

function toInt(boolean) {
    return !boolean ? 0 : 1;
};

function toBoolean(bool) {
    return bool != 'False';
};

module.exports = PlayerManagerAdapter;


//# sourceURL=webpack://VLibras/../vlibras-player-webjs/src/PlayerManagerAdapter.js?
                                    

#17 JavaScript::Eval (size: 613, repeated: 1) - SHA256: 1f174100c9103d65b1f2f54ae614395d73c98241fbdc488a3fe4346c8b6178eb

                                        var request = __webpack_require__( /*! superagent */ "../vlibras-player-webjs/node_modules/superagent/lib/client.js");

function GlosaTranslator(endpoint) {
    this.endpoint = endpoint;
}

GlosaTranslator.prototype.translate = function(text, callback) {
    // console.log('Translate: ' + text);

    request.post(this.endpoint, {
        text: text
    }).end(
        function(err, response) {
            if (err) {
                callback(undefined, err);
                return;
            }

            callback(response.text);
        }
    );
};

module.exports = GlosaTranslator;


//# sourceURL=webpack://VLibras/../vlibras-player-webjs/src/GlosaTranslator.js?
                                    

#18 JavaScript::Eval (size: 967, repeated: 1) - SHA256: 78c763f7d1bc905e72d743b3c853d9187dc62930e4e1a45781c975946b557fd3

                                        var template = __webpack_require__( /*! ./rate-button.html */ "./plugin/components/RateButton/rate-button.html").default;
__webpack_require__( /*! ./rate-button.scss */ "./plugin/components/RateButton/rate-button.scss");

function RateButton(rateBox) {
    this.element = null;
    this.rateBox = rateBox;
}

RateButton.prototype.load = function(element) {
    this.element = element;
    this.element.innerHTML = template;

    this.enabled = false;

    const button = this.element.querySelector('.vp-button');

    button.addEventListener('click', () => {
        if (this.enabled) {
            this.hide();
            this.rateBox.show();
        }
    });
};

RateButton.prototype.show = function() {
    this.enabled = true;
    this.element.classList.add('vp-enabled');
};

RateButton.prototype.hide = function() {
    this.enabled = false;
    this.element.classList.remove('vp-enabled');
};

module.exports = RateButton;


//# sourceURL=webpack://VLibras/./plugin/components/RateButton/index.js?
                                    

#19 JavaScript::Eval (size: 277, repeated: 1) - SHA256: 992f2dff565abba3da20feb1998d37eb810b6a0d812a275bc2a9187057e76372

                                        __webpack_require__.r(__webpack_exports__);
/* harmony default export */
__webpack_exports__["default"] = ("<span class=\"vp-button\">\n  <img data-src=\"assets/rate-button.png\" />\n</span>\n");

//# sourceURL=webpack://VLibras/./plugin/components/RateButton/rate-button.html?
                                    

#20 JavaScript::Eval (size: 219, repeated: 1) - SHA256: fa9ab8471edcd64698e7b868eaf3a524204e6cf1367fc82cc7dc726fe3becdaa

                                        exports.translatorUrl = 'https://traducao2.vlibras.gov.br/translate';
exports.dictionaryUrl = 'https://dicionario2.vlibras.gov.br/2018.3.1/WEBGL/';

//# sourceURL=webpack://VLibras/../vlibras-player-webjs/src/config.js?
                                    

#21 JavaScript::Eval (size: 938, repeated: 1) - SHA256: 24fce3c122ce864298e931a847af1414481595970a91629e4004866f78ed3af2

                                        exports = module.exports = __webpack_require__( /*! ../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js")(false);
// Module
exports.push([module.i, "[vp] .vpw-settings-btn {\n  position: absolute;\n  z-index: 1;\n  height: 100%;\n  width: 100%;\n  cursor: pointer; }\n  [vp] .vpw-settings-btn .vpw-settings-btn-menu {\n    display: none;\n    position: absolute;\n    top: 50%;\n    transform: translateY(-50%);\n    width: 20px;\n    height: 18px;\n    left: 20px; }\n    [vp] .vpw-settings-btn .vpw-settings-btn-menu.active {\n      display: block; }\n  [vp] .vpw-settings-btn .vpw-settings-btn-close {\n    display: none;\n    position: absolute;\n    top: 50%;\n    transform: translateY(-50%);\n    right: 5px; }\n", ""]);


//# sourceURL=webpack://VLibras/./plugin/components/SettingsBtn/settings-btn.scss?./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js
                                    

#22 JavaScript::Eval (size: 779, repeated: 1) - SHA256: 7ee356121addd818ed893a4df6c9726bcc26d25053328c9281556c28d1ebba36

                                        var content = __webpack_require__( /*! !../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./message-box.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./plugin/components/MessageBox/message-box.scss");

if (typeof content === 'string') {
    content = [
        [module.i, content, '']
    ];
}

var options = {}

options.insert = "head";
options.singleton = false;

var update = __webpack_require__( /*! ../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js")(content, options);

if (content.locals) {
    module.exports = content.locals;
}


//# sourceURL=webpack://VLibras/./plugin/components/MessageBox/message-box.scss?
                                    

#23 JavaScript::Eval (size: 812, repeated: 1) - SHA256: 36c96cfe0175baf4e5e3c24a663462fd98c73b501f538e1dcad03dc19231f285

                                        var content = __webpack_require__( /*! !../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./settings-close-btn.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./plugin/components/SettingsCloseBtn/settings-close-btn.scss");

if (typeof content === 'string') {
    content = [
        [module.i, content, '']
    ];
}

var options = {}

options.insert = "head";
options.singleton = false;

var update = __webpack_require__( /*! ../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js")(content, options);

if (content.locals) {
    module.exports = content.locals;
}


//# sourceURL=webpack://VLibras/./plugin/components/SettingsCloseBtn/settings-close-btn.scss?
                                    

#24 JavaScript::Eval (size: 1835, repeated: 1) - SHA256: 7dda808f1d79d7b5719a0c13b25e98ef64c2988b89fd3003e410a99f5c6fbae5

                                        var settingsBtnTpl = __webpack_require__( /*! ./settings-btn.html */ "./plugin/components/SettingsBtn/settings-btn.html").default;
__webpack_require__( /*! ./settings-btn.scss */ "./plugin/components/SettingsBtn/settings-btn.scss");

function SettingsBtn(player, screen, settingsBtnClose, option) {
    this.player = player;
    this.screen = screen;
    this.settingsBtnClose = settingsBtnClose;
    enable = option.enableMoveWindow;
}

SettingsBtn.prototype.load = function(element, loadDictionary, elementDict, rootPath) {
    this.element = element;
    this.element.innerHTML = settingsBtnTpl;
    this.element.classList.add('vpw-settings-btn');
    var fistTime = true;

    var btn_menu = this.element.querySelector('.vpw-settings-btn-menu');
    btn_menu.classList.add('active');
    var btn_close = this.element.querySelector('.vpw-settings-btn-close');

    if (enable) {
        btn_close.style.display = 'block';
    }


    btn_menu.addEventListener('click', function() {
        this.element.classList.toggle('active');
        if (fistTime) {
            loadDictionary();
            elementDict.querySelectorAll("img[data-src]").forEach((image) => {
                const imagePath = image.attributes["data-src"].value;
                image.src = rootPath ? rootPath + "/" + imagePath : imagePath;
            });
            fistTime = false;
        }
        if (this.settingsBtnClose.element.classList.contains('active')) {
            this.settingsBtnClose.element.classList.remove('active');
        } else {
            this.settingsBtnClose.element.classList.add('active');
        }
        this.player.pause();
        this.screen.toggle();
    }.bind(this));

    btn_close.addEventListener('click', function() {
        window.dispatchEvent(new CustomEvent('vp-widget-close', {
            detail: {
                close: true
            }
        }));
    }.bind(this));

};

module.exports = SettingsBtn;


//# sourceURL=webpack://VLibras/./plugin/components/SettingsBtn/index.js?
                                    

#25 JavaScript::Eval (size: 784, repeated: 1) - SHA256: 3f85e4aa366356499157c7c97c6adc325ff217a40a3c98fd70593a5a83f37084

                                        var content = __webpack_require__( /*! !../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./settings-btn.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./plugin/components/SettingsBtn/settings-btn.scss");

if (typeof content === 'string') {
    content = [
        [module.i, content, '']
    ];
}

var options = {}

options.insert = "head";
options.singleton = false;

var update = __webpack_require__( /*! ../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js")(content, options);

if (content.locals) {
    module.exports = content.locals;
}


//# sourceURL=webpack://VLibras/./plugin/components/SettingsBtn/settings-btn.scss?
                                    

#26 JavaScript::Eval (size: 5126, repeated: 1) - SHA256: 93d040c57e2a8efc4680080f419dba0738148a81cf1b94f4787959d1eb9945cf

                                        exports = module.exports = __webpack_require__( /*! ../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js")(false);
// Module
exports.push([module.i, "[vp] .vpw-info-screen {\n  position: relative;\n  padding: 1em;\n  width: 100%;\n  height: calc(100% - 40px);\n  z-index: 4;\n  background-color: white;\n  color: black;\n  font-family: \"Open Sans\", sans-serif;\n  text-align: center;\n  align-items: center;\n  -webkit-align-items: center;\n  font-size: 11px;\n  display: none;\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box; }\n  [vp] .vpw-info-screen.active {\n    display: -webkit-flex;\n    display: flex; }\n  [vp] .vpw-info-screen .vpw-arrow {\n    flex-grow: 1;\n    -webkit-flex-grow: 1;\n    visibility: hidden; }\n  [vp] .vpw-info-screen .vpw-arrow.active {\n    visibility: visible; }\n  [vp] .vpw-info-screen #vpw-info-tabset {\n    position: relative;\n    top: 0;\n    flex-grow: 4;\n    display: -webkit-flex;\n    display: flex;\n    flex-direction: column;\n    -webkit-flex-direction: column;\n    padding: 0;\n    height: 100%;\n    width: 100%;\n    align-items: center;\n    -webkit-align-items: center; }\n  [vp] .vpw-info-screen #vpw-info-main {\n    max-width: 600px;\n    font-family: \"Open Sans\", sans-serif;\n    flex-direction: column;\n    -webkit-flex-direction: column; }\n    [vp] .vpw-info-screen #vpw-info-main.active {\n      display: flex;\n      align-content: center;\n      justify-content: center;\n      align-items: center; }\n  [vp] .vpw-info-screen #vpw-info-logo img {\n    height: 90px; }\n  [vp] .vpw-info-screen #vpw-info-realizadores {\n    height: 100%;\n    min-width: 230px;\n    width: 50%;\n    flex-direction: column;\n    align-items: stretch;\n    -webkit-flex-direction: column;\n    -webkit-align-items: stretch; }\n    [vp] .vpw-info-screen #vpw-info-realizadores #vpw-realiz {\n      font-size: 20px; }\n    [vp] .vpw-info-screen #vpw-info-realizadores.active {\n      display: flex;\n      align-content: center;\n      justify-content: center;\n      align-items: center; }\n    [vp] .vpw-info-screen #vpw-info-realizadores .vpw-siz {\n      max-width: 55% !important; }\n    [vp] .vpw-info-screen #vpw-info-realizadores .vpw-logo {\n      margin-top: -2px;\n      margin: 0.5em 0.35em;\n      min-width: 10%;\n      max-width: 29%;\n      max-height: 15vh; }\n      [vp] .vpw-info-screen #vpw-info-realizadores .vpw-logo .vpw-short-ver {\n        max-width: none;\n        min-height: 16px; }\n    [vp] .vpw-info-screen #vpw-info-realizadores .vpw-logo-group {\n      display: flex;\n      padding: 0.5% 2%;\n      flex-direction: row;\n      flex-wrap: wrap;\n      align-items: center;\n      justify-content: space-around;\n      -webkit-flex-direction: row;\n      -webkit-flex-wrap: wrap;\n      -webkit-align-items: center;\n      -webkit-justify-content: space-around;\n      line-height: 1.1; }\n      [vp] .vpw-info-screen #vpw-info-realizadores .vpw-logo-group .p-separator {\n        margin-top: 10px;\n        margin-bottom: 10px;\n        width: 118px; }\n      [vp] .vpw-info-screen #vpw-info-realizadores .vpw-logo-group .format-text {\n        margin: 0px; }\n  [vp] .vpw-info-screen .vpw-info-tab {\n    flex-grow: 3;\n    -webkit-flex-grow: 3;\n    display: none; }\n    [vp] .vpw-info-screen .vpw-info-tab .vpw-info-tab-label {\n      position: absolute;\n      top: 0%;\n      font-size: 16px;\n      font-family: \"Open Sans\", sans-serif; }\n    [vp] .vpw-info-screen .vpw-info-tab .vpw-info-tab-label-two {\n      font-size: 16px;\n      font-family: \"Open Sans\", sans-serif;\n      margin-top: 10px; }\n  [vp] .vpw-info-screen .vpw-info-tab.active {\n    display: block; }\n  [vp] .vpw-info-screen #vpw-info-meta p {\n    margin: 0.5em 0 0; }\n  [vp] .vpw-info-screen #vpw-info-meta a {\n    text-decoration: none; }\n  [vp] .vpw-info-screen .vpw-info-bullet {\n    background-size: 15px 15px;\n    display: inline-block;\n    width: 15px;\n    height: 15px;\n    content: \"\"; }\n  [vp] .vpw-info-screen #vpw-info-tab-bullets {\n    width: 100%;\n    height: auto;\n    position: absolute;\n    bottom: 0%;\n    text-align: center;\n    flex-grow: 1;\n    -webkit-flex-grow: 1;\n    cursor: pointer; }\n  [vp] .vpw-info-screen .vpw-close-btn {\n    position: absolute;\n    top: 8px;\n    right: 6px;\n    z-index: 4; }\n    [vp] .vpw-info-screen .vpw-close-btn img.icon {\n      width: 34px;\n      height: 34px; }\n\n@media only screen and (-moz-min-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2 / 1), only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min-device-pixel-ratio: 2) {\n  [vp] #vpw-info-realizadores .vpw-logo {\n    margin: 0.5em 0.35em;\n    min-width: 10%;\n    max-width: 50%;\n    max-height: 18vh; } }\n\n@media only screen and (max-height: 360px) {\n  [vp] #vpw-info-main {\n    font-size: 0.84em; } }\n", ""]);


//# sourceURL=webpack://VLibras/./plugin/components/InfoScreen/info-screen.scss?./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js
                                    

#27 JavaScript::Eval (size: 776, repeated: 1) - SHA256: b58c7be22cc78a8407fd31fa3384b4b0069d099e5e61cbe670789f9410a4a919

                                        var content = __webpack_require__( /*! !../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./dictionary.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./plugin/components/Dictionary/dictionary.scss");

if (typeof content === 'string') {
    content = [
        [module.i, content, '']
    ];
}

var options = {}

options.insert = "head";
options.singleton = false;

var update = __webpack_require__( /*! ../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js")(content, options);

if (content.locals) {
    module.exports = content.locals;
}


//# sourceURL=webpack://VLibras/./plugin/components/Dictionary/dictionary.scss?
                                    

#28 JavaScript::Eval (size: 741, repeated: 1) - SHA256: 0e11522fb3c380e4eb48763e537c8c946cf15c5cb4158ca48a47f70a5ab01015

                                        var content = __webpack_require__( /*! !../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./box.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./plugin/components/Box/box.scss");

if (typeof content === 'string') {
    content = [
        [module.i, content, '']
    ];
}

var options = {}

options.insert = "head";
options.singleton = false;

var update = __webpack_require__( /*! ../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js")(content, options);

if (content.locals) {
    module.exports = content.locals;
}


//# sourceURL=webpack://VLibras/./plugin/components/Box/box.scss?
                                    

#29 JavaScript::Eval (size: 1067, repeated: 1) - SHA256: 383dfc6f54dc3b703112debbdb4271b1a814c09f121e01875fd72d510790250f

                                        var template = __webpack_require__( /*! ./rate-box.html */ "./plugin/components/RateBox/rate-box.html").default;
__webpack_require__( /*! ./rate-box.scss */ "./plugin/components/RateBox/rate-box.scss");

function RateBox(suggestionButton, messageBox) {
    this.element = null;
    this.suggestionButton = suggestionButton;
    this.messageBox = messageBox;
}

RateBox.prototype.load = function(element) {
    this.element = element;
    this.element.innerHTML = template;

    const thumbUp = this.element.querySelector('.vp-thumb-up');
    const thumbDown = this.element.querySelector('.vp-thumb-down');

    thumbUp.addEventListener('click', () => {
        window.plugin.sendReview('good');
    });

    thumbDown.addEventListener('click', () => {
        this.hide();
        this.suggestionButton.show('bad');
    });
};

RateBox.prototype.show = function() {
    this.element.classList.add('vp-enabled');
};

RateBox.prototype.hide = function() {
    this.element.classList.remove('vp-enabled');
};

module.exports = RateBox;


//# sourceURL=webpack://VLibras/./plugin/components/RateBox/index.js?
                                    

#30 JavaScript::Eval (size: 10464, repeated: 1) - SHA256: f5bd22b414abce5bc1556f1fbeddc7edf5857504535bd9ff29562b4848b22b22

                                        /*===========================================================================*\
 * Requires
\*===========================================================================*/
var JClass = __webpack_require__( /*! jclass */ "./node_modules/jclass/index.js");

/*===========================================================================*\
 * HashArray
\*===========================================================================*/
var HashArray = JClass._extend({
    //-----------------------------------
    // Constructor
    //-----------------------------------
    init: function(keyFields, callback, options) {
        keyFields = keyFields instanceof Array ? keyFields : [keyFields];

        this._map = {};
        this._list = [];
        this.callback = callback;

        this.keyFields = keyFields;

        this.isHashArray = true;

        this.options = options || {
            ignoreDuplicates: false
        };

        if (callback) {
            callback('construct');
        }
    },
    //-----------------------------------
    // add()
    //-----------------------------------
    addOne: function(obj) {
        var needsDupCheck = false;
        for (var key in this.keyFields) {
            key = this.keyFields[key];
            var inst = this.objectAt(obj, key);
            if (inst) {
                if (this.has(inst)) {
                    if (this.options.ignoreDuplicates)
                        return;
                    if (this._map[inst].indexOf(obj) != -1) {
                        // Cannot add the same item twice
                        needsDupCheck = true;
                        continue;
                    }
                    this._map[inst].push(obj);
                } else this._map[inst] = [obj];
            }
        }

        if (!needsDupCheck || this._list.indexOf(obj) == -1)
            this._list.push(obj);
    },
    add: function() {
        for (var i = 0; i < arguments.length; i++) {
            this.addOne(arguments[i]);
        }

        if (this.callback) {
            this.callback('add', Array.prototype.slice.call(arguments, 0));
        }

        return this;
    },
    addAll: function(arr) {
        if (arr.length < 100)
            this.add.apply(this, arr);
        else {
            for (var i = 0; i < arr.length; i++)
                this.add(arr[i]);
        }

        return this;
    },
    addMap: function(key, obj) {
        this._map[key] = obj;
        if (this.callback) {
            this.callback('addMap', {
                key: key,
                obj: obj
            });
        }

        return this;
    },
    //-----------------------------------
    // Intersection, union, etc.
    //-----------------------------------
    /**
     * Returns a new HashArray that contains the intersection between this (A) and the hasharray passed in (B). Returns A ^ B.
     */
    intersection: function(other) {
        var self = this;

        if (!other || !other.isHashArray)
            throw Error('Cannot HashArray.intersection() on a non-hasharray object. You passed in: ', other);

        var ret = this.clone(null, true),
            allItems = this.clone(null, true).addAll(this.all.concat(other.all));

        allItems.all.forEach(function(item) {
            if (self.collides(item) && other.collides(item))
                ret.add(item);
        });

        return ret;
    },
    /**
     * Returns a new HashArray that contains the complement (difference) between this hash array (A) and the hasharray passed in (B). Returns A - B.
     */
    complement: function(other) {
        var self = this;

        if (!other || !other.isHashArray)
            throw Error('Cannot HashArray.complement() on a non-hasharray object. You passed in: ', other);

        var ret = this.clone(null, true);

        this.all.forEach(function(item) {
            if (!other.collides(item))
                ret.add(item);
        });

        return ret;
    },
    //-----------------------------------
    // Retrieval
    //-----------------------------------
    get: function(key) {
        return (!(this._map[key] instanceof Array) || this._map[key].length != 1) ? this._map[key] : this._map[key][0];
    },
    getAll: function(keys) {
        keys = keys instanceof Array ? keys : [keys];

        if (keys[0] == '*')
            return this.all;

        var res = new HashArray(this.keyFields);
        for (var key in keys)
            res.add.apply(res, this.getAsArray(keys[key]));

        return res.all;
    },
    getAsArray: function(key) {
        return this._map[key] || [];
    },
    getUniqueRandomIntegers: function(count, min, max) {
        var res = [],
            map = {};

        count = Math.min(Math.max(max - min, 1), count);

        while (res.length < count) {
            var r = Math.floor(min + (Math.random() * (max + 1)));
            if (map[r]) continue;
            map[r] = true;
            res.push(r);
        }

        return res;
    },
    sample: function(count, keys) {
        // http://en.wikipedia.org/wiki/Image_(mathematics)
        var image = this.all,
            ixs = {},
            res = [];

        if (keys)
            image = this.getAll(keys);

        var rand = this.getUniqueRandomIntegers(count, 0, image.length - 1);

        for (var i = 0; i < rand.length; i++)
            res.push(image[rand[i]]);

        return res;
    },
    //-----------------------------------
    // Peeking
    //-----------------------------------
    has: function(key) {
        return this._map.hasOwnProperty(key);
    },
    collides: function(item) {
        for (var k in this.keyFields)
            if (this.has(this.objectAt(item, this.keyFields[k])))
                return true;

        return false;
    },
    hasMultiple: function(key) {
        return this._map[key] instanceof Array;
    },
    //-----------------------------------
    // Removal
    //-----------------------------------
    removeByKey: function() {
        var removed = [];
        for (var i = 0; i < arguments.length; i++) {
            var key = arguments[i];
            var items = this._map[key].concat();
            if (items) {
                removed = removed.concat(items);
                for (var j in items) {
                    var item = items[j];
                    for (var ix in this.keyFields) {
                        var key2 = this.objectAt(item, this.keyFields[ix]);
                        if (key2 && this.has(key2)) {
                            var ix = this._map[key2].indexOf(item);
                            if (ix != -1) {
                                this._map[key2].splice(ix, 1);
                            }

                            if (this._map[key2].length == 0)
                                delete this._map[key2];
                        }
                    }

                    this._list.splice(this._list.indexOf(item), 1);
                }
            }
            delete this._map[key];
        }

        if (this.callback) {
            this.callback('removeByKey', removed);
        }

        return this;
    },
    remove: function() {
        for (var i = 0; i < arguments.length; i++) {
            var item = arguments[i];
            for (var ix in this.keyFields) {
                var key = this.objectAt(item, this.keyFields[ix]);
                if (key) {
                    var ix = this._map[key].indexOf(item);
                    if (ix != -1)
                        this._map[key].splice(ix, 1);
                    else
                        throw new Error('HashArray: attempting to remove an object that was never added!' + key);

                    if (this._map[key].length == 0)
                        delete this._map[key];
                }
            }

            var ix = this._list.indexOf(item);

            if (ix != -1)
                this._list.splice(ix, 1);
            else
                throw new Error('HashArray: attempting to remove an object that was never added!' + key);
        }

        if (this.callback) {
            this.callback('remove', arguments);
        }

        return this;
    },
    removeAll: function() {
        var old = this._list.concat();
        this._map = {};
        this._list = [];

        if (this.callback) {
            this.callback('remove', old);
        }

        return this;
    },
    //-----------------------------------
    // Utility
    //-----------------------------------
    objectAt: function(obj, path) {
        if (typeof path === 'string') {
            return obj[path];
        }

        var dup = path.concat();
        // else assume array.
        while (dup.length && obj) {
            obj = obj[dup.shift()];
        }

        return obj;
    },
    //-----------------------------------
    // Iteration
    //-----------------------------------
    forEach: function(keys, callback) {
        keys = keys instanceof Array ? keys : [keys];

        var objs = this.getAll(keys);

        objs.forEach(callback);

        return this;
    },
    forEachDeep: function(keys, key, callback) {
        keys = keys instanceof Array ? keys : [keys];

        var self = this,
            objs = this.getAll(keys);

        objs.forEach(function(item) {
            callback(self.objectAt(item, key), item);
        });

        return this;
    },
    //-----------------------------------
    // Cloning
    //-----------------------------------
    clone: function(callback, ignoreItems) {
        var n = new HashArray(this.keyFields.concat(), callback ? callback : this.callback);
        if (!ignoreItems)
            n.add.apply(n, this.all.concat());
        return n;
    },
    //-----------------------------------
    // Mathematical
    //-----------------------------------
    sum: function(keys, key, weightKey) {
        var self = this,
            ret = 0;
        this.forEachDeep(keys, key, function(value, item) {
            if (weightKey !== undefined)
                value *= self.objectAt(item, weightKey);

            ret += value;
        });
        return ret;
    },
    average: function(keys, key, weightKey) {
        var ret = 0,
            tot = 0,
            weightsTotal = 0,
            self = this;

        if (weightKey !== undefined)
            this.forEachDeep(keys, weightKey, function(value) {
                weightsTotal += value;
            })

        this.forEachDeep(keys, key, function(value, item) {
            if (weightKey !== undefined)
                value *= (self.objectAt(item, weightKey) / weightsTotal);

            ret += value;
            tot++;
        });

        return weightKey !== undefined ? ret : ret / tot;
    },
    //-----------------------------------
    // Filtering
    //-----------------------------------
    filter: function(keys, callbackOrKey) {
        var self = this;

        var callback = (typeof(callbackOrKey) == 'function') ? callbackOrKey : defaultCallback;

        var ha = new HashArray(this.keyFields);
        ha.addAll(this.getAll(keys).filter(callback));
        return ha;

        function defaultCallback(item) {
            var val = self.objectAt(item, callbackOrKey);
            return val !== undefined && val !== false;
        }
    }
});

//-----------------------------------
// Operators
//-----------------------------------
Object.defineProperty(HashArray.prototype, 'all', {
    get: function() {
        return this._list;
    }
});

Object.defineProperty(HashArray.prototype, 'map', {
    get: function() {
        return this._map;
    }
});

module.exports = HashArray;

//-----------------------------------
// Browser
//-----------------------------------
if (typeof window !== 'undefined')
    window.HashArray = HashArray;

//# sourceURL=webpack://VLibras/./node_modules/hasharray/src/HashArray.js?
                                    

#31 JavaScript::Eval (size: 6187, repeated: 1) - SHA256: 67346b02f8e7006ba80a669adc65c5b011707c22c2e70e3a14c584fb365808d6

                                        var noUiSlider = __webpack_require__( /*! nouislider */ "./node_modules/nouislider/distribute/nouislider.js");
__webpack_require__( /*! nouislider/distribute/nouislider.min.css */ "./node_modules/nouislider/distribute/nouislider.min.css");

var controlsTpl = __webpack_require__( /*! ./controls.html */ "./plugin/components/Controls/controls.html").default;
__webpack_require__( /*! ./controls.scss */ "./plugin/components/Controls/controls.scss");

function Controls(player, dictionary) {
    this.player = player;
    this.dictionary = dictionary;

    this.player.on('animation:play', function() {
        // console.log('animation:play');
        this.element.classList.remove('vpw-stopped');
        this.element.classList.add('vpw-playing');
    }.bind(this));

    this.player.on('animation:pause', function() {
        // console.log('animation:pause');
        this.element.classList.remove('vpw-playing');
        this.element.classList.remove('vpw-stopped');
    }.bind(this));

    this.player.on('animation:end', function() {
        // console.log('animation:end');
        this.element.classList.remove('vpw-playing');
        this.element.classList.add('vpw-stopped');
    }.bind(this));

    this.player.on('response:glosa', function(counter, glosaLenght) {
        counter = counter - 2

        console.log(counter + ' ' + glosaLenght);
        if (counter != -1) {
            var slider = this.element.querySelector('.vpw-controls-slider .vpw-slider');

            slider.noUiSlider.updateOptions({
                range: {
                    'min': 0,
                    'max': glosaLenght
                }
            });

            slider.noUiSlider.set([counter, glosaLenght]);
        }

    }.bind(this));

    this.player.on('gloss:end', function(globalGlosaLenght) {
        globalGlosaLenght = globalGlosaLenght
        var slider = this.element.querySelector('.vpw-controls-slider .vpw-slider');

        slider.noUiSlider.updateOptions({
            range: {
                'min': 0,
                'max': globalGlosaLenght
            }
        });

        slider.noUiSlider.set([globalGlosaLenght, globalGlosaLenght]);

    }.bind(this));

}

Controls.prototype.load = function(element) {
    this.element = element;
    this.element.innerHTML = controlsTpl;
    this.element.classList.add('vpw-controls');
    this.element.classList.add('vpw-subtitles');

    var play = this.element.querySelector('.vpw-controls-play');
    var subtitles = this.element.querySelector('.vpw-controls-subtitles');
    var speed_default = this.element.querySelector('.vpw-speed-default');
    var speednumber = this.element.querySelector('.vpw-controls-speed-number');
    var elem_speed = this.element.querySelector('.vpw-elem-speed');
    var speed05 = this.element.querySelector('.vpw-block-speed-05');
    var speed1 = this.element.querySelector('.vpw-block-speed-1');
    var speed2 = this.element.querySelector('.vpw-block-speed-2');
    var speed3 = this.element.querySelector('.vpw-block-speed-3');
    var slider = this.element.querySelector('.vpw-controls-slider .vpw-slider');
    var img = this.element.querySelector('.vpw-img-default');
    var button = this.element.querySelector('.vpw-button-speed');
    var border = this.element.querySelector('.vpw-border-default');


    noUiSlider.create(slider, {
        start: 0.0,
        step: 0.05,
        connect: 'lower',
        range: {
            min: 0.2,
            max: 200
        }
    });
    slider.setAttribute('disabled', true);




    play.addEventListener('click', function() {
        if (this.element.classList.contains('vpw-playing')) {
            this.player.pause();
        } else if (this.element.classList.contains('vpw-stopped')) {
            this.player.repeat();
        } else {
            this.player.continue();
        }
    }.bind(this));

    subtitles.addEventListener('click', function() {
        this.element.classList.toggle('vpw-subtitles');
        this.player.toggleSubtitle();
    }.bind(this));


    var visibility = false;
    var speed_value;


    button.addEventListener('click', function() {
        if (visibility) {
            img.style.display = 'none';
            border.style.display = 'none';
            speed_default.style.display = 'block';
            visibility = false;
            elem_speed.style.display = "none";
            speed_default.innerHTML = speed_value;

        } else {
            img.style.display = 'block';
            border.style.display = 'block';
            speed_default.style.display = 'none';

            speed_value = speed_default.innerHTML;
            speed_default.innerHTML = '';

            elem_speed.style.display = "block";
            visibility = true;

        }


    }.bind(this));

    speed05.addEventListener('click', () => {
        this.setSpeed(0.5, '0.5x', elem_speed, speed_default, img, border);
        speed_default.style.padding = '6px 2.5px 5px 2.5px'
        speed_default.style.fontSize = '11px'
        visibility = false;

    });

    speed1.addEventListener('click', () => {
        this.setSpeed(1.0, 'x1', elem_speed, speed_default, img, border);
        visibility = false;
    });

    speed2.addEventListener('click', () => {
        this.setSpeed(1.5, 'x2', elem_speed, speed_default, img, border);
        visibility = false;

    });
    speed3.addEventListener('click', () => {
        this.setSpeed(2.0, 'x3', elem_speed, speed_default, img, border);
        visibility = false;

    });


};


Controls.prototype.setSpeed = function(speed, label, elem_speed, speed_default, img, border) {
    img.style.display = 'none';
    border.style.display = 'none';
    speed_default.style.display = 'block';
    speed_default.style.color = 'grey';
    speed_default.style.border = '1px solid grey';
    speed_default.style.borderRadius = '3px 3px 3px 3px';
    speed_default.innerHTML = label;
    speed_default.style.padding = '3px 4px';
    speed_default.style.fontSize = '15px';
    elem_speed.style.display = "none";

    this.player.setSpeed(parseFloat(speed));
}

Controls.prototype.setProgress = function() {
    if (this.element != undefined) {
        var slider = this.element.querySelector('.vpw-controls-slider .vpw-slider');

        slider.noUiSlider.updateOptions({
            range: {
                'min': 0,
                'max': 2
            }
        });

        slider.noUiSlider.set([0, 0]);
    }
}

module.exports = Controls;


//# sourceURL=webpack://VLibras/./plugin/components/Controls/index.js?
                                    

#32 JavaScript::Eval (size: 2689, repeated: 1) - SHA256: 75069370ea6c41a73782bddd2a06964313b54c5e06ac134a79045d3005b14a9f

                                        var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;
(function(name, context, definition) {
    if (true && module.exports) module.exports = definition();
    else if (true) !(__WEBPACK_AMD_DEFINE_FACTORY__ = (definition),
        __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
            (__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :
            __WEBPACK_AMD_DEFINE_FACTORY__),
        __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    else {}
})('urljoin', this, function() {

    function normalize(strArray) {
        var resultArray = [];

        // If the first part is a plain protocol, we combine it with the next part.
        if (strArray[0].match(/^[^/:]+:\/*$/) && strArray.length > 1) {
            var first = strArray.shift();
            strArray[0] = first + strArray[0];
        }

        // There must be two or three slashes in the file protocol, two slashes in anything else.
        if (strArray[0].match(/^file:\/\/\//)) {
            strArray[0] = strArray[0].replace(/^([^/:]+):\/*/, '$1:///');
        } else {
            strArray[0] = strArray[0].replace(/^([^/:]+):\/*/, '$1://');
        }

        for (var i = 0; i < strArray.length; i++) {
            var component = strArray[i];

            if (typeof component !== 'string') {
                throw new TypeError('Url must be a string. Received ' + component);
            }

            if (component === '') {
                continue;
            }

            if (i > 0) {
                // Removing the starting slashes for each component but the first.
                component = component.replace(/^[\/]+/, '');
            }
            if (i < strArray.length - 1) {
                // Removing the ending slashes for each component but the last.
                component = component.replace(/[\/]+$/, '');
            } else {
                // For the last component we will combine multiple slashes to a single one.
                component = component.replace(/[\/]+$/, '/');
            }

            resultArray.push(component);

        }

        var str = resultArray.join('/');
        // Each input component is now separated by a single slash except the possible first plain protocol part.

        // remove trailing slash before parameters or hash
        str = str.replace(/\/(\?|&|#[^!])/g, '$1');

        // replace ? in parameters with &
        var parts = str.split('?');
        str = parts.shift() + (parts.length > 0 ? '?' : '') + parts.join('&');

        return str;
    }

    return function() {
        var input;

        if (typeof arguments[0] === 'object') {
            input = arguments[0];
        } else {
            input = [].slice.call(arguments);
        }

        return normalize(input);
    };

});


//# sourceURL=webpack://VLibras/../vlibras-player-webjs/node_modules/url-join/lib/url-join.js?
                                    

#33 JavaScript::Eval (size: 632, repeated: 1) - SHA256: daf2101b90a0bfdfb98ecca6d4a9048f244fc4709e181023b703285f92279a18

                                        __webpack_require__.r(__webpack_exports__);
/* harmony default export */
__webpack_exports__["default"] = ("<div class=\"vpw-panel\">\n    <div class=\"vpw-bar\">\n        <span class=\"vpw-title\">Dicion�rio</span>\n        <img class=\"vpw-btn-close\" data-src=\"assets/Close.png\">\n    </div>\n\n    <div class=\"vpw-search\">\n        <input type=\"text\">\n        <span class=\"vpw-icon\">\n            <img data-src=\"assets/search.jpg\">\n        </span>\n    </div>\n</div>\n\n<div class=\"vpw-dict-container\">\n    <ul></ul>\n</div>\n");

//# sourceURL=webpack://VLibras/./plugin/components/Dictionary/dictionary.html?
                                    

#34 JavaScript::Eval (size: 2033, repeated: 1) - SHA256: 63476156ff62a870a342cfe009e34b2a9cf6f114e30ea0d7e4c53043a4dd8c9a

                                        exports = module.exports = __webpack_require__( /*! ../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js")(false);
// Module
exports.push([module.i, "[vw] {\n  /* HTML5 display-role reset for older browsers */ }\n  [vw] html, [vw] body, [vw] div, [vw] span, [vw] applet, [vw] object, [vw] iframe,\n  [vw] h1, [vw] h2, [vw] h3, [vw] h4, [vw] h5, [vw] h6, [vw] p, [vw] blockquote, [vw] pre,\n  [vw] a, [vw] abbr, [vw] acronym, [vw] address, [vw] big, [vw] cite, [vw] code,\n  [vw] del, [vw] dfn, [vw] em, [vw] img, [vw] ins, [vw] kbd, [vw] q, [vw] s, [vw] samp,\n  [vw] small, [vw] strike, [vw] strong, [vw] sub, [vw] sup, [vw] tt, [vw] var,\n  [vw] b, [vw] u, [vw] i, [vw] center,\n  [vw] dl, [vw] dt, [vw] dd, [vw] ol, [vw] ul, [vw] li,\n  [vw] fieldset, [vw] form, [vw] label, [vw] legend,\n  [vw] table, [vw] caption, [vw] tbody, [vw] tfoot, [vw] thead, [vw] tr, [vw] th, [vw] td,\n  [vw] article, [vw] aside, [vw] canvas, [vw] details, [vw] embed,\n  [vw] figure, [vw] figcaption, [vw] footer, [vw] header, [vw] hgroup,\n  [vw] menu, [vw] nav, [vw] output, [vw] ruby, [vw] section, [vw] summary,\n  [vw] time, [vw] mark, [vw] audio, [vw] video {\n    margin: 0;\n    padding: 0;\n    border: 0;\n    font-size: 100%;\n    font: inherit;\n    vertical-align: baseline;\n    display: block; }\n  [vw] article, [vw] aside, [vw] details, [vw] figcaption, [vw] figure,\n  [vw] footer, [vw] header, [vw] hgroup, [vw] menu, [vw] nav, [vw] section {\n    display: block; }\n  [vw] img {\n    width: unset; }\n  [vw] body {\n    line-height: 1; }\n  [vw] ol, [vw] ul {\n    list-style: none; }\n  [vw] blockquote, [vw] q {\n    quotes: none; }\n  [vw] blockquote:before, [vw] blockquote:after,\n  [vw] q:before, [vw] q:after {\n    content: '';\n    content: none; }\n  [vw] table {\n    border-collapse: collapse;\n    border-spacing: 0; }\n", ""]);


//# sourceURL=webpack://VLibras/./widget/src/scss/reset.scss?./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js
                                    

#35 JavaScript::Eval (size: 779, repeated: 1) - SHA256: e21604d41982b7d406276f73c5e559d8214825a4345e6a1bb78bae9d07c28e23

                                        var content = __webpack_require__( /*! !../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./info-screen.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./plugin/components/InfoScreen/info-screen.scss");

if (typeof content === 'string') {
    content = [
        [module.i, content, '']
    ];
}

var options = {}

options.insert = "head";
options.singleton = false;

var update = __webpack_require__( /*! ../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js")(content, options);

if (content.locals) {
    module.exports = content.locals;
}


//# sourceURL=webpack://VLibras/./plugin/components/InfoScreen/info-screen.scss?
                                    

#36 JavaScript::Eval (size: 766, repeated: 1) - SHA256: 6e57d16d2c2bc6761b6ec95dd395cf2edd3b59e09c052de6d6440efa2fa08672

                                        var content = __webpack_require__( /*! !../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./controls.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./plugin/components/Controls/controls.scss");

if (typeof content === 'string') {
    content = [
        [module.i, content, '']
    ];
}

var options = {}

options.insert = "head";
options.singleton = false;

var update = __webpack_require__( /*! ../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js")(content, options);

if (content.locals) {
    module.exports = content.locals;
}


//# sourceURL=webpack://VLibras/./plugin/components/Controls/controls.scss?
                                    

#37 JavaScript::Eval (size: 573, repeated: 1) - SHA256: 14c6fbe3ea30741fbf02835cf78d3738ea8a605660fce8945f32fd4a1965a38b

                                        __webpack_require__.r(__webpack_exports__);
/* harmony default export */
__webpack_exports__["default"] = ("<div class=\"vp-container\">\n  <div class=\"vp-text\">\n    Gostou da tradu��o?\n  </div>\n\n  <div class=\"vp-buttons\">\n    <span class=\"vp-button vp-thumb-up\">\n      <img data-src=\"assets/thumb-up.svg\" />\n      Sim\n    </span>\n\n    <span class=\"vp-button vp-thumb-down\">\n      <img data-src=\"assets/thumb-down.svg\" />\n      N�o\n    </span>\n  </div>\n</div>\n");

//# sourceURL=webpack://VLibras/./plugin/components/RateBox/rate-box.html?
                                    

#38 JavaScript::Eval (size: 764, repeated: 1) - SHA256: 3f8a3d1da08b2bd9166105bcecda9bd68ed32bc6b53443022e63d1634cee398c

                                        var content = __webpack_require__( /*! !../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./rate-box.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./plugin/components/RateBox/rate-box.scss");

if (typeof content === 'string') {
    content = [
        [module.i, content, '']
    ];
}

var options = {}

options.insert = "head";
options.singleton = false;

var update = __webpack_require__( /*! ../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js")(content, options);

if (content.locals) {
    module.exports = content.locals;
}


//# sourceURL=webpack://VLibras/./plugin/components/RateBox/rate-box.scss?
                                    

#39 JavaScript::Eval (size: 836, repeated: 1) - SHA256: 97d09b63347e097ec9c7f83e96625c0b5a56a22bade3965e0ee4c9cfa7f1d546

                                        // The node and browser modules expose versions of this with the
// appropriate constructor function bound as first argument
/**
 * Issue a request:
 *
 * Examples:
 *
 *    request('GET', '/users').end(callback)
 *    request('/users').end(callback)
 *    request('/users', callback)
 *
 * @param {String} method
 * @param {String|Function} url or callback
 * @return {Request}
 * @api public
 */

function request(RequestConstructor, method, url) {
    // callback
    if ('function' == typeof url) {
        return new RequestConstructor('GET', method).end(url);
    }

    // url first
    if (2 == arguments.length) {
        return new RequestConstructor('GET', method);
    }

    return new RequestConstructor(method, url);
}

module.exports = request;


//# sourceURL=webpack://VLibras/../vlibras-player-webjs/node_modules/superagent/lib/request.js?
                                    

#40 JavaScript::Eval (size: 2744, repeated: 1) - SHA256: 460172ad622344793b2c281ca38d60e4ed2e073314998cea94a7cab738416f75

                                        /*
  MIT License http://www.opensource.org/licenses/mit-license.php
  Author Tobias Koppers @sokra
*/
// css base code, injected by the css-loader
// eslint-disable-next-line func-names
module.exports = function(useSourceMap) {
    var list = []; // return the list of modules as css string

    list.toString = function toString() {
        return this.map(function(item) {
            var content = cssWithMappingToString(item, useSourceMap);

            if (item[2]) {
                return "@media ".concat(item[2], "{").concat(content, "}");
            }

            return content;
        }).join('');
    }; // import a list of modules into the list
    // eslint-disable-next-line func-names


    list.i = function(modules, mediaQuery) {
        if (typeof modules === 'string') {
            // eslint-disable-next-line no-param-reassign
            modules = [
                [null, modules, '']
            ];
        }

        var alreadyImportedModules = {};

        for (var i = 0; i < this.length; i++) {
            // eslint-disable-next-line prefer-destructuring
            var id = this[i][0];

            if (id != null) {
                alreadyImportedModules[id] = true;
            }
        }

        for (var _i = 0; _i < modules.length; _i++) {
            var item = modules[_i]; // skip already imported module
            // this implementation is not 100% perfect for weird media query combinations
            // when a module is imported multiple times with different media queries.
            // I hope this will never occur (Hey this way we have smaller bundles)

            if (item[0] == null || !alreadyImportedModules[item[0]]) {
                if (mediaQuery && !item[2]) {
                    item[2] = mediaQuery;
                } else if (mediaQuery) {
                    item[2] = "(".concat(item[2], ") and (").concat(mediaQuery, ")");
                }

                list.push(item);
            }
        }
    };

    return list;
};

function cssWithMappingToString(item, useSourceMap) {
        var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring

        var cssMapping = item[3];

        if (!cssMapping) {
            return content;
        }

        if (useSourceMap && typeof btoa === 'function') {
            var sourceMapping = toComment(cssMapping);
            var sourceURLs = cssMapping.sources.map(function(source) {
                return "/*# sourceURL=".concat(cssMapping.sourceRoot).concat(source, " */");
            });
            return [content].concat(sourceURLs).concat([sourceMapping]).join('\n');
        }

        return [content].join('\n');
    } // Adapted from convert-source-map (MIT)


function toComment(sourceMap) {
    // eslint-disable-next-line no-undef
    var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));
    var data = "sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(base64);
    return "/*# ".concat(data, " */");
}

//# sourceURL=webpack://VLibras/./node_modules/css-loader/dist/runtime/api.js?
                                    

#41 JavaScript::Eval (size: 9255, repeated: 1) - SHA256: cbd7ea5af512bd468989dc78f3dd7e0da7da1badc0a0e3a4f4b192c41d7d6de2

                                        var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;
/**
 * jclass v1.1.9
 * https://github.com/riga/jclass
 *
 * Marcel Rieger, 2015
 * MIT licensed, http://www.opensource.org/licenses/mit-license
 */

(function(factory) {

    /**
     * Make jclass available in any context.
     */

    if (true) {
        // AMD
        !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
            __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
                (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
            __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

    } else {}

})(function() {

    /**
     * Helper functions.
     */

    /**
     * Checks whether a passed object is a function.
     *
     * @param obj - The object to check.
     * @returns {boolean}
     */
    var isFn = function(obj) {
        return obj instanceof Function;
    };

    /**
     * Extends a target object by one or more source objects with shallow key comparisons. Note that
     * the extension is done in-place.
     *
     * @param {object} target - The target object to extend.
     * @param {...object} source - Source objects.
     * @returns {object} The extended object.
     */
    var extend = function(target) {
        var sources = Array.prototype.slice.call(arguments, 1);

        // loop through all sources
        for (var i in sources) {
            var source = sources[i];

            // object check
            if (typeof(source) != "object") {
                continue;
            }

            // loop through all source attributes
            for (var key in source) {
                target[key] = source[key];
            }
        }

        return target;
    };


    /**
     * Default options.
     */

    var defaultOptions = {
        // internal object for indicating that class objects don't have a class object themselves,
        // may not be used by users
        _isClassObject: false
    };


    /**
     * Flags.
     */

    // flag to distinguish between prototype and class instantiation 
    var initializing = false;


    /**
     * Base class definition.
     */

    // empty BaseClass implementation
    var BaseClass = function() {};

    // add the _subClasses entry
    BaseClass._subClasses = [];

    // empty init method
    BaseClass.prototype.init = function() {};


    /**
     * Extend mechanism. Returns a derived class.
     *
     * @param {object} instanceMembers - Members that will be owned by instances.
     * @param {object} classMembers - Members that will be owned by the class itself.
     * @returns {JClass}
     */
    BaseClass._extend = function(instanceMembers, classMembers, options) {

        // default arguments
        if (instanceMembers === undefined) {
            instanceMembers = {};
        }
        if (classMembers === undefined) {
            classMembers = {};
        }
        if (options === undefined) {
            options = {};
        }

        // mixin default options
        options = extend({}, defaultOptions, options);


        // sub class dummy constructor
        var JClass = function() {
            // nothing happens here when we are initializing
            if (initializing)� {
                return;
            }

            // store a reference to the class itself
            this._class = JClass;

            // all construction is actually done in the init method
            if (this.init instanceof Function) {
                this.init.apply(this, arguments);
            }
        };


        // alias for readability
        var SuperClass = this;

        // create an instance of the super class via new
        // the flag sandwich prevents a call to the init method
        initializing = true;
        var prototype = new SuperClass();
        initializing = false;

        // get the prototype of the super class
        var superPrototype = SuperClass.prototype;

        // the instance of the super class is our new prototype
        JClass.prototype = prototype;

        // enforce the constructor to be what we expect
        // calls to the constructor will invoke the init method (see above)
        JClass.prototype.constructor = JClass;

        // store a reference to the super class
        JClass._superClass = SuperClass;

        // store references to all extending classes
        JClass._subClasses = [];
        SuperClass._subClasses.push(JClass);

        // make this class extendable as well
        JClass._extend = SuperClass._extend;


        // _extends returns true if the class itself extended "target"
        // in any hierarchy, e.g. every class extends "JClass" itself
        JClass._extends = function(target) {
            // this function operates recursive, so stop when the super class is our BaseClass
            if (this._superClass == BaseClass) {
                return false;
            }

            // success case
            if (target == this._superClass || target == BaseClass) {
                return true;
            }

            // continue with the next super class
            return this._superClass._extends(target);
        };


        // propagate instance members directly to the created protoype,
        // the member is either a normal member or a descriptor
        for (var key in instanceMembers) {
            var property = Object.getOwnPropertyDescriptor(instanceMembers, key);
            var member = property.value;

            // descriptor flag set?
            if (member !== null && typeof(member) == "object" && member.descriptor) {
                Object.defineProperty(prototype, key, member);

                // getter/setter syntax
            } else if (!("value" in property) && ("set" in property || "get" in property)) {
                Object.defineProperty(prototype, key, property);

                // normal member, simple assignment
            } else {
                prototype[key] = member;

                // if both member and the super member are distinct functions
                // add the super member to the member as "_super"
                var superMember = superPrototype[key];
                if (isFn(member) && isFn(superMember) && member !== superMember) {
                    member._super = superMember;
                }
            }
        }


        // propagate class members to the _members object
        if (!options._isClassObject) {
            // try to find the super class of the _members object 
            var ClassMembersSuperClass = SuperClass._members === undefined ?
                BaseClass : SuperClass._members._class;

            // create the actual class of the _members instance
            // with an updated version of our options
            var opts = extend({}, options, {
                _isClassObject: true
            });
            var ClassMembersClass = ClassMembersSuperClass._extend(classMembers, {}, opts);

            // store the actual JClass in ClassMembersClass
            ClassMembersClass._instanceClass = JClass;

            // create the _members instance
            JClass._members = new ClassMembersClass();
        }


        // return the new class
        return JClass;
    };


    /**
     * Converts arbitrary protoype-style classes to our JClass definition.
     *
     * @param {function} cls - The class to convert.
     * @returns {JClass}
     */
    BaseClass._convert = function(cls, options) {
        // the properties consist of the class' prototype
        var instanceMembers = cls.prototype;

        // add the constructor function
        instanceMembers.init = function() {
            // simply create an instance of our target class
            var origin = this._origin = BaseClass._construct(cls, arguments);

            // add properties for each own property in _origin
            Object.keys(origin).forEach(function(key) {
                if (!origin.hasOwnProperty(key)) {
                    return;
                }

                Object.defineProperty(this, key, {
                    get: function() {
                        return origin[key];
                    }
                });
            }, this);
        };

        // finally, create and return our new class
        return BaseClass._extend(instanceMembers, {}, options);
    };


    /**
     * Returns an instance of a class with a list of arguments. This provides an apply-like
     * constructor usage. Note that this approach does not work with native constructors (e.g. String
     * or Boolean).
     *
     * @param {Class|JClass} cls - The class to instantiate. This may be a JClass or a prototype-based
     *   class.
     * @param {array} [args=[]] - Arguments to pass to the constructor.
     * @returns {instance}
     */
    BaseClass._construct = function(cls, args) {
        // empty default args
        if (args === undefined) {
            args = [];
        }

        // create a class wrapper that calls cls like a function
        var Class = function() {
            return cls.apply(this, args);
        };

        // copy the prototype
        Class.prototype = cls.prototype;

        // return a new instance
        return new Class();
    };


    /**
     * Returns a property descriptor of the super class.
     *
     * @param {JClass|instance} cls - A JClass or an instance of a JClass to retrieve the property
     *   descriptor from.
     * @param {string} prop - The name of the property descriptor to get.
     * @returns {object}
     */
    BaseClass._superDescriptor = function(cls, prop) {
        // if cls is an instance, use its class
        if ("_class" in cls && cls instanceof cls._class) {
            cls = cls._class;
        }

        // a JClass?
        if ("_extends" in cls && cls._extends instanceof Function && cls._extends(this)) {
            return Object.getOwnPropertyDescriptor(cls._superClass.prototype, prop);
        } else {
            return undefined;
        }
    };


    /**
     * Return the BaseClass.
     */

    return BaseClass;
});


//# sourceURL=webpack://VLibras/./node_modules/jclass/index.js?
                                    

#42 JavaScript::Eval (size: 787, repeated: 1) - SHA256: 8dcbf08e0901fdd62efd9c2241faeb9aab7051fb0ce0687ea524ee7b7bfe8dcd

                                        var content = __webpack_require__( /*! !../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./styles.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./widget/src/components/PluginWrapper/styles.scss");

if (typeof content === 'string') {
    content = [
        [module.i, content, '']
    ];
}

var options = {}

options.insert = "head";
options.singleton = false;

var update = __webpack_require__( /*! ../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js")(content, options);

if (content.locals) {
    module.exports = content.locals;
}


//# sourceURL=webpack://VLibras/./widget/src/components/PluginWrapper/styles.scss?
                                    

#43 JavaScript::Eval (size: 266, repeated: 1) - SHA256: f6df1151555235b5088f0d0c3777ff4355cf4d7abd1e76a56b935385f16102bc

                                        __webpack_require__.r(__webpack_exports__);
/* harmony default export */
__webpack_exports__["default"] = ("<img class=\"vpw-img\" data-src=\"assets/Close-2019.png\">\n");

//# sourceURL=webpack://VLibras/./plugin/components/SettingsCloseBtn/settings-close-btn.html?
                                    

#44 JavaScript::Eval (size: 809, repeated: 1) - SHA256: 6118ffe9b4568803a460a31f1b454f0c827ceafd4215533da1d8652cef7974b1

                                        var content = __webpack_require__( /*! !../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./suggestion-button.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./plugin/components/SuggestionButton/suggestion-button.scss");

if (typeof content === 'string') {
    content = [
        [module.i, content, '']
    ];
}

var options = {}

options.insert = "head";
options.singleton = false;

var update = __webpack_require__( /*! ../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js")(content, options);

if (content.locals) {
    module.exports = content.locals;
}


//# sourceURL=webpack://VLibras/./plugin/components/SuggestionButton/suggestion-button.scss?
                                    

#45 JavaScript::Eval (size: 666, repeated: 1) - SHA256: d1eb05330204b0052a0748318a11723414a0e406d168eacb82bb71df124efe7d

                                        __webpack_require__.r(__webpack_exports__);
/* harmony default export */
__webpack_exports__["default"] = ("<span class=\"vp-title\"> A glosa est� correta? </span>\n\n<textarea class=\"vp-text\"> </textarea>\n<ul class=\"vp-dropdown-suggest\"></ul>\n\n<div vp-sugestion-area>\n  <span vp-visualize-signal-button class=\"vp-visualize-signal-button\">\n    Ver em LIBRAS\n  </span>\n  <span vp-blue-button class=\"vp-send-button\"> Enviar Sugest�o </span>\n</div>\n\n<span vp-close-button class=\"vp-close-button\">\n  <img data-src=\"assets/close.svg\" />\n</span>\n");

//# sourceURL=webpack://VLibras/./plugin/components/SuggestionScreen/suggestion-screen.html?
                                    

#46 JavaScript::Eval (size: 179, repeated: 1) - SHA256: be3b0c47644f1a8e515b2624c5b29d799788d11a1a3deea9daad682becad13f5

                                        module.exports = __webpack_require__( /*! ./src/TrieSearch */ "./node_modules/trie-search/src/TrieSearch.js");

//# sourceURL=webpack://VLibras/./node_modules/trie-search/index.js?
                                    

#47 JavaScript::Eval (size: 8993, repeated: 1) - SHA256: de98e7f7b4a7cded830554ed3ade012b7f1c5b74035e82f43a2b5c1e8793ed40

                                        /* WEBPACK VAR INJECTION */
(function(process) { // .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,
    // backported and transplited with Babel, with backwards-compat fixes

    // Copyright Joyent, Inc. and other Node contributors.
    //
    // Permission is hereby granted, free of charge, to any person obtaining a
    // copy of this software and associated documentation files (the
    // "Software"), to deal in the Software without restriction, including
    // without limitation the rights to use, copy, modify, merge, publish,
    // distribute, sublicense, and/or sell copies of the Software, and to permit
    // persons to whom the Software is furnished to do so, subject to the
    // following conditions:
    //
    // The above copyright notice and this permission notice shall be included
    // in all copies or substantial portions of the Software.
    //
    // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
    // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
    // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
    // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
    // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
    // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
    // USE OR OTHER DEALINGS IN THE SOFTWARE.

    // resolves . and .. elements in a path array with directory names there
    // must be no slashes, empty elements, or device names (c:\) in the array
    // (so also no leading and trailing slashes - it does not distinguish
    // relative and absolute paths)
    function normalizeArray(parts, allowAboveRoot) {
        // if the path tries to go above the root, `up` ends up > 0
        var up = 0;
        for (var i = parts.length - 1; i >= 0; i--) {
            var last = parts[i];
            if (last === '.') {
                parts.splice(i, 1);
            } else if (last === '..') {
                parts.splice(i, 1);
                up++;
            } else if (up) {
                parts.splice(i, 1);
                up--;
            }
        }

        // if the path is allowed to go above the root, restore leading ..s
        if (allowAboveRoot) {
            for (; up--; up) {
                parts.unshift('..');
            }
        }

        return parts;
    }

    // path.resolve([from ...], to)
    // posix version
    exports.resolve = function() {
        var resolvedPath = '',
            resolvedAbsolute = false;

        for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {
            var path = (i >= 0) ? arguments[i] : process.cwd();

            // Skip empty and invalid entries
            if (typeof path !== 'string') {
                throw new TypeError('Arguments to path.resolve must be strings');
            } else if (!path) {
                continue;
            }

            resolvedPath = path + '/' + resolvedPath;
            resolvedAbsolute = path.charAt(0) === '/';
        }

        // At this point the path should be resolved to a full absolute path, but
        // handle relative paths to be safe (might happen when process.cwd() fails)

        // Normalize the path
        resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {
            return !!p;
        }), !resolvedAbsolute).join('/');

        return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';
    };

    // path.normalize(path)
    // posix version
    exports.normalize = function(path) {
        var isAbsolute = exports.isAbsolute(path),
            trailingSlash = substr(path, -1) === '/';

        // Normalize the path
        path = normalizeArray(filter(path.split('/'), function(p) {
            return !!p;
        }), !isAbsolute).join('/');

        if (!path && !isAbsolute) {
            path = '.';
        }
        if (path && trailingSlash) {
            path += '/';
        }

        return (isAbsolute ? '/' : '') + path;
    };

    // posix version
    exports.isAbsolute = function(path) {
        return path.charAt(0) === '/';
    };

    // posix version
    exports.join = function() {
        var paths = Array.prototype.slice.call(arguments, 0);
        return exports.normalize(filter(paths, function(p, index) {
            if (typeof p !== 'string') {
                throw new TypeError('Arguments to path.join must be strings');
            }
            return p;
        }).join('/'));
    };


    // path.relative(from, to)
    // posix version
    exports.relative = function(from, to) {
        from = exports.resolve(from).substr(1);
        to = exports.resolve(to).substr(1);

        function trim(arr) {
            var start = 0;
            for (; start < arr.length; start++) {
                if (arr[start] !== '') break;
            }

            var end = arr.length - 1;
            for (; end >= 0; end--) {
                if (arr[end] !== '') break;
            }

            if (start > end) return [];
            return arr.slice(start, end - start + 1);
        }

        var fromParts = trim(from.split('/'));
        var toParts = trim(to.split('/'));

        var length = Math.min(fromParts.length, toParts.length);
        var samePartsLength = length;
        for (var i = 0; i < length; i++) {
            if (fromParts[i] !== toParts[i]) {
                samePartsLength = i;
                break;
            }
        }

        var outputParts = [];
        for (var i = samePartsLength; i < fromParts.length; i++) {
            outputParts.push('..');
        }

        outputParts = outputParts.concat(toParts.slice(samePartsLength));

        return outputParts.join('/');
    };

    exports.sep = '/';
    exports.delimiter = ':';

    exports.dirname = function(path) {
        if (typeof path !== 'string') path = path + '';
        if (path.length === 0) return '.';
        var code = path.charCodeAt(0);
        var hasRoot = code === 47 /*/*/ ;
        var end = -1;
        var matchedSlash = true;
        for (var i = path.length - 1; i >= 1; --i) {
            code = path.charCodeAt(i);
            if (code === 47 /*/*/ ) {
                if (!matchedSlash) {
                    end = i;
                    break;
                }
            } else {
                // We saw the first non-path separator
                matchedSlash = false;
            }
        }

        if (end === -1) return hasRoot ? '/' : '.';
        if (hasRoot && end === 1) {
            // return '//';
            // Backwards-compat fix:
            return '/';
        }
        return path.slice(0, end);
    };

    function basename(path) {
        if (typeof path !== 'string') path = path + '';

        var start = 0;
        var end = -1;
        var matchedSlash = true;
        var i;

        for (i = path.length - 1; i >= 0; --i) {
            if (path.charCodeAt(i) === 47 /*/*/ ) {
                // If we reached a path separator that was not part of a set of path
                // separators at the end of the string, stop now
                if (!matchedSlash) {
                    start = i + 1;
                    break;
                }
            } else if (end === -1) {
                // We saw the first non-path separator, mark this as the end of our
                // path component
                matchedSlash = false;
                end = i + 1;
            }
        }

        if (end === -1) return '';
        return path.slice(start, end);
    }

    // Uses a mixed approach for backwards-compatibility, as ext behavior changed
    // in new Node.js versions, so only basename() above is backported here
    exports.basename = function(path, ext) {
        var f = basename(path);
        if (ext && f.substr(-1 * ext.length) === ext) {
            f = f.substr(0, f.length - ext.length);
        }
        return f;
    };

    exports.extname = function(path) {
        if (typeof path !== 'string') path = path + '';
        var startDot = -1;
        var startPart = 0;
        var end = -1;
        var matchedSlash = true;
        // Track the state of characters (if any) we see before our first dot and
        // after any path separator we find
        var preDotState = 0;
        for (var i = path.length - 1; i >= 0; --i) {
            var code = path.charCodeAt(i);
            if (code === 47 /*/*/ ) {
                // If we reached a path separator that was not part of a set of path
                // separators at the end of the string, stop now
                if (!matchedSlash) {
                    startPart = i + 1;
                    break;
                }
                continue;
            }
            if (end === -1) {
                // We saw the first non-path separator, mark this as the end of our
                // extension
                matchedSlash = false;
                end = i + 1;
            }
            if (code === 46 /*.*/ ) {
                // If this is our first dot, mark it as the start of our extension
                if (startDot === -1)
                    startDot = i;
                else if (preDotState !== 1)
                    preDotState = 1;
            } else if (startDot !== -1) {
                // We saw a non-dot and non-path separator before our dot, so we should
                // have a good chance at having a non-empty extension
                preDotState = -1;
            }
        }

        if (startDot === -1 || end === -1 ||
            // We saw a non-dot character immediately before the dot
            preDotState === 0 ||
            // The (right-most) trimmed path component is exactly '..'
            preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {
            return '';
        }
        return path.slice(startDot, end);
    };

    function filter(xs, f) {
        if (xs.filter) return xs.filter(f);
        var res = [];
        for (var i = 0; i < xs.length; i++) {
            if (f(xs[i], i, xs)) res.push(xs[i]);
        }
        return res;
    }

    // String.prototype.substr - negative index don't work in IE8
    var substr = 'ab'.substr(-1) === 'b' ? function(str, start, len) {
        return str.substr(start, len)
    } : function(str, start, len) {
        if (start < 0) start = str.length + start;
        return str.substr(start, len);
    };

    /* WEBPACK VAR INJECTION */
}.call(this, __webpack_require__( /*! ./../process/browser.js */ "./node_modules/process/browser.js")))

//# sourceURL=webpack://VLibras/./node_modules/path-browserify/index.js?
                                    

#48 JavaScript::Eval (size: 6974, repeated: 1) - SHA256: f1eb3782b4a8a4198856408d5703bd7fafc60f65cc2ef1cd911af05bbe4d6126

                                        var stylesInDom = {};

var isOldIE = function isOldIE() {
    var memo;
    return function memorize() {
        if (typeof memo === 'undefined') {
            // Test for IE <= 9 as proposed by Browserhacks
            // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805
            // Tests for existence of standard globals is to allow style-loader
            // to operate correctly into non-standard environments
            // @see https://github.com/webpack-contrib/style-loader/issues/177
            memo = Boolean(window && document && document.all && !window.atob);
        }

        return memo;
    };
}();

var getTarget = function getTarget() {
    var memo = {};
    return function memorize(target) {
        if (typeof memo[target] === 'undefined') {
            var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself

            if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {
                try {
                    // This will throw an exception if access to iframe is blocked
                    // due to cross-origin restrictions
                    styleTarget = styleTarget.contentDocument.head;
                } catch (e) {
                    // istanbul ignore next
                    styleTarget = null;
                }
            }

            memo[target] = styleTarget;
        }

        return memo[target];
    };
}();

function listToStyles(list, options) {
    var styles = [];
    var newStyles = {};

    for (var i = 0; i < list.length; i++) {
        var item = list[i];
        var id = options.base ? item[0] + options.base : item[0];
        var css = item[1];
        var media = item[2];
        var sourceMap = item[3];
        var part = {
            css: css,
            media: media,
            sourceMap: sourceMap
        };

        if (!newStyles[id]) {
            styles.push(newStyles[id] = {
                id: id,
                parts: [part]
            });
        } else {
            newStyles[id].parts.push(part);
        }
    }

    return styles;
}

function addStylesToDom(styles, options) {
    for (var i = 0; i < styles.length; i++) {
        var item = styles[i];
        var domStyle = stylesInDom[item.id];
        var j = 0;

        if (domStyle) {
            domStyle.refs++;

            for (; j < domStyle.parts.length; j++) {
                domStyle.parts[j](item.parts[j]);
            }

            for (; j < item.parts.length; j++) {
                domStyle.parts.push(addStyle(item.parts[j], options));
            }
        } else {
            var parts = [];

            for (; j < item.parts.length; j++) {
                parts.push(addStyle(item.parts[j], options));
            }

            stylesInDom[item.id] = {
                id: item.id,
                refs: 1,
                parts: parts
            };
        }
    }
}

function insertStyleElement(options) {
    var style = document.createElement('style');

    if (typeof options.attributes.nonce === 'undefined') {
        var nonce = true ? __webpack_require__.nc : undefined;

        if (nonce) {
            options.attributes.nonce = nonce;
        }
    }

    Object.keys(options.attributes).forEach(function(key) {
        style.setAttribute(key, options.attributes[key]);
    });

    if (typeof options.insert === 'function') {
        options.insert(style);
    } else {
        var target = getTarget(options.insert || 'head');

        if (!target) {
            throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");
        }

        target.appendChild(style);
    }

    return style;
}

function removeStyleElement(style) {
        // istanbul ignore if
        if (style.parentNode === null) {
            return false;
        }

        style.parentNode.removeChild(style);
    }
    /* istanbul ignore next  */


var replaceText = function replaceText() {
    var textStore = [];
    return function replace(index, replacement) {
        textStore[index] = replacement;
        return textStore.filter(Boolean).join('\n');
    };
}();

function applyToSingletonTag(style, index, remove, obj) {
    var css = remove ? '' : obj.css; // For old IE

    /* istanbul ignore if  */

    if (style.styleSheet) {
        style.styleSheet.cssText = replaceText(index, css);
    } else {
        var cssNode = document.createTextNode(css);
        var childNodes = style.childNodes;

        if (childNodes[index]) {
            style.removeChild(childNodes[index]);
        }

        if (childNodes.length) {
            style.insertBefore(cssNode, childNodes[index]);
        } else {
            style.appendChild(cssNode);
        }
    }
}

function applyToTag(style, options, obj) {
    var css = obj.css;
    var media = obj.media;
    var sourceMap = obj.sourceMap;

    if (media) {
        style.setAttribute('media', media);
    }

    if (sourceMap && btoa) {
        css += "\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), " */");
    } // For old IE

    /* istanbul ignore if  */


    if (style.styleSheet) {
        style.styleSheet.cssText = css;
    } else {
        while (style.firstChild) {
            style.removeChild(style.firstChild);
        }

        style.appendChild(document.createTextNode(css));
    }
}

var singleton = null;
var singletonCounter = 0;

function addStyle(obj, options) {
    var style;
    var update;
    var remove;

    if (options.singleton) {
        var styleIndex = singletonCounter++;
        style = singleton || (singleton = insertStyleElement(options));
        update = applyToSingletonTag.bind(null, style, styleIndex, false);
        remove = applyToSingletonTag.bind(null, style, styleIndex, true);
    } else {
        style = insertStyleElement(options);
        update = applyToTag.bind(null, style, options);

        remove = function remove() {
            removeStyleElement(style);
        };
    }

    update(obj);
    return function updateStyle(newObj) {
        if (newObj) {
            if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {
                return;
            }

            update(obj = newObj);
        } else {
            remove();
        }
    };
}

module.exports = function(list, options) {
    options = options || {};
    options.attributes = typeof options.attributes === 'object' ? options.attributes : {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
    // tags it will allow on a page

    if (!options.singleton && typeof options.singleton !== 'boolean') {
        options.singleton = isOldIE();
    }

    var styles = listToStyles(list, options);
    addStylesToDom(styles, options);
    return function update(newList) {
        var mayRemove = [];

        for (var i = 0; i < styles.length; i++) {
            var item = styles[i];
            var domStyle = stylesInDom[item.id];

            if (domStyle) {
                domStyle.refs--;
                mayRemove.push(domStyle);
            }
        }

        if (newList) {
            var newStyles = listToStyles(newList, options);
            addStylesToDom(newStyles, options);
        }

        for (var _i = 0; _i < mayRemove.length; _i++) {
            var _domStyle = mayRemove[_i];

            if (_domStyle.refs === 0) {
                for (var j = 0; j < _domStyle.parts.length; j++) {
                    _domStyle.parts[j]();
                }

                delete stylesInDom[_domStyle.id];
            }
        }
    };
};

//# sourceURL=webpack://VLibras/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js?
                                    

#49 JavaScript::Eval (size: 572, repeated: 1) - SHA256: fd40bab597b5c6beffa8e853303fe45b7702529d25f5e4b7cce0bb309b7b498c

                                        __webpack_require__.r(__webpack_exports__);
/* harmony default export */
__webpack_exports__["default"] = ("<div vp>\n  <div vp-box></div>\n  <div vp-message-box></div>\n  <div vp-settings></div>\n  <div vp-settings-btn></div>\n  <div vp-info-screen></div>\n  <div vp-dictionary></div>\n  <div vp-suggestion-screen></div>\n  <div vp-suggestion-button></div>\n  <div vp-rate-box></div>\n  <div vp-rate-button></div>\n  <div vp-controls></div>\n  <div vp-change-avatar></div>\n</div>\n");

//# sourceURL=webpack://VLibras/./widget/src/components/PluginWrapper/template.html?
                                    

#50 JavaScript::Eval (size: 628, repeated: 1) - SHA256: e2aad51236a1b49263527a27425a827d521c0b077d36a85bdd582eaaffa14464

                                        var BoxTlp = __webpack_require__( /*! ./box.html */ "./plugin/components/Box/box.html").default;
__webpack_require__( /*! ./box.scss */ "./plugin/components/Box/box.scss");


function Box() {
    this.element = null;
    this.message = null;
}

Box.prototype.load = function(element) {


    this.element = element;
    this.element.classList.add('vpw-box');
    this.element.innerHTML = BoxTlp;
    // this.element.querySelector('.mes').innerHTML = 'VLIBRAS';

    // this.message = {
    //   text: 'message'
    // };

    // return this.message;

};




module.exports = Box;


//# sourceURL=webpack://VLibras/./plugin/components/Box/index.js?
                                    

#51 JavaScript::Eval (size: 13657, repeated: 1) - SHA256: e2df59e1c9f6dd256cbb8b68b838881791204a7416218dcb9967c465e28355f6

                                        // Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.



var R = typeof Reflect === 'object' ? Reflect : null
var ReflectApply = R && typeof R.apply === 'function' ? R.apply : function ReflectApply(target, receiver, args) {
    return Function.prototype.apply.call(target, receiver, args);
}

var ReflectOwnKeys
if (R && typeof R.ownKeys === 'function') {
    ReflectOwnKeys = R.ownKeys
} else if (Object.getOwnPropertySymbols) {
    ReflectOwnKeys = function ReflectOwnKeys(target) {
        return Object.getOwnPropertyNames(target)
            .concat(Object.getOwnPropertySymbols(target));
    };
} else {
    ReflectOwnKeys = function ReflectOwnKeys(target) {
        return Object.getOwnPropertyNames(target);
    };
}

function ProcessEmitWarning(warning) {
    if (console && console.warn) console.warn(warning);
}

var NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {
    return value !== value;
}

function EventEmitter() {
    EventEmitter.init.call(this);
}
module.exports = EventEmitter;

// Backwards-compat with node 0.10.x
EventEmitter.EventEmitter = EventEmitter;

EventEmitter.prototype._events = undefined;
EventEmitter.prototype._eventsCount = 0;
EventEmitter.prototype._maxListeners = undefined;

// By default EventEmitters will print a warning if more than 10 listeners are
// added to it. This is a useful default which helps finding memory leaks.
var defaultMaxListeners = 10;

Object.defineProperty(EventEmitter, 'defaultMaxListeners', {
    enumerable: true,
    get: function() {
        return defaultMaxListeners;
    },
    set: function(arg) {
        if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {
            throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + arg + '.');
        }
        defaultMaxListeners = arg;
    }
});

EventEmitter.init = function() {

    if (this._events === undefined ||
        this._events === Object.getPrototypeOf(this)._events) {
        this._events = Object.create(null);
        this._eventsCount = 0;
    }

    this._maxListeners = this._maxListeners || undefined;
};

// Obviously not all Emitters should be limited to 10. This function allows
// that to be increased. Set to zero for unlimited.
EventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {
    if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {
        throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + n + '.');
    }
    this._maxListeners = n;
    return this;
};

function $getMaxListeners(that) {
    if (that._maxListeners === undefined)
        return EventEmitter.defaultMaxListeners;
    return that._maxListeners;
}

EventEmitter.prototype.getMaxListeners = function getMaxListeners() {
    return $getMaxListeners(this);
};

EventEmitter.prototype.emit = function emit(type) {
    var args = [];
    for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);
    var doError = (type === 'error');

    var events = this._events;
    if (events !== undefined)
        doError = (doError && events.error === undefined);
    else if (!doError)
        return false;

    // If there is no 'error' event listener then throw.
    if (doError) {
        var er;
        if (args.length > 0)
            er = args[0];
        if (er instanceof Error) {
            // Note: The comments on the `throw` lines are intentional, they show
            // up in Node's output if this results in an unhandled exception.
            throw er; // Unhandled 'error' event
        }
        // At least give some kind of context to the user
        var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));
        err.context = er;
        throw err; // Unhandled 'error' event
    }

    var handler = events[type];

    if (handler === undefined)
        return false;

    if (typeof handler === 'function') {
        ReflectApply(handler, this, args);
    } else {
        var len = handler.length;
        var listeners = arrayClone(handler, len);
        for (var i = 0; i < len; ++i)
            ReflectApply(listeners[i], this, args);
    }

    return true;
};

function _addListener(target, type, listener, prepend) {
    var m;
    var events;
    var existing;

    if (typeof listener !== 'function') {
        throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof listener);
    }

    events = target._events;
    if (events === undefined) {
        events = target._events = Object.create(null);
        target._eventsCount = 0;
    } else {
        // To avoid recursion in the case that type === "newListener"! Before
        // adding it to the listeners, first emit "newListener".
        if (events.newListener !== undefined) {
            target.emit('newListener', type,
                listener.listener ? listener.listener : listener);

            // Re-assign `events` because a newListener handler could have caused the
            // this._events to be assigned to a new object
            events = target._events;
        }
        existing = events[type];
    }

    if (existing === undefined) {
        // Optimize the case of one listener. Don't need the extra array object.
        existing = events[type] = listener;
        ++target._eventsCount;
    } else {
        if (typeof existing === 'function') {
            // Adding the second element, need to change to array.
            existing = events[type] =
                prepend ? [listener, existing] : [existing, listener];
            // If we've already got an array, just append.
        } else if (prepend) {
            existing.unshift(listener);
        } else {
            existing.push(listener);
        }

        // Check for listener leak
        m = $getMaxListeners(target);
        if (m > 0 && existing.length > m && !existing.warned) {
            existing.warned = true;
            // No error code for this since it is a Warning
            // eslint-disable-next-line no-restricted-syntax
            var w = new Error('Possible EventEmitter memory leak detected. ' +
                existing.length + ' ' + String(type) + ' listeners ' +
                'added. Use emitter.setMaxListeners() to ' +
                'increase limit');
            w.name = 'MaxListenersExceededWarning';
            w.emitter = target;
            w.type = type;
            w.count = existing.length;
            ProcessEmitWarning(w);
        }
    }

    return target;
}

EventEmitter.prototype.addListener = function addListener(type, listener) {
    return _addListener(this, type, listener, false);
};

EventEmitter.prototype.on = EventEmitter.prototype.addListener;

EventEmitter.prototype.prependListener =
    function prependListener(type, listener) {
        return _addListener(this, type, listener, true);
    };

function onceWrapper() {
    var args = [];
    for (var i = 0; i < arguments.length; i++) args.push(arguments[i]);
    if (!this.fired) {
        this.target.removeListener(this.type, this.wrapFn);
        this.fired = true;
        ReflectApply(this.listener, this.target, args);
    }
}

function _onceWrap(target, type, listener) {
    var state = {
        fired: false,
        wrapFn: undefined,
        target: target,
        type: type,
        listener: listener
    };
    var wrapped = onceWrapper.bind(state);
    wrapped.listener = listener;
    state.wrapFn = wrapped;
    return wrapped;
}

EventEmitter.prototype.once = function once(type, listener) {
    if (typeof listener !== 'function') {
        throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof listener);
    }
    this.on(type, _onceWrap(this, type, listener));
    return this;
};

EventEmitter.prototype.prependOnceListener =
    function prependOnceListener(type, listener) {
        if (typeof listener !== 'function') {
            throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof listener);
        }
        this.prependListener(type, _onceWrap(this, type, listener));
        return this;
    };

// Emits a 'removeListener' event if and only if the listener was removed.
EventEmitter.prototype.removeListener =
    function removeListener(type, listener) {
        var list, events, position, i, originalListener;

        if (typeof listener !== 'function') {
            throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof listener);
        }

        events = this._events;
        if (events === undefined)
            return this;

        list = events[type];
        if (list === undefined)
            return this;

        if (list === listener || list.listener === listener) {
            if (--this._eventsCount === 0)
                this._events = Object.create(null);
            else {
                delete events[type];
                if (events.removeListener)
                    this.emit('removeListener', type, list.listener || listener);
            }
        } else if (typeof list !== 'function') {
            position = -1;

            for (i = list.length - 1; i >= 0; i--) {
                if (list[i] === listener || list[i].listener === listener) {
                    originalListener = list[i].listener;
                    position = i;
                    break;
                }
            }

            if (position < 0)
                return this;

            if (position === 0)
                list.shift();
            else {
                spliceOne(list, position);
            }

            if (list.length === 1)
                events[type] = list[0];

            if (events.removeListener !== undefined)
                this.emit('removeListener', type, originalListener || listener);
        }

        return this;
    };

EventEmitter.prototype.off = EventEmitter.prototype.removeListener;

EventEmitter.prototype.removeAllListeners =
    function removeAllListeners(type) {
        var listeners, events, i;

        events = this._events;
        if (events === undefined)
            return this;

        // not listening for removeListener, no need to emit
        if (events.removeListener === undefined) {
            if (arguments.length === 0) {
                this._events = Object.create(null);
                this._eventsCount = 0;
            } else if (events[type] !== undefined) {
                if (--this._eventsCount === 0)
                    this._events = Object.create(null);
                else
                    delete events[type];
            }
            return this;
        }

        // emit removeListener for all listeners on all events
        if (arguments.length === 0) {
            var keys = Object.keys(events);
            var key;
            for (i = 0; i < keys.length; ++i) {
                key = keys[i];
                if (key === 'removeListener') continue;
                this.removeAllListeners(key);
            }
            this.removeAllListeners('removeListener');
            this._events = Object.create(null);
            this._eventsCount = 0;
            return this;
        }

        listeners = events[type];

        if (typeof listeners === 'function') {
            this.removeListener(type, listeners);
        } else if (listeners !== undefined) {
            // LIFO order
            for (i = listeners.length - 1; i >= 0; i--) {
                this.removeListener(type, listeners[i]);
            }
        }

        return this;
    };

function _listeners(target, type, unwrap) {
    var events = target._events;

    if (events === undefined)
        return [];

    var evlistener = events[type];
    if (evlistener === undefined)
        return [];

    if (typeof evlistener === 'function')
        return unwrap ? [evlistener.listener || evlistener] : [evlistener];

    return unwrap ?
        unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);
}

EventEmitter.prototype.listeners = function listeners(type) {
    return _listeners(this, type, true);
};

EventEmitter.prototype.rawListeners = function rawListeners(type) {
    return _listeners(this, type, false);
};

EventEmitter.listenerCount = function(emitter, type) {
    if (typeof emitter.listenerCount === 'function') {
        return emitter.listenerCount(type);
    } else {
        return listenerCount.call(emitter, type);
    }
};

EventEmitter.prototype.listenerCount = listenerCount;

function listenerCount(type) {
    var events = this._events;

    if (events !== undefined) {
        var evlistener = events[type];

        if (typeof evlistener === 'function') {
            return 1;
        } else if (evlistener !== undefined) {
            return evlistener.length;
        }
    }

    return 0;
}

EventEmitter.prototype.eventNames = function eventNames() {
    return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];
};

function arrayClone(arr, n) {
    var copy = new Array(n);
    for (var i = 0; i < n; ++i)
        copy[i] = arr[i];
    return copy;
}

function spliceOne(list, index) {
    for (; index + 1 < list.length; index++)
        list[index] = list[index + 1];
    list.pop();
}

function unwrapListeners(arr) {
    var ret = new Array(arr.length);
    for (var i = 0; i < ret.length; ++i) {
        ret[i] = arr[i].listener || arr[i];
    }
    return ret;
}


//# sourceURL=webpack://VLibras/./node_modules/events/events.js?
                                    

#52 JavaScript::Eval (size: 735, repeated: 1) - SHA256: 38e0160a510f6c12c578cc9904e37e26b5bd1d1740c225acc21ae9726af1f9ae

                                        var content = __webpack_require__( /*! !../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./reset.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./widget/src/scss/reset.scss");

if (typeof content === 'string') {
    content = [
        [module.i, content, '']
    ];
}

var options = {}

options.insert = "head";
options.singleton = false;

var update = __webpack_require__( /*! ../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js")(content, options);

if (content.locals) {
    module.exports = content.locals;
}


//# sourceURL=webpack://VLibras/./widget/src/scss/reset.scss?
                                    

#53 JavaScript::Eval (size: 738, repeated: 1) - SHA256: 1a19b17505dc0cbbabd91b72de60311d7c3a12f2787950f32c71bdb34830569d

                                        var content = __webpack_require__( /*! !../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./styles.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./widget/src/scss/styles.scss");

if (typeof content === 'string') {
    content = [
        [module.i, content, '']
    ];
}

var options = {}

options.insert = "head";
options.singleton = false;

var update = __webpack_require__( /*! ../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js")(content, options);

if (content.locals) {
    module.exports = content.locals;
}


//# sourceURL=webpack://VLibras/./widget/src/scss/styles.scss?
                                    

#54 JavaScript::Eval (size: 3168, repeated: 1) - SHA256: 94384fa8f12991fe81fcdbc64d810fbc4b7d02825bfa57f165b374c3555db677

                                        /**
 * Module of mixed-in functions shared between node and client code
 */
var isObject = __webpack_require__( /*! ./is-object */ "../vlibras-player-webjs/node_modules/superagent/lib/is-object.js");

/**
 * Clear previous timeout.
 *
 * @return {Request} for chaining
 * @api public
 */

exports.clearTimeout = function _clearTimeout() {
    this._timeout = 0;
    clearTimeout(this._timer);
    return this;
};

/**
 * Force given parser
 *
 * Sets the body parser no matter type.
 *
 * @param {Function}
 * @api public
 */

exports.parse = function parse(fn) {
    this._parser = fn;
    return this;
};

/**
 * Set timeout to `ms`.
 *
 * @param {Number} ms
 * @return {Request} for chaining
 * @api public
 */

exports.timeout = function timeout(ms) {
    this._timeout = ms;
    return this;
};

/**
 * Faux promise support
 *
 * @param {Function} fulfill
 * @param {Function} reject
 * @return {Request}
 */

exports.then = function then(fulfill, reject) {
    return this.end(function(err, res) {
        err ? reject(err) : fulfill(res);
    });
}

/**
 * Allow for extension
 */

exports.use = function use(fn) {
    fn(this);
    return this;
}


/**
 * Get request header `field`.
 * Case-insensitive.
 *
 * @param {String} field
 * @return {String}
 * @api public
 */

exports.get = function(field) {
    return this._header[field.toLowerCase()];
};

/**
 * Get case-insensitive header `field` value.
 * This is a deprecated internal API. Use `.get(field)` instead.
 *
 * (getHeader is no longer used internally by the superagent code base)
 *
 * @param {String} field
 * @return {String}
 * @api private
 * @deprecated
 */

exports.getHeader = exports.get;

/**
 * Set header `field` to `val`, or multiple fields with one object.
 * Case-insensitive.
 *
 * Examples:
 *
 *      req.get('/')
 *        .set('Accept', 'application/json')
 *        .set('X-API-Key', 'foobar')
 *        .end(callback);
 *
 *      req.get('/')
 *        .set({ Accept: 'application/json', 'X-API-Key': 'foobar' })
 *        .end(callback);
 *
 * @param {String|Object} field
 * @param {String} val
 * @return {Request} for chaining
 * @api public
 */

exports.set = function(field, val) {
    if (isObject(field)) {
        for (var key in field) {
            this.set(key, field[key]);
        }
        return this;
    }
    this._header[field.toLowerCase()] = val;
    this.header[field] = val;
    return this;
};

/**
 * Remove header `field`.
 * Case-insensitive.
 *
 * Example:
 *
 *      req.get('/')
 *        .unset('User-Agent')
 *        .end(callback);
 *
 * @param {String} field
 */
exports.unset = function(field) {
    delete this._header[field.toLowerCase()];
    delete this.header[field];
    return this;
};

/**
 * Write the field `name` and `val` for "multipart/form-data"
 * request bodies.
 *
 * ``` js
 * request.post('/upload')
 *   .field('foo', 'bar')
 *   .end(callback);
 * ```
 *
 * @param {String} name
 * @param {String|Blob|File|Buffer|fs.ReadStream} val
 * @return {Request} for chaining
 * @api public
 */
exports.field = function(name, val) {
    this._getFormData().append(name, val);
    return this;
};


//# sourceURL=webpack://VLibras/../vlibras-player-webjs/node_modules/superagent/lib/request-base.js?
                                    

#55 JavaScript::Eval (size: 779, repeated: 1) - SHA256: b0321b5ad1618e15555e0367420ff0e142d50cfefbbc9a30aa30eef191072f5e

                                        var content = __webpack_require__( /*! !../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./rate-button.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./plugin/components/RateButton/rate-button.scss");

if (typeof content === 'string') {
    content = [
        [module.i, content, '']
    ];
}

var options = {}

options.insert = "head";
options.singleton = false;

var update = __webpack_require__( /*! ../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js")(content, options);

if (content.locals) {
    module.exports = content.locals;
}


//# sourceURL=webpack://VLibras/./plugin/components/RateButton/rate-button.scss?
                                    

#56 JavaScript::Eval (size: 2671, repeated: 1) - SHA256: 50c33d4d93018384f3140cc9ea27c38373cefe9539ddbbb3dd726391f8a13bff

                                        exports = module.exports = __webpack_require__( /*! ../../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js")(false);
// Module
exports.push([module.i, ".vw-links {\n  top: -100px;\n  left: -100px;\n  position: absolute; }\n  .vw-links .vw-tooltip {\n    position: relative;\n    opacity: 1; }\n    .vw-links .vw-tooltip__item {\n      text-align: center;\n      position: absolute;\n      min-width: 123px;\n      padding: 8px;\n      visibility: hidden;\n      opacity: 0;\n      background: white;\n      transition: all 0.25s cubic-bezier(0, 0, 0.2, 1);\n      color: #484848;\n      border: 1px solid #cecece;\n      border-radius: 3px;\n      font-weight: 500;\n      box-shadow: 0 2px 1px #bcbcbc;\n      z-index: 4; }\n      .vw-links .vw-tooltip__item:after {\n        content: \"\";\n        display: block;\n        position: absolute;\n        width: 0;\n        height: 0;\n        border-style: solid; }\n    .vw-links .vw-tooltip__initiator {\n      cursor: pointer;\n      z-index: 5; }\n    .vw-links .vw-tooltip .vw-tooltip__item {\n      top: calc(100% + 1em);\n      left: 50%;\n      transform: translate3d(-50%, -15px, 0); }\n      .vw-links .vw-tooltip .vw-tooltip__item:after {\n        top: -0.5em;\n        left: 50%;\n        transform: translate3d(-50%, 0, 0);\n        border-width: 0 0.5em 0.5em 0.5em;\n        border-color: transparent transparent white transparent;\n        -webkit-filter: drop-shadow(1px 2px 1px #bcbcbc);\n        filter: drop-shadow(1px -1px 1px #bcbcbc); }\n    .vw-links .vw-tooltip.active > .vw-tooltip__item {\n      transform: translate3d(-50%, 0, 0);\n      visibility: visible;\n      opacity: 1; }\n\n[vw].maximize [vw-plugin-wrapper] {\n  width: 100%;\n  height: 100% !important;\n  max-height: initial !important; }\n\n[vw].left [vw-plugin-wrapper] {\n  float: left; }\n\n[vw] [vw-plugin-wrapper] {\n  display: none;\n  width: 300px;\n  height: 100%;\n  float: right;\n  overflow: hidden;\n  background: white;\n  -moz-border-radius: 20px;\n  -webkit-border-radius: 20px;\n  -webkit-box-shadow: 0px 0px 9px 0px rgba(0, 0, 0, 0.15);\n  -moz-box-shadow: 0px 0px 9px 0px rgba(121, 76, 76, 0.15);\n  box-shadow: 0px 0px 9px 0px rgba(0, 0, 0, 0.15); }\n  [vw] [vw-plugin-wrapper].active {\n    display: -webkit-flex;\n    display: flex;\n    flex-direction: column;\n    -webkit-flex-direction: column;\n    height: 450px;\n    max-width: 100%;\n    overflow: hidden;\n    min-height: 100%; }\n", ""]);


//# sourceURL=webpack://VLibras/./widget/src/components/PluginWrapper/styles.scss?./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js
                                    

#57 JavaScript::Eval (size: 306, repeated: 1) - SHA256: b8d2c33d9b72c5698b09be4f3818de6183038511cff50690d53ac7dcfa3d2cd6

                                        /**
 * Check if `obj` is an object.
 *
 * @param {Object} obj
 * @return {Boolean}
 * @api private
 */

function isObject(obj) {
    return null != obj && 'object' == typeof obj;
}

module.exports = isObject;


//# sourceURL=webpack://VLibras/../vlibras-player-webjs/node_modules/superagent/lib/is-object.js?
                                    

#58 JavaScript::Eval (size: 869, repeated: 1) - SHA256: 308adb5af63ee63ad4b036abdb8bd4c9a8f95978a96da25a478bf095879fc615

                                        function CloseScreen(dictionary, info, settings, settingsBtnClose) {
    this.dictionary = dictionary;
    this.info = info;
    this.settings = settings;
    this.settingsBtnClose = settingsBtnClose;
}

CloseScreen.prototype.closeDict = function() {
    if (this.dictionary.visible) {
        this.dictionary.hide();
    }
};

CloseScreen.prototype.closeInfo = function() {
    if (this.info.visible) {
        this.info.hide();
    }
}


CloseScreen.prototype.closeSettings = function() {
    if (this.settings.visible) {
        this.settings.hide(true);
    }
}

CloseScreen.prototype.closeAll = function() {
    this.closeDict();
    this.closeInfo();
    this.closeSettings();
    this.settingsBtnClose.element.classList.remove('active');
    this.settings.showMenu();
}

module.exports = CloseScreen;

//# sourceURL=webpack://VLibras/./plugin/components/CloseScreen/index.js?
                                    

#59 JavaScript::Eval (size: 11126, repeated: 1) - SHA256: f637b03d53ec0d8ab616b058d0805d416a11861a8583f1d171d31fcccbde0596

                                        var HashArray = __webpack_require__( /*! hasharray */ "./node_modules/hasharray/index.js");

var MAX_CACHE_SIZE = 64;

var IS_WHITESPACE = /^[\s]*$/;

var DEFAULT_INTERNATIONALIZE_EXPAND_REGEXES = [{
    regex: /[�������]/ig,
    alternate: 'a'
}, {
    regex: /[����]/ig,
    alternate: 'e'
}, {
    regex: /[����]/ig,
    alternate: 'i'
}, {
    regex: /[�����]/ig,
    alternate: 'o'
}, {
    regex: /[����]/ig,
    alternate: 'u'
}, {
    regex: /[�]/ig,
    alternate: 'ae'
}];

String.prototype.replaceCharAt = function(index, replacement) {
    return this.substr(0, index) + replacement + this.substr(index + replacement.length);
};

var TrieSearch = function(keyFields, options) {
    this.options = options || {};

    // Default ignoreCase to true
    this.options.ignoreCase = (this.options.ignoreCase === undefined) ? true : this.options.ignoreCase;
    this.options.maxCacheSize = this.options.maxCacheSize || MAX_CACHE_SIZE;
    this.options.cache = this.options.hasOwnProperty('cache') ? this.options.cache : true;
    this.options.splitOnRegEx = this.options.hasOwnProperty('splitOnRegEx') ? this.options.splitOnRegEx : /\s/g;
    this.options.splitOnGetRegEx = this.options.hasOwnProperty('splitOnGetRegEx') ? this.options.splitOnGetRegEx : this.options.splitOnRegEx;
    this.options.min = this.options.min || 1;
    this.options.keepAll = this.options.hasOwnProperty('keepAll') ? this.options.keepAll : false;
    this.options.keepAllKey = this.options.hasOwnProperty('keepAllKey') ? this.options.keepAllKey : 'id';
    this.options.idFieldOrFunction = this.options.hasOwnProperty('idFieldOrFunction') ? this.options.idFieldOrFunction : undefined;
    this.options.expandRegexes = this.options.expandRegexes || DEFAULT_INTERNATIONALIZE_EXPAND_REGEXES;
    this.options.insertFullUnsplitKey = this.options.hasOwnProperty('insertFullUnsplitKey') ? this.options.insertFullUnsplitKey : false;

    this.keyFields = keyFields ? (keyFields instanceof Array ? keyFields : [keyFields]) : [];
    this.root = {};
    this.size = 0;

    if (this.options.cache) {
        this.getCache = new HashArray('key');
    }
};

function deepLookup(obj, keys) {
    return keys.length === 1 ? obj[keys[0]] : deepLookup(obj[keys[0]], keys.slice(1, keys.length));
}

TrieSearch.prototype = {
    add: function(obj, customKeys) {
        if (this.options.cache)
            this.clearCache();

        // Someone might have called add via an array forEach where the second param is a number
        if (typeof customKeys === 'number') {
            customKeys = undefined;
        }

        var keyFields = customKeys || this.keyFields;

        for (var k in keyFields) {
            var key = keyFields[k],
                isKeyArr = key instanceof Array,
                val = isKeyArr ? deepLookup(obj, key) : obj[key];

            if (!val) continue;

            val = val.toString();

            var expandedValues = this.expandString(val);

            for (var v = 0; v < expandedValues.length; v++) {
                var expandedValue = expandedValues[v];

                this.map(expandedValue, obj);
            }
        }
    },
    /**
     * By default using the options.expandRegexes, given a string like '� �r bra', this will expand it to:
     *
     * ['� �r bra', 'o �r bra', '� ar bra', 'o ar bra']
     *
     * By default this was built to allow for internationalization, but it could be also be expanded to
     * allow for word alternates, etc. like spelling alternates ('teh' and 'the').
     *
     * This is used for insertion! This should not be used for lookup since if a person explicitly types
     * '�' they probably do not want to see all results for 'a'.
     *
     * @param value The string to find alternates for.
     * @returns {Array} Always returns an array even if no matches.
     */
    expandString: function(value) {
        var values = [value];

        if (this.options.expandRegexes && this.options.expandRegexes.length) {
            for (var i = 0; i < this.options.expandRegexes.length; i++) {
                var er = this.options.expandRegexes[i];
                var match;

                while ((match = er.regex.exec(value)) !== null) {
                    var alternateValue = value.replaceCharAt(match.index, er.alternate);
                    values.push(alternateValue);
                }
            }
        }

        return values;
    },
    addAll: function(arr, customKeys) {
        for (var i = 0; i < arr.length; i++)
            this.add(arr[i], customKeys);
    },
    reset: function() {
        this.root = {};
        this.size = 0;
    },
    clearCache: function() {
        // if (this.getCache && !this.getCache._list.length) {
        //   return;
        // }
        this.getCache = new HashArray('key');
    },
    cleanCache: function() {
        while (this.getCache.all.length > this.options.maxCacheSize)
            this.getCache.remove(this.getCache.all[0]);
    },
    addFromObject: function(obj, valueField) {
        if (this.options.cache)
            this.clearCache();

        valueField = valueField || 'value';

        if (this.keyFields.indexOf('_key_') == -1)
            this.keyFields.push('_key_');

        for (var key in obj) {
            var o = {
                _key_: key
            };
            o[valueField] = obj[key];
            this.add(o);
        }
    },
    map: function(key, value) {
        if (this.options.splitOnRegEx && this.options.splitOnRegEx.test(key)) {
            var phrases = key.split(this.options.splitOnRegEx);
            var emptySplitMatch = phrases.filter(function(p) {
                return IS_WHITESPACE.test(p);
            });
            var selfMatch = phrases.filter(function(p) {
                return p === key;
            });
            var selfIsOnlyMatch = selfMatch.length + emptySplitMatch.length === phrases.length;

            // There is an edge case that a RegEx with a positive lookeahed like:
            //  /?=[A-Z]/ // Split on capital letters for a camelcase sentence
            // Will then match again when we call map, creating an infinite stack loop.
            if (!selfIsOnlyMatch) {
                for (var i = 0, l = phrases.length; i < l; i++) {
                    if (!IS_WHITESPACE.test(phrases[i])) {
                        this.map(phrases[i], value);
                    }
                }

                if (!this.options.insertFullUnsplitKey) {
                    return;
                }
            }
        }

        if (this.options.cache)
            this.clearCache();

        if (this.options.keepAll) {
            this.indexed = this.indexed || new HashArray([this.options.keepAllKey]);
            this.indexed.add(value);
        }

        if (this.options.ignoreCase) {
            key = key.toLowerCase();
        }

        var keyArr = this.keyToArr(key),
            self = this;

        insert(keyArr, value, this.root);

        function insert(keyArr, value, node) {
            if (keyArr.length == 0) {
                node['value'] = node['value'] || [];
                node['value'].push(value);
                return;
            }

            var k = keyArr.shift();

            if (!node[k])
                self.size++;

            node[k] = node[k] || {};

            insert(keyArr, value, node[k])
        }
    },
    keyToArr: function(key) {
        var keyArr;

        if (this.options.min && this.options.min > 1) {
            if (key.length < this.options.min)
                return [];

            keyArr = [key.substr(0, this.options.min)];
            keyArr = keyArr.concat(key.substr(this.options.min).split(''));
        } else keyArr = key.split('');

        return keyArr;
    },
    findNode: function(key) {
        if (this.options.min > 0 && key.length < this.options.min)
            return [];

        return f(this.keyToArr(key), this.root);

        function f(keyArr, node) {
            if (!node) return undefined;
            if (keyArr.length == 0) return node;

            var k = keyArr.shift();
            return f(keyArr, node[k]);
        }
    },
    _getCacheKey: function(phrase, limit) {
        var cacheKey = phrase
        if (limit) {
            cacheKey = phrase + "_" + limit
        }
        return cacheKey
    },
    _get: function(phrase, limit) {
        phrase = this.options.ignoreCase ? phrase.toLowerCase() : phrase;

        var c, node;
        if (this.options.cache && (c = this.getCache.get(this._getCacheKey(phrase, limit))))
            return c.value;

        var ret = undefined,
            haKeyFields = this.options.indexField ? [this.options.indexField] : this.keyFields,
            words = this.options.splitOnGetRegEx ? phrase.split(this.options.splitOnGetRegEx) : [phrase];

        for (var w = 0, l = words.length; w < l; w++) {
            if (this.options.min && words[w].length < this.options.min)
                continue;

            var temp = new HashArray(haKeyFields);

            if (node = this.findNode(words[w]))
                aggregate(node, temp);

            ret = ret ? ret.intersection(temp) : temp;
        }

        var v = ret ? ret.all : [];

        if (this.options.cache) {
            var cacheKey = this._getCacheKey(phrase, limit)
            this.getCache.add({
                key: cacheKey,
                value: v
            });
            this.cleanCache();
        }

        return v;

        function aggregate(node, ha) {
            if (limit && ha.all.length === limit) {
                return
            }

            if (node.value && node.value.length) {
                if (!limit || (ha.all.length + node.value.length) < limit) {
                    ha.addAll(node.value);
                } else {
                    // Limit is less than the number of entries in the node.value + ha combined
                    ha.addAll(node.value.slice(0, limit - ha.all.length))
                    return
                }
            }

            for (var k in node) {
                if (limit && ha.all.length === limit) {
                    return
                }
                if (k != 'value') {
                    aggregate(node[k], ha);
                }
            }
        }
    },
    get: function(phrases, reducer, limit) {
        var self = this,
            haKeyFields = this.options.indexField ? [this.options.indexField] : this.keyFields,
            ret = undefined,
            accumulator = undefined;

        if (reducer && !this.options.idFieldOrFunction) {
            throw new Error('To use the accumulator, you must specify and idFieldOrFunction');
        }

        phrases = (phrases instanceof Array) ? phrases : [phrases];

        for (var i = 0, l = phrases.length; i < l; i++) {
            var matches = this._get(phrases[i], limit);

            if (reducer) {
                accumulator = reducer(accumulator, phrases[i], matches, this);
            } else {
                ret = ret ? ret.addAll(matches) : new HashArray(haKeyFields).addAll(matches);
            }
        }

        if (!reducer) {
            return ret.all;
        }

        return accumulator;
    },
    getId: function(item) {
        return typeof this.options.idFieldOrFunction === 'function' ? this.options.idFieldOrFunction(item) : item[this.options.idFieldOrFunction];
    }
};

TrieSearch.UNION_REDUCER = function(accumulator, phrase, matches, trie) {
    if (accumulator === undefined) {
        return matches;
    }

    var map = {},
        i, id;
    var maxLength = Math.max(accumulator.length, matches.length);
    var results = [];
    var l = 0;

    // One loop, O(N) for max length of accumulator or matches.
    for (i = 0; i < maxLength; i++) {
        if (i < accumulator.length) {
            id = trie.getId(accumulator[i]);
            map[id] = map[id] ? map[id] : 0;
            map[id] ++;

            if (map[id] === 2) {
                results[l++] = accumulator[i];
            }
        }

        if (i < matches.length) {
            id = trie.getId(matches[i]);
            map[id] = map[id] ? map[id] : 0;
            map[id] ++;

            if (map[id] === 2) {
                results[l++] = matches[i];
            }
        }
    }

    return results;
};

module.exports = TrieSearch;


//# sourceURL=webpack://VLibras/./node_modules/trie-search/src/TrieSearch.js?
                                    

#60 JavaScript::Eval (size: 110, repeated: 1) - SHA256: 7be8f47da67e5076a699e173f38d31df4d77a5afe00c47bc71f775b704ebd30d

                                        (function() {
    module.exports = window["window"];
}());

//# sourceURL=webpack://VLibras/external_%22window%22?
                                    

#61 JavaScript::Eval (size: 3254, repeated: 1) - SHA256: 405fb85c2ffe3fd06412614c6c8564ed7ca5a4d55c64810191689f87f60e10b3

                                        /**
 * Expose `Emitter`.
 */

if (true) {
    module.exports = Emitter;
}

/**
 * Initialize a new `Emitter`.
 *
 * @api public
 */

function Emitter(obj) {
    if (obj) return mixin(obj);
};

/**
 * Mixin the emitter properties.
 *
 * @param {Object} obj
 * @return {Object}
 * @api private
 */

function mixin(obj) {
    for (var key in Emitter.prototype) {
        obj[key] = Emitter.prototype[key];
    }
    return obj;
}

/**
 * Listen on the given `event` with `fn`.
 *
 * @param {String} event
 * @param {Function} fn
 * @return {Emitter}
 * @api public
 */

Emitter.prototype.on =
    Emitter.prototype.addEventListener = function(event, fn) {
        this._callbacks = this._callbacks || {};
        (this._callbacks['$' + event] = this._callbacks['$' + event] || [])
        .push(fn);
        return this;
    };

/**
 * Adds an `event` listener that will be invoked a single
 * time then automatically removed.
 *
 * @param {String} event
 * @param {Function} fn
 * @return {Emitter}
 * @api public
 */

Emitter.prototype.once = function(event, fn) {
    function on() {
        this.off(event, on);
        fn.apply(this, arguments);
    }

    on.fn = fn;
    this.on(event, on);
    return this;
};

/**
 * Remove the given callback for `event` or all
 * registered callbacks.
 *
 * @param {String} event
 * @param {Function} fn
 * @return {Emitter}
 * @api public
 */

Emitter.prototype.off =
    Emitter.prototype.removeListener =
    Emitter.prototype.removeAllListeners =
    Emitter.prototype.removeEventListener = function(event, fn) {
        this._callbacks = this._callbacks || {};

        // all
        if (0 == arguments.length) {
            this._callbacks = {};
            return this;
        }

        // specific event
        var callbacks = this._callbacks['$' + event];
        if (!callbacks) return this;

        // remove all handlers
        if (1 == arguments.length) {
            delete this._callbacks['$' + event];
            return this;
        }

        // remove specific handler
        var cb;
        for (var i = 0; i < callbacks.length; i++) {
            cb = callbacks[i];
            if (cb === fn || cb.fn === fn) {
                callbacks.splice(i, 1);
                break;
            }
        }
        return this;
    };

/**
 * Emit `event` with the given args.
 *
 * @param {String} event
 * @param {Mixed} ...
 * @return {Emitter}
 */

Emitter.prototype.emit = function(event) {
    this._callbacks = this._callbacks || {};
    var args = [].slice.call(arguments, 1),
        callbacks = this._callbacks['$' + event];

    if (callbacks) {
        callbacks = callbacks.slice(0);
        for (var i = 0, len = callbacks.length; i < len; ++i) {
            callbacks[i].apply(this, args);
        }
    }

    return this;
};

/**
 * Return array of callbacks for `event`.
 *
 * @param {String} event
 * @return {Array}
 * @api public
 */

Emitter.prototype.listeners = function(event) {
    this._callbacks = this._callbacks || {};
    return this._callbacks['$' + event] || [];
};

/**
 * Check if this emitter has `event` handlers.
 *
 * @param {String} event
 * @return {Boolean}
 * @api public
 */

Emitter.prototype.hasListeners = function(event) {
    return !!this.listeners(event).length;
};


//# sourceURL=webpack://VLibras/../vlibras-player-webjs/node_modules/component-emitter/index.js?
                                    

#62 JavaScript::Eval (size: 872, repeated: 1) - SHA256: fe93f73e5c6131c308744017c43e5f81790ba2c185794173af6207f051d817ce

                                        var btn_close_Tpl = __webpack_require__( /*! ./settings-close-btn.html */ "./plugin/components/SettingsCloseBtn/settings-close-btn.html").default;
__webpack_require__( /*! ./settings-close-btn.scss */ "./plugin/components/SettingsCloseBtn/settings-close-btn.scss");

function SettingsCloseBtn() {
    this.closeScreen = null;
    this.element = null;
}

SettingsCloseBtn.prototype.load = function(element, closeScreen) {
    this.element = element;
    this.closeScreen = closeScreen;
    this.element.innerHTML = btn_close_Tpl;
    this.element.classList.add('vpw-btn-close');
    this.element.addEventListener('click', function() {
        this.closeScreen.closeAll();
        this.element.classList.remove('active')

    }.bind(this));

};



module.exports = SettingsCloseBtn;


//# sourceURL=webpack://VLibras/./plugin/components/SettingsCloseBtn/index.js?
                                    

#63 JavaScript::Eval (size: 4479, repeated: 1) - SHA256: e640dc4e2f12a40f6fe45d83912a9fdbef77cb7e16bc4c35cc45a5e57511d3a2

                                        /* jshint browser: true */

(function() {

    // We'll copy the properties below into the mirror div.
    // Note that some browsers, such as Firefox, do not concatenate properties
    // into their shorthand (e.g. padding-top, padding-bottom etc. -> padding),
    // so we have to list every single property explicitly.
    var properties = [
        'direction', // RTL support
        'boxSizing',
        'width', // on Chrome and IE, exclude the scrollbar, so the mirror div wraps exactly as the textarea does
        'height',
        'overflowX',
        'overflowY', // copy the scrollbar for IE

        'borderTopWidth',
        'borderRightWidth',
        'borderBottomWidth',
        'borderLeftWidth',
        'borderStyle',

        'paddingTop',
        'paddingRight',
        'paddingBottom',
        'paddingLeft',

        // https://developer.mozilla.org/en-US/docs/Web/CSS/font
        'fontStyle',
        'fontVariant',
        'fontWeight',
        'fontStretch',
        'fontSize',
        'fontSizeAdjust',
        'lineHeight',
        'fontFamily',

        'textAlign',
        'textTransform',
        'textIndent',
        'textDecoration', // might not make a difference, but better be safe

        'letterSpacing',
        'wordSpacing',

        'tabSize',
        'MozTabSize'

    ];

    var isBrowser = (typeof window !== 'undefined');
    var isFirefox = (isBrowser && window.mozInnerScreenX != null);

    function getCaretCoordinates(element, position, options) {
        if (!isBrowser) {
            throw new Error('textarea-caret-position#getCaretCoordinates should only be called in a browser');
        }

        var debug = options && options.debug || false;
        if (debug) {
            var el = document.querySelector('#input-textarea-caret-position-mirror-div');
            if (el) el.parentNode.removeChild(el);
        }

        // The mirror div will replicate the textarea's style
        var div = document.createElement('div');
        div.id = 'input-textarea-caret-position-mirror-div';
        document.body.appendChild(div);

        var style = div.style;
        var computed = window.getComputedStyle ? window.getComputedStyle(element) : element.currentStyle; // currentStyle for IE < 9
        var isInput = element.nodeName === 'INPUT';

        // Default textarea styles
        style.whiteSpace = 'pre-wrap';
        if (!isInput)
            style.wordWrap = 'break-word'; // only for textarea-s

        // Position off-screen
        style.position = 'absolute'; // required to return coordinates properly
        if (!debug)
            style.visibility = 'hidden'; // not 'display: none' because we want rendering

        // Transfer the element's properties to the div
        properties.forEach(function(prop) {
            if (isInput && prop === 'lineHeight') {
                // Special case for <input>s because text is rendered centered and line height may be != height
                style.lineHeight = computed.height;
            } else {
                style[prop] = computed[prop];
            }
        });

        if (isFirefox) {
            // Firefox lies about the overflow property for textareas: https://bugzilla.mozilla.org/show_bug.cgi?id=984275
            if (element.scrollHeight > parseInt(computed.height))
                style.overflowY = 'scroll';
        } else {
            style.overflow = 'hidden'; // for Chrome to not render a scrollbar; IE keeps overflowY = 'scroll'
        }

        div.textContent = element.value.substring(0, position);
        // The second special handling for input type="text" vs textarea:
        // spaces need to be replaced with non-breaking spaces - http://stackoverflow.com/a/13402035/1269037
        if (isInput)
            div.textContent = div.textContent.replace(/\s/g, '\u00a0');

        var span = document.createElement('span');
        // Wrapping must be replicated *exactly*, including when a long word gets
        // onto the next line, with whitespace at the end of the line before (#7).
        // The  *only* reliable way to do that is to copy the *entire* rest of the
        // textarea's content into the <span> created at the caret position.
        // For inputs, just '.' would be enough, but no need to bother.
        span.textContent = element.value.substring(position) || '.'; // || because a completely empty faux span doesn't render at all
        div.appendChild(span);

        var coordinates = {
            top: span.offsetTop + parseInt(computed['borderTopWidth']),
            left: span.offsetLeft + parseInt(computed['borderLeftWidth']),
            height: parseInt(computed['lineHeight'])
        };

        if (debug) {
            span.style.backgroundColor = '#aaa';
        } else {
            document.body.removeChild(div);
        }

        return coordinates;
    }

    if (true && typeof module.exports != 'undefined') {
        module.exports = getCaretCoordinates;
    } else if (isBrowser) {
        window.getCaretCoordinates = getCaretCoordinates;
    }

}());


//# sourceURL=webpack://VLibras/./node_modules/textarea-caret/index.js?
                                    

#64 JavaScript::Eval (size: 9029, repeated: 1) - SHA256: 9ac8426c0cfb72a3a69e05748dad92c2c305216793feff5a8a492d9b62f6bfa4

                                        var inherits = __webpack_require__( /*! inherits */ "./node_modules/inherits/inherits_browser.js");
var EventEmitter = __webpack_require__( /*! events */ "./node_modules/events/events.js").EventEmitter;

var settingsTpl = __webpack_require__( /*! ./settings.html */ "./plugin/components/Settings/settings.html").default;
__webpack_require__( /*! ./settings.scss */ "./plugin/components/Settings/settings.scss");
__webpack_require__( /*! ./switch.scss */ "./plugin/components/Settings/switch.scss");

function Settings(player, infoScreen, menu, dictionary, option, opacity) {
    this.visible = false;
    this.player = player;
    this.infoScreen = infoScreen;
    // this.btnClose = btnClose;
    this.menu = menu;
    this.dictionary = dictionary;

    enable = option.enableMoveWindow;
    opacity_user = opacity;
}

inherits(Settings, EventEmitter);

Settings.prototype.load = function(element) {
    this.menu = this.menu.element.querySelector('[settings-btn]').firstChild;

    this.element = element;
    this.element.innerHTML = settingsTpl;
    this.element.classList.add('vpw-settings');


    // Localism panel
    this.localism = this.element.querySelector('.vpw-content > .vpw-localism');

    this.dictionaryBtn = this.element.querySelector('.vpw-dict');


    // Close events

    // this.btnClose.element.firstChild.addEventListener('click',this.hide.bind(this))
    // Selected region
    this.selectedRegion = this.element.querySelector('.vpw-content > ul .vpw-localism');

    if (enable) {
        this.position = this.element.querySelector('.vpw-content > ul .vpw-position');
        this.position.style.display = 'block';
        this.position_op = this.element.querySelector('.vpw-content > ul .vpw-opacity');
        this.position_op.style.display = 'block';
    }

    this.selectedRegion._name = this.selectedRegion.querySelector('.vpw-abbrev');
    this.selectedRegion._flag = this.selectedRegion.querySelector('img.vpw-flag');
    this.selectedRegion.addEventListener('click', function() {
        this.localism.classList.toggle('active');
    }.bind(this));

    this.dictionaryBtn.addEventListener('click', function(event) {
        // console.log(event.target);
        this.loadingDic = this.element.querySelector('.vpw-controls-dictionary');
        if (!(this.loadingDic.classList.contains('vpw-loading-dictionary'))) {
            this.element.classList.remove('active');
            this.dictionary.show();
            this.player.pause();
        }
    }.bind(this));

    var OnLeft = 1;
    var selector = this.element.querySelector('input[name=checkbox]')

    this.element.querySelector('.vpw-content > ul .vpw-position')
        .addEventListener('click', function() {
            if (OnLeft) {
                window.dispatchEvent(new CustomEvent('vp-widget-wrapper-set-side', {
                    detail: {
                        right: true
                    }
                }));
                OnLeft = 0;
                selector.checked = false;
            } else {
                window.dispatchEvent(new CustomEvent('vp-widget-wrapper-set-side', {
                    detail: {
                        right: false
                    }
                }));
                OnLeft = 1;
                selector.checked = true;
            }
        }.bind(this));

    //

    this.opacity = this.element.querySelector('.vpw-content > ul .vpw-opacity');
    this.opacity_button_left = this.opacity.querySelector('img.arrow-left-opac');
    this.opacity_button_right = this.opacity.querySelector('img.arrow-right-opac');
    this.percent = this.opacity.querySelector('span.vpw-percent');


    var opacity = opacity_user;
    this.percent.innerHTML = opacity * 100 + '%';

    this.opacity_button_right.addEventListener('click', function() {

        if (opacity) {
            opacity -= 0.25
        } else {
            opacity = 0
        }
        this.percent.innerHTML = opacity * 100 + '%';
        window.dispatchEvent(new CustomEvent('vw-change-opacity', {
            detail: 1 - opacity
        }));

    }.bind(this));

    this.opacity_button_left.addEventListener('click', function() {

        if (opacity < 1.0) {
            opacity += 0.25
        } else {
            opacity = 1.0
        }

        if (opacity > 1) {
            opacity = 1.0
        }

        this.percent.innerHTML = opacity * 100 + '%';
        window.dispatchEvent(new CustomEvent('vw-change-opacity', {
            detail: 1 - opacity
        }));

    }.bind(this));


    this.element.querySelector('.vpw-content > ul .vpw-about')
        .addEventListener('click', function() {
            this.hide(false);
            this.infoScreen.show();
        }.bind(this));


    // About button
    this.element.querySelector('.vpw-content > ul .vpw-about')
        .addEventListener('click', function() {
            this.hide(false);
            this.infoScreen.show();
        }.bind(this));


    // National
    this.national = this.localism.querySelector('.vpw-national');
    this.national._data = nationalData;
    this.national.classList.add('vpw-selected');
    this.national.addEventListener('click', function() {
        this.setRegion(this.national);
    }.bind(this));

    // Selected region
    this.region = this.national;

    // Creates regions grid
    var regions = this.localism.querySelector('.vpw-regions');
    var regionHTML = __webpack_require__( /*! ./region.html */ "./plugin/components/Settings/region.html").default;

    for (var i in regionsData) {
        var data = regionsData[i];

        var region = document.createElement('div');
        region.classList.add('vpw-container-regions');
        region.innerHTML = regionHTML;

        region._data = data;
        region._setRegion = this.setRegion.bind(this);

        region.querySelector('img.vpw-flag').setAttribute("data-src", data.flag);
        region.querySelector('.vpw-name').innerHTML = data.name;
        region.addEventListener('click', function() {
            this._setRegion(this);
        });

        regions.appendChild(region);
    }

    // Elements to apply blur filter
    this.gameContainer = document.querySelector('div#gameContainer');
    this.controlsElement = document.querySelector('.vpw-controls');

    // this.hide();
};

Settings.prototype.setRegion = function(region) {
    // Deactivate localism panel
    this.localism.classList.remove('active');
    // this.menu.element.firstChild.classList.add('active');


    // Select new region
    this.region.classList.remove('vpw-selected');
    this.region = region;
    this.region.classList.add('vpw-selected');

    // Updates selected region
    this.selectedRegion._name.innerHTML = this.region._data.name;
    if (window.plugin.rootPath) {
        this.selectedRegion._flag.src = window.plugin.rootPath + '/' + this.region._data.flag;
    } else {
        this.selectedRegion._flag.src = this.region._data.flag;
    }

    // Sends to player
    this.player.setRegion(this.region._data.path);
};

Settings.prototype.toggle = function() {
    if (this.visible) this.hide();
    else this.show();
};

Settings.prototype.hide = function(menuOn) {
    this.visible = false;
    this.element.classList.remove('active');
    this.localism.classList.remove('active');
    // this.btnClose.element.firstChild.style.visibility = 'hidden';
    if (menuOn) {
        this.menu.classList.add('active');
    }

    // Removes blur filter
    this.gameContainer.classList.remove('vpw-blur');
    this.controlsElement.classList.remove('vpw-blur');

    this.emit('hide');
};

Settings.prototype.showMenu = function() {
    this.menu.classList.add('active');
};

Settings.prototype.show = function() {
    this.visible = true;
    this.element.classList.add('active');
    // this.btnClose.element.firstChild.style.visibility = 'visible';
    this.menu.classList.remove('active');


    // Apply blur filter
    this.gameContainer.classList.add('vpw-blur');
    this.controlsElement.classList.add('vpw-blur');

    this.emit('show');
};

module.exports = Settings;

var nationalData = {
    name: 'BR',
    path: '',
    flag: 'assets/brazil.png'
};
var regionsData = [{
    name: 'AC',
    path: 'AC',
    flag: 'assets/1AC.png'
}, {
    name: 'MA',
    path: 'MA',
    flag: 'assets/10MA.png'
}, {
    name: 'RJ',
    path: 'RJ',
    flag: 'assets/19RJ.png'
}, {
    name: 'AL',
    path: 'AL',
    flag: 'assets/2AL.png'
}, {
    name: 'MT',
    path: 'MT',
    flag: 'assets/11MT.png'
}, {
    name: 'RN',
    path: 'RN',
    flag: 'assets/20RN.png'
}, {
    name: 'AP',
    path: 'AP',
    flag: 'assets/3AP.png'
}, {
    name: 'MS',
    path: 'MS',
    flag: 'assets/12MS.png'
}, {
    name: 'RS',
    path: 'RS',
    flag: 'assets/21RS.png'
}, {
    name: 'AM',
    path: 'AM',
    flag: 'assets/4AM.png'
}, {
    name: 'MG',
    path: 'MG',
    flag: 'assets/13MG.png'
}, {
    name: 'RO',
    path: 'RO',
    flag: 'assets/22RO.png'
}, {
    name: 'BA',
    path: 'BA',
    flag: 'assets/5BA.png'
}, {
    name: 'PA',
    path: 'PA',
    flag: 'assets/14PA.png'
}, {
    name: 'RR',
    path: 'RR',
    flag: 'assets/23RR.png'
}, {
    name: 'DF',
    path: 'DF',
    flag: 'assets/7DF.png'
}, {
    name: 'PB',
    path: 'PB',
    flag: 'assets/15PB.png'
}, {
    name: 'SC',
    path: 'SC',
    flag: 'assets/24SC.png'
}, {
    name: 'CE',
    path: 'CE',
    flag: 'assets/6CE.png'
}, {
    name: 'PR',
    path: 'PR',
    flag: 'assets/16PR.png'
}, {
    name: 'SP',
    path: 'SP',
    flag: 'assets/25SP.png'
}, {
    name: 'ES',
    path: 'ES',
    flag: 'assets/8ES.png'
}, {
    name: 'PE',
    path: 'PE',
    flag: 'assets/17PE.png'
}, {
    name: 'SE',
    path: 'SE',
    flag: 'assets/26SE.png'
}, {
    name: 'GO',
    path: 'GO',
    flag: 'assets/9GO.png'
}, {
    name: 'PI',
    path: 'PI',
    flag: 'assets/18PI.png'
}, {
    name: 'TO',
    path: 'TO',
    flag: 'assets/27TO.png'
}];


//# sourceURL=webpack://VLibras/./plugin/components/Settings/index.js?
                                    

#65 JavaScript::Eval (size: 809, repeated: 1) - SHA256: a0a678b0cdcf55a3dfa15c9b0343b29774951a04de5e9d2dda02953255e40686

                                        var content = __webpack_require__( /*! !../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./suggestion-screen.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./plugin/components/SuggestionScreen/suggestion-screen.scss");

if (typeof content === 'string') {
    content = [
        [module.i, content, '']
    ];
}

var options = {}

options.insert = "head";
options.singleton = false;

var update = __webpack_require__( /*! ../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js")(content, options);

if (content.locals) {
    module.exports = content.locals;
}


//# sourceURL=webpack://VLibras/./plugin/components/SuggestionScreen/suggestion-screen.scss?
                                    

#66 JavaScript::Eval (size: 343, repeated: 1) - SHA256: eca68570448b6b95935e9d6732b9b26dd3c8381c57e568be84c591829e721e46

                                        __webpack_require__.r(__webpack_exports__);
/* harmony default export */
__webpack_exports__["default"] = ("<img class=\"vpw-settings-btn-menu\" data-src=\"assets/component-menu.png\">\n<img class=\"vpw-settings-btn-close\" data-src=\"assets/close.svg\">\n");

//# sourceURL=webpack://VLibras/./plugin/components/SettingsBtn/settings-btn.html?
                                    

#67 JavaScript::Eval (size: 2871, repeated: 1) - SHA256: b0c8cdfff871b116f585ae2b576aff876f17e349ea3616ae4eba2cd9cb63d782

                                        var inherits = __webpack_require__( /*! inherits */ "./node_modules/inherits/inherits_browser.js");
var EventEmitter = __webpack_require__( /*! events */ "./node_modules/events/events.js").EventEmitter;

var infoScreenTpl = __webpack_require__( /*! ./info-screen.html */ "./plugin/components/InfoScreen/info-screen.html").default;
__webpack_require__( /*! ./info-screen.scss */ "./plugin/components/InfoScreen/info-screen.scss");

function InfoScreen(box) {
    // this.settingBtnClose = settingBtnClose;
    this.visible = false;
    this.box = box;
}

inherits(InfoScreen, EventEmitter);

InfoScreen.prototype.load = function(element) {
    this.element = element;
    this.element.innerHTML = infoScreenTpl;
    this.element.classList.add('vpw-info-screen');

    var main = this.element.querySelector('#vpw-info-main');
    var realizadores = this.element.querySelector('#vpw-info-realizadores');
    var left = this.element.querySelector('.vpw-arrow-left');
    var right = this.element.querySelector('.vpw-arrow-right');
    var bullets = this.element.querySelectorAll('.vpw-info-bullet');
    var bullet_src_imgs = {
        first: bullets[0].attributes['data-src'].value,
        second: bullets[1].attributes['data-src'].value
    };






    left.addEventListener('click', function() {
        realizadores.classList.remove('active');
        main.classList.add('active');

        this.classList.remove('active');
        right.classList.add('active');
        srcTmp = bullets[0].src;
        bullets[0].src = bullets[1].src;
        bullets[1].src = srcTmp;
        // bullets[0].classList.add('active');
    });

    right.addEventListener('click', function() {
        main.classList.remove('active');
        realizadores.classList.add('active');

        this.classList.remove('active');
        left.classList.add('active');

        srcTmp = bullets[0].src;
        bullets[0].src = bullets[1].src;
        bullets[1].src = srcTmp;
    });

    // this.settingBtnClose.element.firstChild.addEventListener('click', function() {
    //   this.hide();
    //   this.settingBtnClose.element.firstChild.style.visibility = 'hidden;'
    // }.bind(this));

    // this.hide();
};

InfoScreen.prototype.toggle = function() {
    if (this.visible) this.hide();
    else this.show();
};

InfoScreen.prototype.hide = function() {
    this.visible = false;
    // this.settingBtnClose.element.firstChild.style.visibility = 'hidden';
    // this.box.element.querySelector('[settings-btn]').style.visibility = 'visible';
    this.element.classList.remove('active');
    this.emit('hide');
};

InfoScreen.prototype.show = function() {
    // this.settingBtnClose.element.firstChild.style.visibility = 'visible';
    // this.box.element.querySelector('[settings-btn]').style.visibility = 'hidden';
    this.visible = true;
    this.element.classList.add('active');
    this.emit('show');
};

module.exports = InfoScreen;


//# sourceURL=webpack://VLibras/./plugin/components/InfoScreen/index.js?
                                    

#68 JavaScript::Eval (size: 5349, repeated: 1) - SHA256: 00e0f6aeb0afd82ac0646a4bac3168c8a4c904cc537c12cc99c66bf842aa483c

                                        exports = module.exports = __webpack_require__( /*! ../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js")(false);
// Module
exports.push([module.i, "[vp] .vpw-controls {\n  display: -webkit-box;\n  display: -webkit-flex;\n  display: -moz-flex;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-align: center;\n  -ms-flex-align: center;\n  -webkit-align-items: center;\n  -moz-align-items: center;\n  align-items: center;\n  width: calc(100% - 10px);\n  height: 60px;\n  background-size: 100% 100%;\n  background: white;\n  width: 100%; }\n  [vp] .vpw-controls .vpw-controls-subtitles, [vp] .vpw-controls .vpw-controls-slider {\n    margin: 0 9px;\n    cursor: pointer; }\n  [vp] .vpw-controls .vpw-controls-play .vpw-component-play {\n    display: block;\n    margin: 0 8.5px;\n    cursor: pointer; }\n  [vp] .vpw-controls .vpw-controls-play .vpw-component-pause {\n    display: none; }\n  [vp] .vpw-controls .vpw-controls-play .vpw-component-restart {\n    display: none; }\n  [vp] .vpw-controls.vpw-playing .vpw-controls-play .vpw-component-play {\n    display: none; }\n  [vp] .vpw-controls.vpw-playing .vpw-controls-play .vpw-component-pause {\n    display: block;\n    margin: 0 11px;\n    cursor: pointer; }\n  [vp] .vpw-controls.vpw-playing .vpw-controls-play .vpw-component-restart {\n    display: none; }\n  [vp] .vpw-controls.vpw-stopped .vpw-controls-play .vpw-component-play {\n    display: none; }\n  [vp] .vpw-controls.vpw-stopped .vpw-controls-play .vpw-component-pause {\n    display: none; }\n  [vp] .vpw-controls.vpw-stopped .vpw-controls-play .vpw-component-restart {\n    display: block;\n    margin: 0 2px;\n    cursor: pointer; }\n  [vp] .vpw-controls.vpw-subtitles .vpw-controls-subtitles .vpw-legenda-habilitar {\n    display: block; }\n  [vp] .vpw-controls.vpw-subtitles .vpw-controls-subtitles .vpw-legenda-desabilitar {\n    display: none; }\n  [vp] .vpw-controls .vpw-controls-subtitles .vpw-legenda-habilitar {\n    display: none; }\n  [vp] .vpw-controls .vpw-controls-subtitles .vpw-legenda-desabilitar {\n    display: block; }\n\n@-webkit-keyframes spin {\n  0% {\n    -webkit-transform: rotate(0deg);\n    /* Chrome, Opera 15+, Safari 3.1+ */\n    -ms-transform: rotate(0deg);\n    /* IE 9 */\n    transform: rotate(0deg);\n    /* Firefox 16+, IE 10+, Opera */ }\n  100% {\n    -webkit-transform: rotate(360deg);\n    /* Chrome, Opera 15+, Safari 3.1+ */\n    -ms-transform: rotate(360deg);\n    /* IE 9 */\n    transform: rotate(360deg);\n    /* Firefox 16+, IE 10+, Opera */ } }\n\n@keyframes spin {\n  0% {\n    -webkit-transform: rotate(0deg);\n    /* Chrome, Opera 15+, Safari 3.1+ */\n    -ms-transform: rotate(0deg);\n    /* IE 9 */\n    transform: rotate(0deg);\n    /* Firefox 16+, IE 10+, Opera */ }\n  100% {\n    -webkit-transform: rotate(360deg);\n    /* Chrome, Opera 15+, Safari 3.1+ */\n    -ms-transform: rotate(360deg);\n    /* IE 9 */\n    transform: rotate(360deg);\n    /* Firefox 16+, IE 10+, Opera */ } }\n\n[vp] .vpw-speed-default {\n  border: 1px solid grey;\n  border-radius: 3px 3px 3px 3px;\n  padding: 3px 4px;\n  height: 100%;\n  color: grey;\n  font-size: 15px;\n  cursor: pointer;\n  font-family: 'Open Sans', sans-serif; }\n\n[vp] .vpw-img-default {\n  display: none;\n  padding: 2px;\n  padding-left: 2.2px;\n  cursor: pointer; }\n\n[vp] .vpw-border-default {\n  display: none;\n  border: 1px solid #999999;\n  border-radius: 0px 0px 3px 3px; }\n\n[vp] .vpw-elem-speed {\n  display: none;\n  position: absolute;\n  bottom: 22px;\n  cursor: pointer; }\n\n[vp] .vpw-block-speed {\n  list-style-type: none;\n  background-color: #003F86;\n  color: white;\n  font-size: 10px;\n  width: 25.5px;\n  text-align: center; }\n\n[vp] .vpw-block-speed:hover {\n  color: #67C8D5; }\n\n[vp] .vpw-controls-speed {\n  position: relative;\n  -webkit-touch-callout: none;\n  -webkit-user-select: none;\n  -khtml-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none; }\n\n[vp] .vpw-controls-speed-number {\n  width: 25.5px;\n  padding-left: 0px;\n  margin-top: 0px;\n  margin-bottom: 0px;\n  font-family: 'Open Sans', sans-serif; }\n\n[vp] .vpw-block-speed-3 {\n  border-radius: 5px 5px 0px 0px; }\n\n[vp] .vpw-controls-slider {\n  -webkit-appearance: none;\n  width: 50%;\n  margin: 2.5px 0;\n  height: 7px;\n  background-color: transparent; }\n  [vp] .vpw-controls-slider .vpw-slider {\n    width: 100%;\n    height: 7px; }\n    [vp] .vpw-controls-slider .vpw-slider.noUi-target {\n      box-shadow: none;\n      border: 0; }\n    [vp] .vpw-controls-slider .vpw-slider.noUi-connect {\n      background-color: #003F86; }\n    [vp] .vpw-controls-slider .vpw-slider .noUi-background {\n      background-color: #B8B8B8;\n      box-shadow: none; }\n    [vp] .vpw-controls-slider .vpw-slider .noUi-origin {\n      border-radius: 1px; }\n    [vp] .vpw-controls-slider .vpw-slider .noUi-handle {\n      width: 0px;\n      height: 0px;\n      left: -8px;\n      top: -8px;\n      border-radius: 50%; }\n    [vp] .vpw-controls-slider .vpw-slider .noUi-handle:after, [vp] .vpw-controls-slider .vpw-slider .noUi-handle:before {\n      display: none; }\n", ""]);


//# sourceURL=webpack://VLibras/./plugin/components/Controls/controls.scss?./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js
                                    

#69 JavaScript::Eval (size: 6654, repeated: 1) - SHA256: 6e4422fdb6a33f2a82f718422059e923bff1f6d4ca45b1be4d3ec1ea8d7d397f

                                        var template = __webpack_require__( /*! ./suggestion-screen.html */ "./plugin/components/SuggestionScreen/suggestion-screen.html").default;
__webpack_require__( /*! ./suggestion-screen.scss */ "./plugin/components/SuggestionScreen/suggestion-screen.scss");

var TrieSearch = __webpack_require__( /*! trie-search */ "./node_modules/trie-search/index.js");
var getCaretCoordinates = __webpack_require__( /*! textarea-caret */ "./node_modules/textarea-caret/index.js");

function SuggestionScreen(player) {
    this.element = null;
    this.player = player;
    this.signsList = [];
}

function getInputSelection(el) {
    var start = 0,
        end = 0;

    if (!el) {
        return {
            start: start,
            end: end
        };
    }

    if (
        typeof el.selectionStart == "number" &&
        typeof el.selectionEnd == "number"
    ) {
        return {
            start: el.selectionStart,
            end: el.selectionEnd
        };
    }

    if (!document) {
        return {
            start: start,
            end: end
        };
    }

    var range = document.selection.createRange();

    if (!range && range.parentElement() !== el) {
        return {
            start: start,
            end: end
        };
    }

    var len = el.value.length;
    var normalizedValue = el.value.replace(/\r\n/g, "\n");
    var textInputRange = el.createTextRange();

    textInputRange.moveToBookmark(range.getBookmark());

    var endRange = el.createTextRange();

    endRange.collapse(false);

    if (textInputRange.compareEndPoints("StartToEnd", endRange) > -1) {
        start = end = len;
    } else {
        start = -textInputRange.moveStart("character", -len);
        start += normalizedValue.slice(0, start).split("\n").length - 1;

        if (textInputRange.compareEndPoints("EndToEnd", endRange) > -1) {
            end = len;
        } else {
            end = -textInputRange.moveEnd("character", -len);
            end += normalizedValue.slice(0, end).split("\n").length - 1;
        }
    }

    return {
        start: start,
        end: end
    };
}

const getWordBySelectionIndex = (sentence, index) => {
    if (sentence.charAt(index) === " ")
        return {
            wordToSuggest: "",
            begin: 0,
            newEnd: 0
        };

    const lastSpaceBeforeSelection = sentence
        .substring(0, index + 1)
        .lastIndexOf(" ");
    const lastIndexOfSpace = sentence
        .substring(index + 1, sentence.length)
        .indexOf(" ");
    const firstSpaceAfterSelection =
        lastIndexOfSpace === -1 ? sentence.length : index + 1 + lastIndexOfSpace;

    return {
        wordToSuggest: sentence.substring(
            lastSpaceBeforeSelection + 1,
            firstSpaceAfterSelection
        ),
        begin: lastSpaceBeforeSelection + 1,
        newEnd: firstSpaceAfterSelection,
    };
};

const replaceByStartAndEnd = (string, replacement, start, end) => {
    return `${string.substring(0, start)}${replacement}${string.substring(
    end,
    string.length
  )}`;
};

SuggestionScreen.prototype.load = function(element) {
    this.element = element;
    this.element.innerHTML = template;

    this.rate = null;
    this.textElement = this.element.querySelector(".vp-text");

    const send = this.element.querySelector(".vp-send-button");
    const visualize = this.element.querySelector(".vp-visualize-signal-button");
    const close = this.element.querySelector(".vp-close-button");
    const dropdownSuggest = this.element.querySelector(".vp-dropdown-suggest");
    let actualBegin = 0;
    let actualEnd = 0;

    send.addEventListener("click", () => {
        window.plugin.sendReview(this.rate, this.textElement.value);
    });

    close.addEventListener("click", () => {
        this.hide();
    });

    const setOption = (name) => {
        this.textElement.value = replaceByStartAndEnd(
            this.textElement.value,
            name,
            actualBegin,
            actualEnd
        ).toUpperCase();

        dropdownSuggest.classList.remove("vp-enabled");
    };

    visualize.addEventListener("click", () => {
        let openAfterEnd = true;
        this.hide();
        this.player.play(this.textElement.value);
        this.player.on("gloss:end", () => {
            if (openAfterEnd) this.show();
            openAfterEnd = false;
        });
    });

    const buildSelect = (listOfSuggestions, end) => {
        const caret = getCaretCoordinates(this.textElement, end);

        listOfSuggestions.map((item) => {
            const opt = document.createElement("li");
            opt.appendChild(document.createTextNode(item.name));
            opt.value = item.name;
            opt.classList.add("vp-dropdown-item");
            opt.onclick = () => {
                setOption(item.name);
            };
            dropdownSuggest.appendChild(opt);
        });

        if (listOfSuggestions.length === 1) dropdownSuggest.style.height = "24px";
        else if (listOfSuggestions.length === 2)
            dropdownSuggest.style.height = "40px";
        else dropdownSuggest.style.height = "54px";

        dropdownSuggest.classList.add("vp-enabled");
        let left = caret.left + 25;
        if (left > 180) left = left - 50;
        dropdownSuggest.style.left = left.toString() + "px";
        dropdownSuggest.style.top = (caret.top + 60).toString() + "px";
    };

    const setWordToReplace = (begin, newEnd) => {
        actualBegin = begin;
        actualEnd = newEnd;
    };

    this.textElement.addEventListener("input", () => {
        const {
            end
        } = getInputSelection(this.textElement);

        const {
            wordToSuggest, begin, newEnd
        } = getWordBySelectionIndex(
            this.textElement.value,
            end - 1
        );
        setWordToReplace(begin, newEnd);

        while (dropdownSuggest.firstChild) {
            dropdownSuggest.removeChild(dropdownSuggest.firstChild);
        }

        if (wordToSuggest && wordToSuggest.length >= 2) {
            var ts = new TrieSearch("name");
            ts.addAll(this.signsList);
            const listOfSuggestions = ts.get(wordToSuggest);
            if (listOfSuggestions.length == 0)
                dropdownSuggest.classList.remove("vp-enabled");
            else buildSelect(listOfSuggestions, end);
        } else {
            dropdownSuggest.classList.remove("vp-enabled");
        }
    });

    var xhr = new XMLHttpRequest();
    xhr.open("get", "https://repository-dth.vlibras.gov.br/api/signs", true);
    xhr.responseType = "text";
    xhr.onload = function() {
        if (xhr.status == 200) {
            this.signsList = JSON.parse(xhr.response).map((item) => ({
                name: item
            }));
        } else {
            console.error("Bad answer for get signs list, status: " + xhr.status);
        }
    }.bind(this);
    xhr.send();
};

SuggestionScreen.prototype.setGloss = function(gloss) {
    this.textElement.value = gloss;
};

SuggestionScreen.prototype.show = function(rate) {
    this.element.querySelector(".vp-text").style.display = "block";
    this.rate = rate;
    this.element.classList.add("vp-enabled");
};

SuggestionScreen.prototype.hide = function() {
    this.element.querySelector(".vp-text").style.display = "none";
    this.element.classList.remove("vp-enabled");
};

module.exports = SuggestionScreen;


//# sourceURL=webpack://VLibras/./plugin/components/SuggestionScreen/index.js?
                                    

#70 JavaScript::Eval (size: 522, repeated: 1) - SHA256: befa43a58478da5292bb402d8bf6591da90c603918fb0b2ff72f81fc11e1b42c

                                        __webpack_require__.r(__webpack_exports__);
/* harmony default export */
__webpack_exports__["default"] = ("<span class=\"vp-button-change-avatar\">\n  <img class=\"change-avatar-icon avatar-male\" data-src=\"assets/Icaro-azul.svg\" />\n  <img class=\"change-avatar-icon avatar-female active\" data-src=\"assets/Hozana-azul.svg\" />\n  <img class=\"change-avatar-icon avatar-children\" data-src=\"assets/Guga-azul.svg\" />\n</span>\n");

//# sourceURL=webpack://VLibras/./plugin/components/ChangeAvatar/change-avatar.html?
                                    

#71 JavaScript::Eval (size: 313, repeated: 1) - SHA256: 7ad6f6efb2b25c01b3357b660d5137688fa103b3cc68777c2aa9a3926cad2e23

                                        var window = __webpack_require__( /*! window */ "window");
var Player = __webpack_require__( /*! ./Player.js */ "../vlibras-player-webjs/src/Player.js");

var VLibras = {
    Player: Player
};

window.VLibras = VLibras;
module.exports = VLibras;


//# sourceURL=webpack://VLibras/../vlibras-player-webjs/src/index.js?
                                    

#72 JavaScript::Eval (size: 2368, repeated: 1) - SHA256: 1d100ea1dd10d6af8a33c8f9e519293ec5e86b7941fb43afc8faafcb568de357

                                        exports = module.exports = __webpack_require__( /*! ../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js")(false);
// Module
exports.push([module.i, "[vp] [vp-suggestion-screen] {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  position: absolute;\n  top: 45px;\n  right: 0;\n  bottom: 0;\n  width: 100%;\n  padding: 16px;\n  background-color: white;\n  z-index: 3;\n  left: 100%;\n  transition: left 0.4s ease-in;\n  /* Track */\n  /* Handle */\n  /* Handle on hover */ }\n  [vp] [vp-suggestion-screen] ::-webkit-scrollbar {\n    width: 10px; }\n  [vp] [vp-suggestion-screen] ::-webkit-scrollbar-track {\n    background: #d1d1d1f1 !important; }\n  [vp] [vp-suggestion-screen] ::-webkit-scrollbar-thumb {\n    background: #8b8b99; }\n  [vp] [vp-suggestion-screen] ::-webkit-scrollbar-thumb:hover {\n    background: #555; }\n  [vp] [vp-suggestion-screen] .vp-dropdown-suggest {\n    display: none;\n    font-family: \"Open Sans\", sans-serif; }\n    [vp] [vp-suggestion-screen] .vp-dropdown-suggest.vp-enabled {\n      display: block;\n      position: absolute;\n      height: 54px;\n      width: 120px;\n      overflow: hidden auto;\n      color: white;\n      background: #003f86;\n      border-radius: 3px;\n      font-weight: 600;\n      list-style-type: none;\n      padding: 0px; }\n  [vp] [vp-suggestion-screen] .vp-dropdown-item {\n    cursor: pointer;\n    font-size: 12px;\n    margin: 5px 0px -4px 6px; }\n    [vp] [vp-suggestion-screen] .vp-dropdown-item:hover {\n      color: #80b6f3; }\n  [vp] [vp-suggestion-screen] .vp-title {\n    text-align: center;\n    font-size: 14px;\n    font-weight: bold;\n    color: #003f86; }\n  [vp] [vp-suggestion-screen] .vp-text {\n    display: none;\n    flex: 1;\n    align-self: stretch;\n    margin-top: 10px;\n    margin-left: 20px;\n    margin-right: 20px;\n    padding: 8px 10px 6px;\n    font-size: 12px;\n    border: none;\n    border-radius: 12px;\n    background-color: #efeff2; }\n  [vp] [vp-suggestion-screen] .vp-close-button {\n    margin-top: 8px; }\n  [vp] [vp-suggestion-screen].vp-enabled {\n    left: 0;\n    transition: left 0.4s ease-out 0.8s; }\n", ""]);


//# sourceURL=webpack://VLibras/./plugin/components/SuggestionScreen/suggestion-screen.scss?./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js
                                    

#73 JavaScript::Eval (size: 2527, repeated: 1) - SHA256: d46e1a98df375571d2af398f4ecfc0c5d3dfec538a37ad4c4cd1053856443afa

                                        __webpack_require__.r(__webpack_exports__);
/* harmony default export */
__webpack_exports__["default"] = ("<div class=\"vpw-content\">\n    <ul>\n        <li class=\"vpw-localism vpw-clickable\">\n            <div class=\"vpw-container-localism\">\n                <span class=\"vpw-name\">Regionalismo</span>\n                <img class=\"vpw-flag\" data-src=\"assets/brazil.png\">\n                <img class=\"vpw-flag2\" data-src=\"\" style=\"display: none\">\n                <span class=\"vpw-abbrev\">BR</span>\n                <!-- <img class=\"arrow\" data-src=\"assets/expander.png\"> -->\n            </div>\n        </li>\n        <li class=\"vpw-dict vpw-clickable vpw-loading-dictionary\">\n            <div class=\"vpw-container-dict\">\n                <span class=\"vpw-controls-dictionary vpw-loading-dictionary\"></span>\n            </div>\n        </li>\n        <li class=\"vpw-position vpw-clickable\">\n            <div class=\"vpw-container-position\">\n                <span class=\"vpw-name\">Posicionamento da tela</span>\n                <label class=\"vpw-switch\">\n                    <input checked disabled type=\"checkbox\" name=\"checkbox\">\n                    <span class=\"vpw-slider-check vpw-round\"></span>\n                </label>\n            </div>\n        </li>\n\n        <li class=\"vpw-opacity vpw-clickable\">\n            <div class=\"vpw-container-opacity\">\n                <span class=\"vpw-name\">Transpar�ncia</span>\n                <img class=\"arrow-left-opac\" data-src=\"assets/arrow-left-opac.png\">\n                <span class=\"vpw-percent\">  </span>\n                <img class=\"arrow-right-opac\" data-src=\"assets/arrow-right-opac.png\">\n\n\n            </div>\n        </li>\n\n\n        <li class=\"vpw-about vpw-clickable\">\n            <div class=\"vpw-container-about\">\n                <span class=\"vpw-name\">Sobre</span>\n            </div>\n        </li>\n    </ul>\n\n    <div class=\"vpw-localism\">\n        <div class=\"vpw-national vpw-clickable\">\n            <img class=\"vpw-flag\" data-src=\"assets/brazil.png\">\n            <span class=\"vpw-name\">BR</span>\n        </div>\n        <div class=\"vpw-regions\"></div>\n    </div>\n    <div class=\"vpw-vlibras-logo\">\n        <span class=\"vpw-vlibras-span\">VLIBRAS</span>\n        <img class=\"vpw-logo\" data-src=\"assets/logoicon.png\">\n    </div>\n</div>\n\n<div class=\"vpw-wall\"></div>");

//# sourceURL=webpack://VLibras/./plugin/components/Settings/settings.html?
                                    

#74 JavaScript::Eval (size: 789, repeated: 1) - SHA256: c736c2547ee54b22e29d09857114b68686400184aeaad91afe0c8559aa30a900

                                        var content = __webpack_require__( /*! !../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./change-avatar.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./plugin/components/ChangeAvatar/change-avatar.scss");

if (typeof content === 'string') {
    content = [
        [module.i, content, '']
    ];
}

var options = {}

options.insert = "head";
options.singleton = false;

var update = __webpack_require__( /*! ../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js")(content, options);

if (content.locals) {
    module.exports = content.locals;
}


//# sourceURL=webpack://VLibras/./plugin/components/ChangeAvatar/change-avatar.scss?
                                    

#75 JavaScript::Eval (size: 8775, repeated: 1) - SHA256: 49c4dc925350f91563f7bc29c49a3a96f5ce42c792bac63c73d80ae163a2aaf2

                                        var VLibras = __webpack_require__( /*! vlibras */ "../vlibras-player-webjs/src/index.js");

var Settings = __webpack_require__( /*! components/Settings */ "./plugin/components/Settings/index.js");
var SettingsBtn = __webpack_require__( /*! components/SettingsBtn */ "./plugin/components/SettingsBtn/index.js");
var InfoScreen = __webpack_require__( /*! components/InfoScreen */ "./plugin/components/InfoScreen/index.js");
var Dictionary = __webpack_require__( /*! components/Dictionary */ "./plugin/components/Dictionary/index.js");
var Controls = __webpack_require__( /*! components/Controls */ "./plugin/components/Controls/index.js");

var MessageBox = __webpack_require__( /*! components/MessageBox */ "./plugin/components/MessageBox/index.js");
var Box = __webpack_require__( /*! components/Box */ "./plugin/components/Box/index.js");
var SettingsCloseBtn = __webpack_require__( /*! components/SettingsCloseBtn */ "./plugin/components/SettingsCloseBtn/index.js");
var CloseScreen = __webpack_require__( /*! components/CloseScreen */ "./plugin/components/CloseScreen/index.js");
var RateButton = __webpack_require__( /*! components/RateButton */ "./plugin/components/RateButton/index.js");
var RateBox = __webpack_require__( /*! components/RateBox */ "./plugin/components/RateBox/index.js");
var SuggestionButton = __webpack_require__( /*! components/SuggestionButton */ "./plugin/components/SuggestionButton/index.js");
var SuggestionScreen = __webpack_require__( /*! components/SuggestionScreen */ "./plugin/components/SuggestionScreen/index.js");
var ChangeAvatar = __webpack_require__( /*! components/ChangeAvatar */ "./plugin/components/ChangeAvatar/index.js");

var url = __webpack_require__( /*! url-join */ "./node_modules/url-join/lib/url-join.js");

__webpack_require__( /*! ./scss/styles.scss */ "./plugin/scss/styles.scss");

function Plugin(options) {
    this.player = new VLibras.Player({
        onLoad: options.playWellcome && (() => this.player.playWellcome()),
        targetPath: options.rootPath ? url(options.rootPath, "/target") : "target",
        personalization: options.personalization,
        opacity: options.opacity,
        wrapper: options.wrapper,
    });

    this.opacity = options.opacity;
    this.wrapper = options.wrapper;

    if (this.opacity) {
        if (
            this.opacity == 0.0 ||
            this.opacity == 0.25 ||
            this.opacity == 0.5 ||
            this.opacity == 0.75 ||
            this.opacity == 1.0
        ) {
            this.opacity = parseFloat(this.opacity);
        } else {
            this.opacity = 0.0;
        }
    } else {
        this.opacity = 0.0;
    }

    this.rootPath = options.rootPath;
    this.personalization = options.personalization;
    this.element = document.querySelector("[vp]");

    this.dictionary = new Dictionary(this.player);
    this.controls = new Controls(this.player, this.dictionary);
    this.Box = new Box();
    this.info = new InfoScreen(this.Box);
    this.settings = new Settings(
        this.player,
        this.info,
        this.Box,
        this.dictionary,
        options,
        this.opacity
    );
    this.settingBtnClose = new SettingsCloseBtn();
    this.closeScreen = new CloseScreen(
        this.dictionary,
        this.info,
        this.settings,
        this.settingBtnClose
    );
    this.settingsBtn = new SettingsBtn(
        this.player,
        this.settings,
        this.settingBtnClose,
        options
    );
    this.messageBox = new MessageBox();
    this.suggestionScreen = new SuggestionScreen(this.player);
    this.suggestionButton = new SuggestionButton(this.suggestionScreen);
    this.rateBox = new RateBox(this.suggestionButton, this.messageBox);
    this.rateButton = new RateButton(this.rateBox);
    this.ChangeAvatar = new ChangeAvatar(this.player);

    this.loadingRef = null;

    this.messageBox.load(this.element.querySelector("[vp-message-box]"));
    this.rateButton.load(this.element.querySelector("[vp-rate-button]"));
    this.rateBox.load(this.element.querySelector("[vp-rate-box]"));
    this.suggestionButton.load(
        this.element.querySelector("[vp-suggestion-button]")
    );
    this.suggestionScreen.load(
        this.element.querySelector("[vp-suggestion-screen]")
    );
    //this.ChangeAvatar.load(this.element.querySelector('[vp-change-avatar]'));

    this.player.load(this.element);

    this.player.on("load", () => {
        if (this.personalization == undefined) {
            this.player.setPersonalization("");
        } else {
            this.player.setPersonalization(this.personalization);
        }

        if (this.wrapper)
            this.wrapper.style.background = `rgba(235,235,235, ${1 - this.opacity})`;

        this.controls.load(this.element.querySelector("[vp-controls]"));
        this.Box.load(this.element.querySelector("[vp-box]"));
        this.settingBtnClose.load(
            this.element
            .querySelector("[vp-box]")
            .querySelector("[settings-btn-close]"),
            this.closeScreen
        );
        this.settingsBtn.load(
            this.element.querySelector("[vp-box]").querySelector("[settings-btn]"), () => this.dictionary.load(
                this.element.querySelector("[vp-dictionary]"),
                this.closeScreen,
            ),
            this.element.querySelector("[vp-dictionary]"),
            this.rootPath
        );
        this.settings.load(this.element.querySelector("[vp-settings]"));
        this.info.load(this.element.querySelector("[vp-info-screen]"));
        this.ChangeAvatar.load(this.element.querySelector("[vp-change-avatar]"));

        this.loadImages();
    });

    this.info.on("show", () => {
        this.player.pause();
    });

    window.addEventListener("vp-widget-close", (event) => {
        this.player.stop();
        this.rateButton.hide();
        this.rateBox.hide();
        this.suggestionButton.hide();
        this.suggestionScreen.hide();
    });

    var control = 0;
    this.player.on("translate:start", () => {
        control = 1;
        this.ChangeAvatar.hide();
        this.rateButton.hide();
        this.controls.setProgress();
        this.loadingRef = this.messageBox.show("info", "Traduzindo...");
    });

    this.player.on("translate:end", () => {
        this.messageBox.hide(this.loadingRef);
    });

    this.player.on("gloss:start", () => {
        control = 0;
        // console.log('GLOSS : START');
        this.ChangeAvatar.hide();
        this.rateButton.hide();
        this.rateBox.hide();
        this.suggestionButton.hide();
        this.suggestionScreen.hide();
    });

    this.player.on("gloss:end", (globalGlosaLenght) => {
        if (control == 0) {
            this.ChangeAvatar.show();
        }

        if (this.player.translated && control == 0) {
            this.suggestionScreen.setGloss(this.player.gloss);
            this.rateButton.show();
        }

        control = 0;
    });

    this.player.on("stop:welcome", (bool) => {
        if (bool) {
            this.ChangeAvatar.show();
        }
    });

    this.player.on(
        "error",
        function(err) {
            switch (err) {
                case "compatibility_error":
                    this.messageBox.show(
                        "warning",
                        "O seu computador n�o suporta o WebGL. Por favor, atualize os drivers de v�deo."
                    );
                    break;
                case "translation_error":
                    this.messageBox.show(
                        "warning",
                        "N�o foi poss�vel estabelecer conex�o com o servi�o de tradu��o do VLibras.",
                        3000
                    );
                    break;
                case "internal_error":
                    this.messageBox.show(
                        "warning",
                        "Ops! Ocorreu um problema, por favor entre em contato com a gente."
                    );
                    break;
            }
        }.bind(this)
    );

    this.loadFont();
    this.loadImages();
}

Plugin.prototype.translate = function(text) {
    this.player.translate(text);
};

Plugin.prototype.sendReview = function(rate, review) {
    const body = JSON.stringify({
        text: this.player.text,
        translation: this.player.gloss,
        rating: rate,
        review,
    });

    const http = new XMLHttpRequest();
    http.open("POST", "https://traducao2.vlibras.gov.br/review");
    http.setRequestHeader("Content-type", "application/json");
    http.send(body);
    http.onload = () => {
        this.rateBox.hide();
        this.suggestionScreen.hide();
        this.messageBox.show("success", "Obrigado pela contribui��o!", 3000);
    };
};

Plugin.prototype.buildAbsolutePath = function(path) {
    return this.rootPath ? this.rootPath + "/" + path : path;
};

Plugin.prototype.loadImages = function() {
    this.element.querySelectorAll("img[data-src]").forEach((image) => {
        const imagePath = image.attributes["data-src"].value;
        image.src = this.buildAbsolutePath(imagePath);
    });
};

Plugin.prototype.loadFont = function() {
    const fontPath = this.buildAbsolutePath("assets/OpenSans-Semibold.ttf");
    const font = new FontFace("Open Sans", "url(" + fontPath + ")");

    font
        .load()
        .then((loaded) => {
            document.fonts.add(loaded);
        })
        .catch((error) => {
            console.error("Error loading font face:", error);
        });
};

module.exports = Plugin;


//# sourceURL=webpack://VLibras/./plugin/Plugin.js?
                                    

#76 JavaScript::Eval (size: 24311, repeated: 1) - SHA256: a9c91811bbc5809e7c855dace4739111f2480112b8b0dd52ba44dd5341c1b268

                                        /**
 * Module dependencies.
 */

var Emitter = __webpack_require__( /*! emitter */ "../vlibras-player-webjs/node_modules/component-emitter/index.js");
var reduce = __webpack_require__( /*! reduce */ "../vlibras-player-webjs/node_modules/reduce-component/index.js");
var requestBase = __webpack_require__( /*! ./request-base */ "../vlibras-player-webjs/node_modules/superagent/lib/request-base.js");
var isObject = __webpack_require__( /*! ./is-object */ "../vlibras-player-webjs/node_modules/superagent/lib/is-object.js");

/**
 * Root reference for iframes.
 */

var root;
if (typeof window !== 'undefined') { // Browser window
    root = window;
} else if (typeof self !== 'undefined') { // Web Worker
    root = self;
} else { // Other environments
    root = this;
}

/**
 * Noop.
 */

function noop() {};

/**
 * Check if `obj` is a host object,
 * we don't want to serialize these :)
 *
 * TODO: future proof, move to compoent land
 *
 * @param {Object} obj
 * @return {Boolean}
 * @api private
 */

function isHost(obj) {
    var str = {}.toString.call(obj);

    switch (str) {
        case '[object File]':
        case '[object Blob]':
        case '[object FormData]':
            return true;
        default:
            return false;
    }
}

/**
 * Expose `request`.
 */

var request = module.exports = __webpack_require__( /*! ./request */ "../vlibras-player-webjs/node_modules/superagent/lib/request.js").bind(null, Request);

/**
 * Determine XHR.
 */

request.getXHR = function() {
    if (root.XMLHttpRequest && (!root.location || 'file:' != root.location.protocol || !root.ActiveXObject)) {
        return new XMLHttpRequest;
    } else {
        try {
            return new ActiveXObject('Microsoft.XMLHTTP');
        } catch (e) {}
        try {
            return new ActiveXObject('Msxml2.XMLHTTP.6.0');
        } catch (e) {}
        try {
            return new ActiveXObject('Msxml2.XMLHTTP.3.0');
        } catch (e) {}
        try {
            return new ActiveXObject('Msxml2.XMLHTTP');
        } catch (e) {}
    }
    return false;
};

/**
 * Removes leading and trailing whitespace, added to support IE.
 *
 * @param {String} s
 * @return {String}
 * @api private
 */

var trim = ''.trim ? function(s) {
    return s.trim();
} : function(s) {
    return s.replace(/(^\s*|\s*$)/g, '');
};

/**
 * Serialize the given `obj`.
 *
 * @param {Object} obj
 * @return {String}
 * @api private
 */

function serialize(obj) {
    if (!isObject(obj)) return obj;
    var pairs = [];
    for (var key in obj) {
        if (null != obj[key]) {
            pushEncodedKeyValuePair(pairs, key, obj[key]);
        }
    }
    return pairs.join('&');
}

/**
 * Helps 'serialize' with serializing arrays.
 * Mutates the pairs array.
 *
 * @param {Array} pairs
 * @param {String} key
 * @param {Mixed} val
 */

function pushEncodedKeyValuePair(pairs, key, val) {
    if (Array.isArray(val)) {
        return val.forEach(function(v) {
            pushEncodedKeyValuePair(pairs, key, v);
        });
    }
    pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(val));
}

/**
 * Expose serialization method.
 */

request.serializeObject = serialize;

/**
 * Parse the given x-www-form-urlencoded `str`.
 *
 * @param {String} str
 * @return {Object}
 * @api private
 */

function parseString(str) {
    var obj = {};
    var pairs = str.split('&');
    var parts;
    var pair;

    for (var i = 0, len = pairs.length; i < len; ++i) {
        pair = pairs[i];
        parts = pair.split('=');
        obj[decodeURIComponent(parts[0])] = decodeURIComponent(parts[1]);
    }

    return obj;
}

/**
 * Expose parser.
 */

request.parseString = parseString;

/**
 * Default MIME type map.
 *
 *     superagent.types.xml = 'application/xml';
 *
 */

request.types = {
    html: 'text/html',
    json: 'application/json',
    xml: 'application/xml',
    urlencoded: 'application/x-www-form-urlencoded',
    'form': 'application/x-www-form-urlencoded',
    'form-data': 'application/x-www-form-urlencoded'
};

/**
 * Default serialization map.
 *
 *     superagent.serialize['application/xml'] = function(obj){
 *       return 'generated xml here';
 *     };
 *
 */

request.serialize = {
    'application/x-www-form-urlencoded': serialize,
    'application/json': JSON.stringify
};

/**
 * Default parsers.
 *
 *     superagent.parse['application/xml'] = function(str){
 *       return { object parsed from str };
 *     };
 *
 */

request.parse = {
    'application/x-www-form-urlencoded': parseString,
    'application/json': JSON.parse
};

/**
 * Parse the given header `str` into
 * an object containing the mapped fields.
 *
 * @param {String} str
 * @return {Object}
 * @api private
 */

function parseHeader(str) {
    var lines = str.split(/\r?\n/);
    var fields = {};
    var index;
    var line;
    var field;
    var val;

    lines.pop(); // trailing CRLF

    for (var i = 0, len = lines.length; i < len; ++i) {
        line = lines[i];
        index = line.indexOf(':');
        field = line.slice(0, index).toLowerCase();
        val = trim(line.slice(index + 1));
        fields[field] = val;
    }

    return fields;
}

/**
 * Check if `mime` is json or has +json structured syntax suffix.
 *
 * @param {String} mime
 * @return {Boolean}
 * @api private
 */

function isJSON(mime) {
    return /[\/+]json\b/.test(mime);
}

/**
 * Return the mime type for the given `str`.
 *
 * @param {String} str
 * @return {String}
 * @api private
 */

function type(str) {
    return str.split(/ *; */).shift();
};

/**
 * Return header field parameters.
 *
 * @param {String} str
 * @return {Object}
 * @api private
 */

function params(str) {
    return reduce(str.split(/ *; */), function(obj, str) {
        var parts = str.split(/ *= */),
            key = parts.shift(),
            val = parts.shift();

        if (key && val) obj[key] = val;
        return obj;
    }, {});
};

/**
 * Initialize a new `Response` with the given `xhr`.
 *
 *  - set flags (.ok, .error, etc)
 *  - parse header
 *
 * Examples:
 *
 *  Aliasing `superagent` as `request` is nice:
 *
 *      request = superagent;
 *
 *  We can use the promise-like API, or pass callbacks:
 *
 *      request.get('/').end(function(res){});
 *      request.get('/', function(res){});
 *
 *  Sending data can be chained:
 *
 *      request
 *        .post('/user')
 *        .send({ name: 'tj' })
 *        .end(function(res){});
 *
 *  Or passed to `.send()`:
 *
 *      request
 *        .post('/user')
 *        .send({ name: 'tj' }, function(res){});
 *
 *  Or passed to `.post()`:
 *
 *      request
 *        .post('/user', { name: 'tj' })
 *        .end(function(res){});
 *
 * Or further reduced to a single call for simple cases:
 *
 *      request
 *        .post('/user', { name: 'tj' }, function(res){});
 *
 * @param {XMLHTTPRequest} xhr
 * @param {Object} options
 * @api private
 */

function Response(req, options) {
    options = options || {};
    this.req = req;
    this.xhr = this.req.xhr;
    // responseText is accessible only if responseType is '' or 'text' and on older browsers
    this.text = ((this.req.method != 'HEAD' && (this.xhr.responseType === '' || this.xhr.responseType === 'text')) || typeof this.xhr.responseType === 'undefined') ? this.xhr.responseText : null;
    this.statusText = this.req.xhr.statusText;
    this.setStatusProperties(this.xhr.status);
    this.header = this.headers = parseHeader(this.xhr.getAllResponseHeaders());
    // getAllResponseHeaders sometimes falsely returns "" for CORS requests, but
    // getResponseHeader still works. so we get content-type even if getting
    // other headers fails.
    this.header['content-type'] = this.xhr.getResponseHeader('content-type');
    this.setHeaderProperties(this.header);
    this.body = this.req.method != 'HEAD' ? this.parseBody(this.text ? this.text : this.xhr.response) : null;
}

/**
 * Get case-insensitive `field` value.
 *
 * @param {String} field
 * @return {String}
 * @api public
 */

Response.prototype.get = function(field) {
    return this.header[field.toLowerCase()];
};

/**
 * Set header related properties:
 *
 *   - `.type` the content type without params
 *
 * A response of "Content-Type: text/plain; charset=utf-8"
 * will provide you with a `.type` of "text/plain".
 *
 * @param {Object} header
 * @api private
 */

Response.prototype.setHeaderProperties = function(header) {
    // content-type
    var ct = this.header['content-type'] || '';
    this.type = type(ct);

    // params
    var obj = params(ct);
    for (var key in obj) this[key] = obj[key];
};

/**
 * Parse the given body `str`.
 *
 * Used for auto-parsing of bodies. Parsers
 * are defined on the `superagent.parse` object.
 *
 * @param {String} str
 * @return {Mixed}
 * @api private
 */

Response.prototype.parseBody = function(str) {
    var parse = request.parse[this.type];
    if (!parse && isJSON(this.type)) {
        parse = request.parse['application/json'];
    }
    return parse && str && (str.length || str instanceof Object) ? parse(str) : null;
};

/**
 * Set flags such as `.ok` based on `status`.
 *
 * For example a 2xx response will give you a `.ok` of __true__
 * whereas 5xx will be __false__ and `.error` will be __true__. The
 * `.clientError` and `.serverError` are also available to be more
 * specific, and `.statusType` is the class of error ranging from 1..5
 * sometimes useful for mapping respond colors etc.
 *
 * "sugar" properties are also defined for common cases. Currently providing:
 *
 *   - .noContent
 *   - .badRequest
 *   - .unauthorized
 *   - .notAcceptable
 *   - .notFound
 *
 * @param {Number} status
 * @api private
 */

Response.prototype.setStatusProperties = function(status) {
    // handle IE9 bug: http://stackoverflow.com/questions/10046972/msie-returns-status-code-of-1223-for-ajax-request
    if (status === 1223) {
        status = 204;
    }

    var type = status / 100 | 0;

    // status / class
    this.status = this.statusCode = status;
    this.statusType = type;

    // basics
    this.info = 1 == type;
    this.ok = 2 == type;
    this.clientError = 4 == type;
    this.serverError = 5 == type;
    this.error = (4 == type || 5 == type) ? this.toError() : false;

    // sugar
    this.accepted = 202 == status;
    this.noContent = 204 == status;
    this.badRequest = 400 == status;
    this.unauthorized = 401 == status;
    this.notAcceptable = 406 == status;
    this.notFound = 404 == status;
    this.forbidden = 403 == status;
};

/**
 * Return an `Error` representative of this response.
 *
 * @return {Error}
 * @api public
 */

Response.prototype.toError = function() {
    var req = this.req;
    var method = req.method;
    var url = req.url;

    var msg = 'cannot ' + method + ' ' + url + ' (' + this.status + ')';
    var err = new Error(msg);
    err.status = this.status;
    err.method = method;
    err.url = url;

    return err;
};

/**
 * Expose `Response`.
 */

request.Response = Response;

/**
 * Initialize a new `Request` with the given `method` and `url`.
 *
 * @param {String} method
 * @param {String} url
 * @api public
 */

function Request(method, url) {
    var self = this;
    this._query = this._query || [];
    this.method = method;
    this.url = url;
    this.header = {}; // preserves header name case
    this._header = {}; // coerces header names to lowercase
    this.on('end', function() {
        var err = null;
        var res = null;

        try {
            res = new Response(self);
        } catch (e) {
            err = new Error('Parser is unable to parse the response');
            err.parse = true;
            err.original = e;
            // issue #675: return the raw response if the response parsing fails
            err.rawResponse = self.xhr && self.xhr.responseText ? self.xhr.responseText : null;
            // issue #876: return the http status code if the response parsing fails
            err.statusCode = self.xhr && self.xhr.status ? self.xhr.status : null;
            return self.callback(err);
        }

        self.emit('response', res);

        if (err) {
            return self.callback(err, res);
        }

        if (res.status >= 200 && res.status < 300) {
            return self.callback(err, res);
        }

        var new_err = new Error(res.statusText || 'Unsuccessful HTTP response');
        new_err.original = err;
        new_err.response = res;
        new_err.status = res.status;

        self.callback(new_err, res);
    });
}

/**
 * Mixin `Emitter` and `requestBase`.
 */

Emitter(Request.prototype);
for (var key in requestBase) {
    Request.prototype[key] = requestBase[key];
}

/**
 * Abort the request, and clear potential timeout.
 *
 * @return {Request}
 * @api public
 */

Request.prototype.abort = function() {
    if (this.aborted) return;
    this.aborted = true;
    this.xhr && this.xhr.abort();
    this.clearTimeout();
    this.emit('abort');
    return this;
};

/**
 * Set Content-Type to `type`, mapping values from `request.types`.
 *
 * Examples:
 *
 *      superagent.types.xml = 'application/xml';
 *
 *      request.post('/')
 *        .type('xml')
 *        .send(xmlstring)
 *        .end(callback);
 *
 *      request.post('/')
 *        .type('application/xml')
 *        .send(xmlstring)
 *        .end(callback);
 *
 * @param {String} type
 * @return {Request} for chaining
 * @api public
 */

Request.prototype.type = function(type) {
    this.set('Content-Type', request.types[type] || type);
    return this;
};

/**
 * Set responseType to `val`. Presently valid responseTypes are 'blob' and
 * 'arraybuffer'.
 *
 * Examples:
 *
 *      req.get('/')
 *        .responseType('blob')
 *        .end(callback);
 *
 * @param {String} val
 * @return {Request} for chaining
 * @api public
 */

Request.prototype.responseType = function(val) {
    this._responseType = val;
    return this;
};

/**
 * Set Accept to `type`, mapping values from `request.types`.
 *
 * Examples:
 *
 *      superagent.types.json = 'application/json';
 *
 *      request.get('/agent')
 *        .accept('json')
 *        .end(callback);
 *
 *      request.get('/agent')
 *        .accept('application/json')
 *        .end(callback);
 *
 * @param {String} accept
 * @return {Request} for chaining
 * @api public
 */

Request.prototype.accept = function(type) {
    this.set('Accept', request.types[type] || type);
    return this;
};

/**
 * Set Authorization field value with `user` and `pass`.
 *
 * @param {String} user
 * @param {String} pass
 * @param {Object} options with 'type' property 'auto' or 'basic' (default 'basic')
 * @return {Request} for chaining
 * @api public
 */

Request.prototype.auth = function(user, pass, options) {
    if (!options) {
        options = {
            type: 'basic'
        }
    }

    switch (options.type) {
        case 'basic':
            var str = btoa(user + ':' + pass);
            this.set('Authorization', 'Basic ' + str);
            break;

        case 'auto':
            this.username = user;
            this.password = pass;
            break;
    }
    return this;
};

/**
 * Add query-string `val`.
 *
 * Examples:
 *
 *   request.get('/shoes')
 *     .query('size=10')
 *     .query({ color: 'blue' })
 *
 * @param {Object|String} val
 * @return {Request} for chaining
 * @api public
 */

Request.prototype.query = function(val) {
    if ('string' != typeof val) val = serialize(val);
    if (val) this._query.push(val);
    return this;
};

/**
 * Queue the given `file` as an attachment to the specified `field`,
 * with optional `filename`.
 *
 * ``` js
 * request.post('/upload')
 *   .attach(new Blob(['<a id="a"><b id="b">hey!</b></a>'], { type: "text/html"}))
 *   .end(callback);
 * ```
 *
 * @param {String} field
 * @param {Blob|File} file
 * @param {String} filename
 * @return {Request} for chaining
 * @api public
 */

Request.prototype.attach = function(field, file, filename) {
    this._getFormData().append(field, file, filename || file.name);
    return this;
};

Request.prototype._getFormData = function() {
    if (!this._formData) {
        this._formData = new root.FormData();
    }
    return this._formData;
};

/**
 * Send `data` as the request body, defaulting the `.type()` to "json" when
 * an object is given.
 *
 * Examples:
 *
 *       // manual json
 *       request.post('/user')
 *         .type('json')
 *         .send('{"name":"tj"}')
 *         .end(callback)
 *
 *       // auto json
 *       request.post('/user')
 *         .send({ name: 'tj' })
 *         .end(callback)
 *
 *       // manual x-www-form-urlencoded
 *       request.post('/user')
 *         .type('form')
 *         .send('name=tj')
 *         .end(callback)
 *
 *       // auto x-www-form-urlencoded
 *       request.post('/user')
 *         .type('form')
 *         .send({ name: 'tj' })
 *         .end(callback)
 *
 *       // defaults to x-www-form-urlencoded
 *      request.post('/user')
 *        .send('name=tobi')
 *        .send('species=ferret')
 *        .end(callback)
 *
 * @param {String|Object} data
 * @return {Request} for chaining
 * @api public
 */

Request.prototype.send = function(data) {
    var obj = isObject(data);
    var type = this._header['content-type'];

    // merge
    if (obj && isObject(this._data)) {
        for (var key in data) {
            this._data[key] = data[key];
        }
    } else if ('string' == typeof data) {
        if (!type) this.type('form');
        type = this._header['content-type'];
        if ('application/x-www-form-urlencoded' == type) {
            this._data = this._data ? this._data + '&' + data : data;
        } else {
            this._data = (this._data || '') + data;
        }
    } else {
        this._data = data;
    }

    if (!obj || isHost(data)) return this;
    if (!type) this.type('json');
    return this;
};

/**
 * @deprecated
 */
Response.prototype.parse = function serialize(fn) {
    if (root.console) {
        console.warn("Client-side parse() method has been renamed to serialize(). This method is not compatible with superagent v2.0");
    }
    this.serialize(fn);
    return this;
};

Response.prototype.serialize = function serialize(fn) {
    this._parser = fn;
    return this;
};

/**
 * Invoke the callback with `err` and `res`
 * and handle arity check.
 *
 * @param {Error} err
 * @param {Response} res
 * @api private
 */

Request.prototype.callback = function(err, res) {
    var fn = this._callback;
    this.clearTimeout();
    fn(err, res);
};

/**
 * Invoke callback with x-domain error.
 *
 * @api private
 */

Request.prototype.crossDomainError = function() {
    var err = new Error('Request has been terminated\nPossible causes: the network is offline, Origin is not allowed by Access-Control-Allow-Origin, the page is being unloaded, etc.');
    err.crossDomain = true;

    err.status = this.status;
    err.method = this.method;
    err.url = this.url;

    this.callback(err);
};

/**
 * Invoke callback with timeout error.
 *
 * @api private
 */

Request.prototype.timeoutError = function() {
    var timeout = this._timeout;
    var err = new Error('timeout of ' + timeout + 'ms exceeded');
    err.timeout = timeout;
    this.callback(err);
};

/**
 * Enable transmission of cookies with x-domain requests.
 *
 * Note that for this to work the origin must not be
 * using "Access-Control-Allow-Origin" with a wildcard,
 * and also must set "Access-Control-Allow-Credentials"
 * to "true".
 *
 * @api public
 */

Request.prototype.withCredentials = function() {
    this._withCredentials = true;
    return this;
};

/**
 * Initiate request, invoking callback `fn(res)`
 * with an instanceof `Response`.
 *
 * @param {Function} fn
 * @return {Request} for chaining
 * @api public
 */

Request.prototype.end = function(fn) {
    var self = this;
    var xhr = this.xhr = request.getXHR();
    var query = this._query.join('&');
    var timeout = this._timeout;
    var data = this._formData || this._data;

    // store callback
    this._callback = fn || noop;

    // state change
    xhr.onreadystatechange = function() {
        if (4 != xhr.readyState) return;

        // In IE9, reads to any property (e.g. status) off of an aborted XHR will
        // result in the error "Could not complete the operation due to error c00c023f"
        var status;
        try {
            status = xhr.status
        } catch (e) {
            status = 0;
        }

        if (0 == status) {
            if (self.timedout) return self.timeoutError();
            if (self.aborted) return;
            return self.crossDomainError();
        }
        self.emit('end');
    };

    // progress
    var handleProgress = function(e) {
        if (e.total > 0) {
            e.percent = e.loaded / e.total * 100;
        }
        e.direction = 'download';
        self.emit('progress', e);
    };
    if (this.hasListeners('progress')) {
        xhr.onprogress = handleProgress;
    }
    try {
        if (xhr.upload && this.hasListeners('progress')) {
            xhr.upload.onprogress = handleProgress;
        }
    } catch (e) {
        // Accessing xhr.upload fails in IE from a web worker, so just pretend it doesn't exist.
        // Reported here:
        // https://connect.microsoft.com/IE/feedback/details/837245/xmlhttprequest-upload-throws-invalid-argument-when-used-from-web-worker-context
    }

    // timeout
    if (timeout && !this._timer) {
        this._timer = setTimeout(function() {
            self.timedout = true;
            self.abort();
        }, timeout);
    }

    // querystring
    if (query) {
        query = request.serializeObject(query);
        this.url += ~this.url.indexOf('?') ? '&' + query : '?' + query;
    }

    // initiate request
    if (this.username && this.password) {
        xhr.open(this.method, this.url, true, this.username, this.password);
    } else {
        xhr.open(this.method, this.url, true);
    }

    // CORS
    if (this._withCredentials) xhr.withCredentials = true;

    // body
    if ('GET' != this.method && 'HEAD' != this.method && 'string' != typeof data && !isHost(data)) {
        // serialize stuff
        var contentType = this._header['content-type'];
        var serialize = this._parser || request.serialize[contentType ? contentType.split(';')[0] : ''];
        if (!serialize && isJSON(contentType)) serialize = request.serialize['application/json'];
        if (serialize) data = serialize(data);
    }

    // set header fields
    for (var field in this.header) {
        if (null == this.header[field]) continue;
        xhr.setRequestHeader(field, this.header[field]);
    }

    if (this._responseType) {
        xhr.responseType = this._responseType;
    }

    // send stuff
    this.emit('request', this);

    // IE11 xhr.send(undefined) sends 'undefined' string as POST payload (instead of nothing)
    // We need null here if data is undefined
    xhr.send(typeof data !== 'undefined' ? data : null);
    return this;
};


/**
 * Expose `Request`.
 */

request.Request = Request;

/**
 * GET `url` with optional callback `fn(res)`.
 *
 * @param {String} url
 * @param {Mixed|Function} data or fn
 * @param {Function} fn
 * @return {Request}
 * @api public
 */

request.get = function(url, data, fn) {
    var req = request('GET', url);
    if ('function' == typeof data) fn = data, data = null;
    if (data) req.query(data);
    if (fn) req.end(fn);
    return req;
};

/**
 * HEAD `url` with optional callback `fn(res)`.
 *
 * @param {String} url
 * @param {Mixed|Function} data or fn
 * @param {Function} fn
 * @return {Request}
 * @api public
 */

request.head = function(url, data, fn) {
    var req = request('HEAD', url);
    if ('function' == typeof data) fn = data, data = null;
    if (data) req.send(data);
    if (fn) req.end(fn);
    return req;
};

/**
 * DELETE `url` with optional callback `fn(res)`.
 *
 * @param {String} url
 * @param {Function} fn
 * @return {Request}
 * @api public
 */

function del(url, fn) {
    var req = request('DELETE', url);
    if (fn) req.end(fn);
    return req;
};

request['del'] = del;
request['delete'] = del;

/**
 * PATCH `url` with optional `data` and callback `fn(res)`.
 *
 * @param {String} url
 * @param {Mixed} data
 * @param {Function} fn
 * @return {Request}
 * @api public
 */

request.patch = function(url, data, fn) {
    var req = request('PATCH', url);
    if ('function' == typeof data) fn = data, data = null;
    if (data) req.send(data);
    if (fn) req.end(fn);
    return req;
};

/**
 * POST `url` with optional `data` and callback `fn(res)`.
 *
 * @param {String} url
 * @param {Mixed} data
 * @param {Function} fn
 * @return {Request}
 * @api public
 */

request.post = function(url, data, fn) {
    var req = request('POST', url);
    if ('function' == typeof data) fn = data, data = null;
    if (data) req.send(data);
    if (fn) req.end(fn);
    return req;
};

/**
 * PUT `url` with optional `data` and callback `fn(res)`.
 *
 * @param {String} url
 * @param {Mixed|Function} data or fn
 * @param {Function} fn
 * @return {Request}
 * @api public
 */

request.put = function(url, data, fn) {
    var req = request('PUT', url);
    if ('function' == typeof data) fn = data, data = null;
    if (data) req.send(data);
    if (fn) req.end(fn);
    return req;
};


//# sourceURL=webpack://VLibras/../vlibras-player-webjs/node_modules/superagent/lib/client.js?
                                    

#77 JavaScript::Eval (size: 1148, repeated: 1) - SHA256: 40a0d525de79cdad2028050319dec1c5c770797017efd1fb91af7926db07f200

                                        var template = __webpack_require__( /*! ./suggestion-button.html */ "./plugin/components/SuggestionButton/suggestion-button.html").default;
__webpack_require__( /*! ./suggestion-button.scss */ "./plugin/components/SuggestionButton/suggestion-button.scss");

function SuggestionButton(suggestionScreen) {
    this.element = null;
    this.suggestionScreen = suggestionScreen;
}

SuggestionButton.prototype.load = function(element) {
    this.element = element;
    this.element.innerHTML = template;

    const openScreen = this.element.querySelector('.vp-open-screen-button');
    const close = this.element.querySelector('.vp-close-button');

    openScreen.addEventListener('click', () => {
        this.suggestionScreen.show(this.rate);
        this.hide();
    });

    close.addEventListener('click', () => {
        this.hide();
    });
};

SuggestionButton.prototype.show = function(rate) {
    this.rate = rate;
    this.element.classList.add('vp-enabled');
};

SuggestionButton.prototype.hide = function() {
    this.element.classList.remove('vp-enabled');
};

module.exports = SuggestionButton;


//# sourceURL=webpack://VLibras/./plugin/components/SuggestionButton/index.js?
                                    

#78 JavaScript::Eval (size: 2718, repeated: 1) - SHA256: 8e46428886b3da15f9fc4c6e91b9e88be59662282ecdc01f83dbe9f137258646

                                        const AccessButton = __webpack_require__( /*! ./components/AccessButton */ "./widget/src/components/AccessButton/index.js");
const PluginWrapper = __webpack_require__( /*! ./components/PluginWrapper */ "./widget/src/components/PluginWrapper/index.js");

__webpack_require__( /*! ./scss/reset.scss */ "./widget/src/scss/reset.scss");
__webpack_require__( /*! ./scss/styles.scss */ "./widget/src/scss/styles.scss");

module.exports = function Widget(rootPath, personalization, opacity) {
    const widgetWrapper = new PluginWrapper();
    const accessButton = new AccessButton(rootPath, widgetWrapper, personalization, opacity);
    var temp_f;


    if (window.onload) {
        temp_f = window.onload;
    }

    window.onload = () => {

        if (temp_f) {
            temp_f();
        }

        this.element = document.querySelector('[vw]');

        const wrapper = document.querySelector('[vw-plugin-wrapper]');
        const access = document.querySelector('[vw-access-button]');

        accessButton.load(document.querySelector('[vw-access-button]'), this.element);
        widgetWrapper.load(document.querySelector('[vw-plugin-wrapper]'));

        window.addEventListener('vp-widget-wrapper-set-side', (event) => {
            if (event.detail.right) {
                this.element.style.left = '0';
                this.element.style.right = 'initial';
                access.querySelector('.access-button').classList.add("left");
                access.querySelector('.pop-up').classList.add("left");
                document.querySelector('[vw-access-button]').style.margin = "0px -100px 0px 0px";

            } else {
                this.element.style.right = '0';
                this.element.style.left = 'initial';
                access.querySelector('.access-button').classList.remove("left");
                access.querySelector('.pop-up').classList.remove("left");
                document.querySelector('[vw-access-button]').style.margin = "0px 0px 0px -100px";
            }
        });

        window.addEventListener('vp-widget-close', (event) => {
            access.classList.toggle('active');
            wrapper.classList.toggle('active');

            document.body.removeChild(document.querySelector('.vw-links'))

            var tagsTexts = document.querySelectorAll('.vw-text');
            for (var i = 0; i < tagsTexts.length; i++) {
                var parent = tagsTexts[i].parentNode;
                parent.innerHTML = tagsTexts[i].innerHTML;
            }
        });

        window.addEventListener('vw-change-opacity', (event) => {
            wrapper.style.background = `rgba(235,235,235, ${event.detail})`;
            //wrapper.setAttribute( 'style', `background: rgba(235, 235, 235, ${event.detail})`);
        });


        this.element.querySelectorAll('img[data-src]').forEach((image) => {
            const imagePath = image.attributes['data-src'].value;
            image.src = rootPath ? rootPath + '/' + imagePath : imagePath;
        });
    };
}


//# sourceURL=webpack://VLibras/./widget/src/Widget.js?
                                    

#79 JavaScript::Eval (size: 785, repeated: 1) - SHA256: 4090ed2652010d3b8f6910e0e9ac9d9cccbf812bce610968fa7383f309dd4f90

                                        var content = __webpack_require__( /*! !../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./styles.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./widget/src/components/AccessButton/styles.scss");

if (typeof content === 'string') {
    content = [
        [module.i, content, '']
    ];
}

var options = {}

options.insert = "head";
options.singleton = false;

var update = __webpack_require__( /*! ../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js")(content, options);

if (content.locals) {
    module.exports = content.locals;
}


//# sourceURL=webpack://VLibras/./widget/src/components/AccessButton/styles.scss?
                                    

#80 JavaScript::Eval (size: 497, repeated: 1) - SHA256: 1ddafd785fb69fcbac8055c57497ab3abee6fa62fa64072b4025cbe6d6953c01

                                        __webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */
__webpack_require__.d(__webpack_exports__, "Widget", function() {
    return Widget;
});
/* harmony export (binding) */
__webpack_require__.d(__webpack_exports__, "Plugin", function() {
    return Plugin;
});
const Plugin = __webpack_require__( /*! ../../plugin/Plugin */ "./plugin/Plugin.js");
const Widget = __webpack_require__( /*! ./Widget */ "./widget/src/Widget.js");




//# sourceURL=webpack://VLibras/./widget/src/index.js?
                                    

#81 JavaScript::Eval (size: 778, repeated: 1) - SHA256: c4d694a5730b58cb0ea395412c3ed8a13480b2d36162ae554335cecd0319311a

                                        exports = module.exports = __webpack_require__( /*! ../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js")(false);
// Module
exports.push([module.i, "[vp] .vpw-box {\n  width: calc(100%);\n  height: 40px;\n  font-size: 1em;\n  color: #000;\n  opacity: 1;\n  position: relative;\n  background-color: #003F86;\n  color: #ffffff;\n  background-size: 100% 100%;\n  z-index: 2; }\n  [vp] .vpw-box .vpw-mes {\n    position: absolute;\n    left: 50%;\n    top: 50%;\n    transform: translate(-50%, -50%);\n    font-size: 15px !important;\n    font-family: 'Open Sans', sans-serif; }\n", ""]);


//# sourceURL=webpack://VLibras/./plugin/components/Box/box.scss?./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js
                                    

#82 JavaScript::Eval (size: 749, repeated: 1) - SHA256: 1027c28a7ffea304ac0947d87dda387026ae2d9f3884d949bcfadb17bb2806bf

                                        exports = module.exports = __webpack_require__( /*! ../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js")(false);
// Module
exports.push([module.i, "[vp] .vpw-btn-close {\n  position: absolute;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  display: none;\n  z-index: 7;\n  cursor: pointer; }\n  [vp] .vpw-btn-close.active {\n    display: block; }\n  [vp] .vpw-btn-close .vpw-img {\n    position: absolute;\n    top: 50%;\n    transform: translateY(-50%);\n    width: 37.92px;\n    height: 37.92px;\n    right: 5px; }\n", ""]);


//# sourceURL=webpack://VLibras/./plugin/components/SettingsCloseBtn/settings-close-btn.scss?./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js
                                    

#83 JavaScript::Eval (size: 485, repeated: 1) - SHA256: 9d242d37bb7f11d9d7110afbb5c5fded01075091ab12546f0970d42c62155dbe

                                        const template = __webpack_require__( /*! ./template.html */ "./widget/src/components/PluginWrapper/template.html").default;
__webpack_require__( /*! ./styles.scss */ "./widget/src/components/PluginWrapper/styles.scss");

function PluginWrapper() {

}

PluginWrapper.prototype.load = function(element) {
    this.element = element;
    this.element.innerHTML = template;
};

module.exports = PluginWrapper;


//# sourceURL=webpack://VLibras/./widget/src/components/PluginWrapper/index.js?
                                    

#84 JavaScript::Eval (size: 5486, repeated: 1) - SHA256: 00968061608a26413fdb162674c03c9324cab88b528742eb3a25e539a9bbb1df

                                        // shim for using process in browser
var process = module.exports = {};

// cached from whatever global is present so that test runners that stub it
// don't break things.  But we need to wrap it in a try catch in case it is
// wrapped in strict mode code which doesn't define any globals.  It's inside a
// function because try/catches deoptimize in certain engines.

var cachedSetTimeout;
var cachedClearTimeout;

function defaultSetTimout() {
    throw new Error('setTimeout has not been defined');
}

function defaultClearTimeout() {
        throw new Error('clearTimeout has not been defined');
    }
    (function() {
        try {
            if (typeof setTimeout === 'function') {
                cachedSetTimeout = setTimeout;
            } else {
                cachedSetTimeout = defaultSetTimout;
            }
        } catch (e) {
            cachedSetTimeout = defaultSetTimout;
        }
        try {
            if (typeof clearTimeout === 'function') {
                cachedClearTimeout = clearTimeout;
            } else {
                cachedClearTimeout = defaultClearTimeout;
            }
        } catch (e) {
            cachedClearTimeout = defaultClearTimeout;
        }
    }())

function runTimeout(fun) {
    if (cachedSetTimeout === setTimeout) {
        //normal enviroments in sane situations
        return setTimeout(fun, 0);
    }
    // if setTimeout wasn't available but was latter defined
    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
        cachedSetTimeout = setTimeout;
        return setTimeout(fun, 0);
    }
    try {
        // when when somebody has screwed with setTimeout but no I.E. maddness
        return cachedSetTimeout(fun, 0);
    } catch (e) {
        try {
            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
            return cachedSetTimeout.call(null, fun, 0);
        } catch (e) {
            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
            return cachedSetTimeout.call(this, fun, 0);
        }
    }


}

function runClearTimeout(marker) {
    if (cachedClearTimeout === clearTimeout) {
        //normal enviroments in sane situations
        return clearTimeout(marker);
    }
    // if clearTimeout wasn't available but was latter defined
    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
        cachedClearTimeout = clearTimeout;
        return clearTimeout(marker);
    }
    try {
        // when when somebody has screwed with setTimeout but no I.E. maddness
        return cachedClearTimeout(marker);
    } catch (e) {
        try {
            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally
            return cachedClearTimeout.call(null, marker);
        } catch (e) {
            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
            // Some versions of I.E. have different rules for clearTimeout vs setTimeout
            return cachedClearTimeout.call(this, marker);
        }
    }



}
var queue = [];
var draining = false;
var currentQueue;
var queueIndex = -1;

function cleanUpNextTick() {
    if (!draining || !currentQueue) {
        return;
    }
    draining = false;
    if (currentQueue.length) {
        queue = currentQueue.concat(queue);
    } else {
        queueIndex = -1;
    }
    if (queue.length) {
        drainQueue();
    }
}

function drainQueue() {
    if (draining) {
        return;
    }
    var timeout = runTimeout(cleanUpNextTick);
    draining = true;

    var len = queue.length;
    while (len) {
        currentQueue = queue;
        queue = [];
        while (++queueIndex < len) {
            if (currentQueue) {
                currentQueue[queueIndex].run();
            }
        }
        queueIndex = -1;
        len = queue.length;
    }
    currentQueue = null;
    draining = false;
    runClearTimeout(timeout);
}

process.nextTick = function(fun) {
    var args = new Array(arguments.length - 1);
    if (arguments.length > 1) {
        for (var i = 1; i < arguments.length; i++) {
            args[i - 1] = arguments[i];
        }
    }
    queue.push(new Item(fun, args));
    if (queue.length === 1 && !draining) {
        runTimeout(drainQueue);
    }
};

// v8 likes predictible objects
function Item(fun, array) {
    this.fun = fun;
    this.array = array;
}
Item.prototype.run = function() {
    this.fun.apply(null, this.array);
};
process.title = 'browser';
process.browser = true;
process.env = {};
process.argv = [];
process.version = ''; // empty string to avoid regexp issues
process.versions = {};

function noop() {}

process.on = noop;
process.addListener = noop;
process.once = noop;
process.off = noop;
process.removeListener = noop;
process.removeAllListeners = noop;
process.emit = noop;
process.prependListener = noop;
process.prependOnceListener = noop;

process.listeners = function(name) {
    return []
}

process.binding = function(name) {
    throw new Error('process.binding is not supported');
};

process.cwd = function() {
    return '/'
};
process.chdir = function(dir) {
    throw new Error('process.chdir is not supported');
};
process.umask = function() {
    return 0;
};


//# sourceURL=webpack://VLibras/./node_modules/process/browser.js?
                                    

#85 JavaScript::Eval (size: 5562, repeated: 1) - SHA256: 105bfa695c915795a64f4c4b3a1207ecd28c783def46d0ef796f2a6d91d1a2d6

                                        const template = __webpack_require__( /*! ./template.html */ "./widget/src/components/AccessButton/template.html").default;
__webpack_require__( /*! ./styles.scss */ "./widget/src/components/AccessButton/styles.scss");

function AccessButton(rootPath, pluginWrapper, personalization, opacity) {
    this.personalization = personalization;
    this.rootPath = rootPath;
    this.pluginWrapper = pluginWrapper;
    this.vw_links = null;
    this.currentElement = null;
    this.currentSpanElement = null;
    this.opacity = opacity;
}

AccessButton.prototype.load = function(element, vw) {
    this.element = element;
    this.element.innerHTML = template;
    this.element.addEventListener('click', () => {
        this.element.classList.toggle('active');
        this.pluginWrapper.element.classList.toggle('active');


        window.plugin = (window.plugin || new window.VLibras.Plugin({
            enableMoveWindow: true,
            playWellcome: true,
            rootPath: this.rootPath,
            personalization: this.personalization,
            opacity: this.opacity,
            wrapper: this.pluginWrapper.element,
        }));

        this.addTagsTexts(vw);

    });

};

module.exports = AccessButton;

var control = 0;

function updatePosition() {
    if (this.currentElement != null && this.vw_links != null && this.currentSpanElement != null) {
        positionElement = getPosition(this.currentElement);
        var width = this.currentSpanElement.offsetWidth;
        var height = this.currentSpanElement.offsetHeight;
        this.vw_links.style.top = (positionElement.y + (height / 2)) + 'px';
        this.vw_links.style.left = (positionElement.x + (width / 2)) + 'px';
    }
}

function hasParent(el, fn) {
    var node = el.parentElement;

    while (node != null) {
        if (fn(node)) return node;
        node = node.parentElement;
    }

    return false;
}

function getPosition(elem) {
    var xPos = 0;
    var yPos = 0;

    var box = elem.getBoundingClientRect();

    var body = document.body;
    var docEl = document.documentElement;

    var scrollTop = window.pageYOffset || docEl.scrollTop || body.scrollTop;
    var scrollLeft = window.pageXOffset || docEl.scrollLeft || body.scrollLeft;

    var clientTop = docEl.clientTop || body.clientTop || 0;
    var clientLeft = docEl.clientLeft || body.clientLeft || 0;

    var top = box.top + scrollTop - clientTop;
    var left = box.left + scrollLeft - clientLeft;

    return {
        y: Math.round(top),
        x: Math.round(left)
    };
    return {
        x: xPos,
        y: yPos
    };
}

function createAccessLinkBox() {
    var template = __webpack_require__( /*! ./tooltip.html */ "./widget/src/components/AccessButton/tooltip.html").default;
    let div = document.createElement('div');
    div.className = 'vw-links';
    div.innerHTML = template;
    document.body.appendChild(div);
}

AccessButton.prototype.divBox = function(linkContent, event) {
    nodeAnchor = hasParent(linkContent, function(parent) {
        return parent.nodeName == 'A';
    });
    if (!nodeAnchor) {
        return;
    }
    event.stopPropagation();
    this.currentElement = nodeAnchor;
    this.currentSpanElement = linkContent;
    positionElement = getPosition(nodeAnchor);
    var width = linkContent.offsetWidth;
    var height = linkContent.offsetHeight;

    anchorElement = this.vw_links.querySelector('a');
    anchorElement.href = nodeAnchor.href;
    this.vw_links.style.top = (positionElement.y + (height / 2)) + 'px';
    this.vw_links.style.left = (positionElement.x + (width / 2)) + 'px';
    this.vw_links.firstChild.classList.add('active');

}

AccessButton.prototype.addTagsTexts = function(vw) {
    self = this;
    getAllNodeTexts(document.body, function(node) {
        if (vw.contains(node)) return;
        node.innerHTML = '<vlibraswidget>' + node.innerHTML + '</vlibraswidget>';
        const span = node.querySelector('vlibraswidget');
        if (!span)
            return;
        span.classList.add('vw-text');
        span.addEventListener('click', function(e) {
            e.preventDefault();
            self.divBox(this, e);
            if (control) window.plugin.player.stop();
            window.plugin.player.translate(this.textContent);
            deactivateAll();
            this.classList.add('vw-text-active');
            control++;
        });
    }, function(textNode, parent) {
        if (/^\s+$/.test(textNode.nodeValue)) {
            return true;
        }
        return false;
    });
    createAccessLinkBox();
    this.vw_links = document.body.getElementsByClassName('vw-links')[0];
    document.body.onclick = function(e) {
        if (this.vw_links != null) {
            this.vw_links.firstChild.classList.remove('active');
        }
    }.bind(this);
    window.addEventListener("scroll", updatePosition.bind(this), false);
    window.addEventListener("resize", updatePosition.bind(this), false);
}



function getAllNodeTexts(root, callback) {
    var noop = function() {};
    var headElements = ['SCRIPT', 'TITLE', 'META', 'STYLE', 'LINK', 'BASE'];

    for (var i = 0; i < root.childNodes.length; i++) {
        var node = root.childNodes[i];
        var anyText = false;

        if (headElements.indexOf(node.tagName) != -1) {
            continue;
        }

        for (var j = 0; j < node.childNodes.length; j++) {
            var child = node.childNodes[j];
            if (child.nodeType == Node.TEXT_NODE && child.nodeValue.trim() != '') {
                anyText = true;
                break;
            }
        }

        if (anyText) {
            (callback || noop)(node);
        } else {
            getAllNodeTexts(node, callback);
        }
    }
}

function deactivateAll() {
    var active = document.querySelector('.vw-text.vw-text-active');
    if (active) {
        active.classList.remove('vw-text-active');
    }
}


//# sourceURL=webpack://VLibras/./widget/src/components/AccessButton/index.js?
                                    

#86 JavaScript::Eval (size: 1124, repeated: 1) - SHA256: 5e9873a1a0e872af9c5f0498f5748b1c0b39118b668d7aa94e8ac69f3e96e973

                                        exports = module.exports = __webpack_require__( /*! ../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js")(false);
// Module
exports.push([module.i, "[vp] [vp-rate-button] {\n  display: flex;\n  flex-direction: row;\n  justify-content: flex-end;\n  position: absolute;\n  width: 100%;\n  bottom: 60px;\n  z-index: 2;\n  visibility: hidden;\n  max-width: 0;\n  opacity: 0;\n  transition: max-width 0s, visibility 0s, opacity 0.4s; }\n  [vp] [vp-rate-button] .vp-button {\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    margin-right: 26px;\n    margin-bottom: 20px;\n    z-index: 1;\n    cursor: pointer; }\n    [vp] [vp-rate-button] .vp-button img {\n      width: 43px;\n      margin-right: -13px;\n      margin-bottom: -13px;\n      max-width: none; }\n  [vp] [vp-rate-button].vp-enabled {\n    z-index: 2;\n    visibility: visible;\n    max-width: 100%;\n    opacity: 1; }\n", ""]);


//# sourceURL=webpack://VLibras/./plugin/components/RateButton/rate-button.scss?./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js
                                    

#87 JavaScript::Eval (size: 543, repeated: 1) - SHA256: 40a900f23224a6074517f73eb71bb256b5074a12cf6d3321ce25d6c3da665800

                                        __webpack_require__.r(__webpack_exports__);
/* harmony default export */
__webpack_exports__["default"] = ("<img class=\"access-button\" data-src=\"assets/component-ac.png\" alt=\"Conte�do acess�vel em libras usando o VLibras Widget com op��es dos Avatares �caro ou Hozana.\" />\n<img class=\"pop-up\"data-src=\"assets/popup.png\" alt=\"Conte�do acess�vel em libras usando o VLibras Widget com op��es dos Avatares �caro ou Hozana.\" />");

//# sourceURL=webpack://VLibras/./widget/src/components/AccessButton/template.html?
                                    

#88 JavaScript::Eval (size: 9347, repeated: 1) - SHA256: 3dd545c92e7188fc2bb1d731926f2f9f7b5d296e6842e8948a7a2dbc67d08520

                                        exports = module.exports = __webpack_require__( /*! ../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js")(false);
// Module
exports.push([module.i, "@charset \"UTF-8\";\n[vp] .vpw-vlibras-span {\n  font-family: \"Open Sans\", sans-serif; }\n\n[vp] .vpw-settings {\n  position: relative;\n  width: 100%;\n  height: calc(100% - 40px); }\n  [vp] .vpw-settings .vpw-content {\n    position: relative;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n    z-index: 6;\n    background-color: #003f86;\n    color: white; }\n    [vp] .vpw-settings .vpw-content .vpw-flag {\n      position: absolute;\n      height: 24px;\n      margin-top: -12px;\n      margin-left: 4px;\n      border: none;\n      border-radius: 5px; }\n    [vp] .vpw-settings .vpw-content > .vpw-bar {\n      position: absolute;\n      width: 100%;\n      height: 54px; }\n      [vp] .vpw-settings .vpw-content > .vpw-bar .vpw-title {\n        position: absolute;\n        top: 16px;\n        left: 50px;\n        color: #6481b8;\n        font-size: 12px;\n        font-weight: bold; }\n    [vp] .vpw-settings .vpw-content > ul {\n      list-style-type: none;\n      margin: 0;\n      padding: 0 11%;\n      font-family: \"Open Sans\", sans-serif; }\n      [vp] .vpw-settings .vpw-content > ul li {\n        position: relative;\n        padding: 19px 0;\n        color: white;\n        border-bottom: 0; }\n        [vp] .vpw-settings .vpw-content > ul li .vpw-name {\n          position: absolute;\n          left: 0px;\n          margin-top: -10px;\n          font-size: 14px; }\n        [vp] .vpw-settings .vpw-content > ul li .vpw-percent {\n          float: right;\n          margin-top: -7px;\n          font-size: 11px;\n          color: rgba(255, 255, 255, 0.6);\n          width: 30px;\n          margin-right: -6px;\n          margin-left: -4px;\n          text-align: center; }\n        [vp] .vpw-settings .vpw-content > ul li .arrow-right-opac,\n        [vp] .vpw-settings .vpw-content > ul li .arrow-left-opac {\n          margin-top: -13px;\n          width: 25px;\n          float: right; }\n      [vp] .vpw-settings .vpw-content > ul li:hover {\n        color: #67c8d5; }\n      [vp] .vpw-settings .vpw-content > ul .vpw-position {\n        display: none; }\n      [vp] .vpw-settings .vpw-content > ul .vpw-opacity {\n        display: none; }\n      [vp] .vpw-settings .vpw-content > ul .vpw-localism {\n        padding: 24px 0; }\n        [vp] .vpw-settings .vpw-content > ul .vpw-localism .vpw-flag {\n          right: 27px;\n          height: 24px; }\n        [vp] .vpw-settings .vpw-content > ul .vpw-localism .vpw-abbrev {\n          position: absolute;\n          right: 0px;\n          margin-top: -9px;\n          font-size: 14px;\n          font-weight: bold; }\n        [vp] .vpw-settings .vpw-content > ul .vpw-localism .vpw-arrow {\n          position: absolute;\n          right: 16px;\n          height: 13px;\n          margin-top: -6px; }\n    [vp] .vpw-settings .vpw-content > .vpw-localism {\n      position: absolute;\n      top: 0;\n      left: 0;\n      width: 100%;\n      height: 100%;\n      z-index: 7;\n      background-color: white;\n      border: 1px solid rgba(0, 0, 0, 0.2);\n      border-radius: 2px; }\n      [vp] .vpw-settings .vpw-content > .vpw-localism:not(.active) {\n        visibility: hidden;\n        opacity: 0;\n        -webkit-transition: visibility 0s, opacity 0.3s;\n        transition: visibility 0s, opacity 0.3s; }\n      [vp] .vpw-settings .vpw-content > .vpw-localism.active {\n        visibility: visible;\n        opacity: 1;\n        -webkit-transition: visibility 0s, opacity 0.3s;\n        transition: visibility 0s, opacity 0.3s; }\n      [vp] .vpw-settings .vpw-content > .vpw-localism .vpw-name {\n        position: absolute;\n        margin-top: -7px;\n        margin-left: 9px;\n        font-size: 14px;\n        font-weight: bold; }\n      [vp] .vpw-settings .vpw-content > .vpw-localism .vpw-national {\n        position: relative;\n        width: calc(33.33%);\n        margin-top: 6px;\n        padding-top: 16px;\n        display: flex;\n        flex-direction: row;\n        justify-content: center;\n        align-items: center; }\n        [vp] .vpw-settings .vpw-content > .vpw-localism .vpw-national .vpw-name {\n          color: black;\n          position: relative; }\n        [vp] .vpw-settings .vpw-content > .vpw-localism .vpw-national .vpw-flag {\n          position: relative; }\n      [vp] .vpw-settings .vpw-content > .vpw-localism .vpw-regions {\n        position: relative;\n        width: 100%;\n        height: 100%;\n        box-sizing: content-box;\n        padding: 0px 8px 0px 8px;\n        left: 0;\n        top: 50%;\n        transform: translateY(-50%); }\n        [vp] .vpw-settings .vpw-content > .vpw-localism .vpw-regions > .vpw-container-regions {\n          display: inline-block;\n          position: relative;\n          width: 33.33%;\n          margin-bottom: 1px;\n          padding: 6px 0;\n          margin-top: 1%;\n          cursor: pointer;\n          opacity: 0.5;\n          -webkit-transition: opacity 0.3s;\n          transition: opacity 0.3s; }\n          [vp] .vpw-settings .vpw-content > .vpw-localism .vpw-regions > .vpw-container-regions.selected, [vp] .vpw-settings .vpw-content > .vpw-localism .vpw-regions > .vpw-container-regions:hover {\n            opacity: 1;\n            -webkit-transition: opacity 0.3s;\n            transition: opacity 0.3s; }\n          [vp] .vpw-settings .vpw-content > .vpw-localism .vpw-regions > .vpw-container-regions .vpw-cont {\n            display: flex;\n            flex-direction: row;\n            justify-content: center;\n            align-items: center; }\n          [vp] .vpw-settings .vpw-content > .vpw-localism .vpw-regions > .vpw-container-regions > .vpw-cont .vpw-flag {\n            position: relative;\n            margin: 0; }\n          [vp] .vpw-settings .vpw-content > .vpw-localism .vpw-regions > .vpw-container-regions > .vpw-cont .vpw-name {\n            position: relative;\n            margin: 0 10px 0;\n            color: grey; }\n    [vp] .vpw-settings .vpw-content .vpw-vlibras-logo {\n      position: absolute;\n      left: 50%;\n      transform: translateX(-50%);\n      bottom: 0;\n      z-index: 6; }\n      [vp] .vpw-settings .vpw-content .vpw-vlibras-logo .vpw-vlibras-span {\n        left: 50%;\n        transform: translateX(-50%);\n        position: absolute;\n        bottom: 15%;\n        align-items: center;\n        font-size: 14px; }\n      [vp] .vpw-settings .vpw-content .vpw-vlibras-logo .vpw-logo {\n        width: 100%; }\n  [vp] .vpw-settings > .vpw-wall {\n    position: absolute;\n    top: 0;\n    left: 0;\n    bottom: 0;\n    right: 0;\n    z-index: 5; }\n  [vp] .vpw-settings.active {\n    display: block; }\n    [vp] .vpw-settings.active .vpw-content {\n      left: 0;\n      -webkit-transition: left 0.3s;\n      transition: left 0.3s; }\n    [vp] .vpw-settings.active .vpw-wall {\n      visibility: visible; }\n  [vp] .vpw-settings:not(.active) {\n    display: none; }\n    [vp] .vpw-settings:not(.active) .vpw-content {\n      left: 0;\n      visibility: hidden;\n      -webkit-transition: left 0.3s;\n      transition: left 0.3s; }\n    [vp] .vpw-settings:not(.active) .vpw-wall {\n      visibility: hidden; }\n  [vp] .vpw-settings .vpw-clickable {\n    cursor: pointer; }\n    [vp] .vpw-settings .vpw-clickable:not(:hover) {\n      background-color: inherit;\n      -webkit-transition: 0.12s background-color;\n      transition: 0.12s background-color; }\n    [vp] .vpw-settings .vpw-clickable:hover {\n      -webkit-transition: 0.2s background-color;\n      transition: 0.2s background-color; }\n\n[vp] .vpw-controls-dictionary:not(.vpw-loading-dictionary):before {\n  content: \"Dicion�rio\";\n  font-size: 14px;\n  position: absolute;\n  margin-top: -11px; }\n\n[vp] .vpw-controls-dictionary.vpw-loading-dictionary {\n  min-width: 22px;\n  min-height: 22px;\n  margin-top: -17px;\n  position: absolute;\n  border-left: 3px solid rgba(255, 255, 255, 0.2);\n  border-top: 3px solid rgba(255, 255, 255, 0.6);\n  border-bottom: 3px solid white;\n  border-right: 3px solid rgba(255, 255, 255, 0.6);\n  border-style: inset;\n  border-radius: 50%;\n  -webkit-animation: spin 1.5s linear infinite;\n  animation: spin 0.8s linear infinite; }\n\n/*@media (min-width: 600px) {\n  .vpw-settings {\n    &.active {\n      visibility: visible;\n      left: 0;\n\n      -webkit-transition: visibility 0s, left 0.3s;\n      transition: visibility 0s, left 0.3s;\n    }\n\n    &:not(.active) {\n      visibility: hidden;\n      left: -220px;\n\n      -webkit-transition: visibility 0.3s, left 0.3s;\n      transition: visibility 0.3s, left 0.3s;\n    }\n\n    .vpw-content {\n      left: -220px;\n      width: 220px;\n\n\n      .vpw-bar {\n        height: 66px;\n\n\n        .vpw-btn-back {\n          width: 30px;\n          height: 30px;\n          margin-top: 18px;\n          margin-left: 18px;\n        }\n\n        .vpw-title {\n          top: 25px;\n          left: 60px;\n          font-size: 1em;\n        }\n      }\n    }\n  }\n}*/\n", ""]);


//# sourceURL=webpack://VLibras/./plugin/components/Settings/settings.scss?./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js
                                    

#89 JavaScript::Eval (size: 1409, repeated: 1) - SHA256: 5e10c0bf8d7ed4ac556369e5ffdc0b6fccfacb66bc2fd390f7982b6f6b46925a

                                        __webpack_require__.r(__webpack_exports__);
/* harmony default export */
__webpack_exports__["default"] = ("<span class=\"vpw-controls-play\">\n\t<img class=\"vpw-component-play\" data-src=\"assets/component-play.svg\">\n\t<img class=\"vpw-component-pause\" data-src=\"assets/component-pause.svg\">\n\t<img class=\"vpw-component-restart\" data-src=\"assets/component-restart.svg\">\n</span>\n\n<div class=\"vpw-controls-slider\">\n\t<div class=\"vpw-slider\"></div>\n</div>\n<div class=\"vpw-controls-speed\">\n\t<div class=\"vpw-elem-speed\">\n\t\t<ul class=\"vpw-controls-speed-number\">\n\t\t\t<li class=\"vpw-block-speed vpw-block-speed-3\" >x3</li>\n\t\t\t<li class=\"vpw-block-speed vpw-block-speed-2\" >x2</li>\n\t\t\t<li class=\"vpw-block-speed vpw-block-speed-1\" >x1</li>\n\t\t\t<li class=\"vpw-block-speed vpw-block-speed-05\" >x0.5</li>\n\t\t</ul>\n\t</div>\n\t<div class=\"vpw-button-speed\">\n\t\t<span class=\"vpw-speed-default\">x1</span>\n\t\t<p class=\"vpw-border-default\"> <img class=\"vpw-img-default\" data-src=\"assets/running.svg\"></img> </p>\n\t</div>\n</div>\n\n<span class=\"vpw-controls-subtitles\">\n\t<img class=\"vpw-legenda-habilitar\" data-src=\"assets/component-legenda-habilitar.svg\">\n\t<img class=\"vpw-legenda-desabilitar\" data-src=\"assets/component-legenda-desabilitar.svg\">\n</span>\n");

//# sourceURL=webpack://VLibras/./plugin/components/Controls/controls.html?
                                    

#90 JavaScript::Eval (size: 1299, repeated: 1) - SHA256: f6b11d5681c63f3902ef3ae9653ffaf50da93cd5e4dc082eda737da41067c6bc

                                        exports = module.exports = __webpack_require__( /*! ../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js")(false);
// Module
exports.push([module.i, "[vp] .vpw-message-box {\n  top: -5em;\n  left: 0;\n  width: 100%;\n  padding: 1em;\n  font-size: 13px;\n  word-wrap: break-word;\n  color: #000;\n  opacity: 0;\n  -moz-transition: all .15s ease .15s;\n  -webkit-transition: all .15s ease .15s;\n  transition: all .15s ease .15s;\n  -moz-box-shadow: 0px 2px 5px #888888;\n  -webkit-box-shadow: 0px 2px 5px #888888;\n  box-shadow: 0px 2px 5px #888888;\n  text-align: center;\n  font-family: 'Open Sans', sans-serif; }\n  [vp] .vpw-message-box.active {\n    top: 0;\n    opacity: 1; }\n  [vp] .vpw-message-box.info {\n    background-color: #003F86;\n    color: white; }\n  [vp] .vpw-message-box.warning {\n    background-color: #003F86;\n    color: white; }\n  [vp] .vpw-message-box.success {\n    background-color: #003F86;\n    color: white; }\n  [vp] .vpw-message-box.default {\n    background-color: #003F86;\n    color: white; }\n  [vp] .vpw-message-box a {\n    color: inherit; }\n", ""]);


//# sourceURL=webpack://VLibras/./plugin/components/MessageBox/message-box.scss?./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js
                                    

#91 JavaScript::Eval (size: 1323, repeated: 1) - SHA256: f4a289bbb322dbccdd3e3f2195055b41dbfc20e9b8268558fb558c9f05ffb3c1

                                        exports = module.exports = __webpack_require__( /*! ../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js")(false);
// Module
exports.push([module.i, "[vp] [vp-change-avatar] {\n  display: flex;\n  flex-direction: row;\n  justify-content: flex-end;\n  position: absolute;\n  z-index: 2;\n  visibility: hidden;\n  max-width: 100%;\n  opacity: 1;\n  transition: max-width 0s, visibility 0s, opacity 0.4s;\n  left: 13px;\n  top: 50px; }\n  [vp] [vp-change-avatar] .vp-button-change-avatar {\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    z-index: 1;\n    cursor: pointer;\n    background: rgba(0, 0, 0, 0.3);\n    border-radius: 50px;\n    width: 32px;\n    height: 32px;\n    box-shadow: 1px 1px 2px 1px rgba(0, 0, 0, 0.45); }\n    [vp] [vp-change-avatar] .vp-button-change-avatar .change-avatar-icon {\n      width: 22px;\n      margin-right: 1px;\n      filter: brightness(0) invert(1);\n      display: none; }\n    [vp] [vp-change-avatar] .vp-button-change-avatar .active {\n      display: block; }\n  [vp] [vp-change-avatar].vp-disabled {\n    visibility: visible; }\n", ""]);


//# sourceURL=webpack://VLibras/./plugin/components/ChangeAvatar/change-avatar.scss?./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js
                                    

#92 JavaScript::Eval (size: 2667, repeated: 1) - SHA256: f5e7ecb4b3c17c7b1352cd91554106e3e78be838b9b2465e29620ee58af1460f

                                        var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;
(function(name, context, definition) {
    if (true && module.exports) module.exports = definition();
    else if (true) !(__WEBPACK_AMD_DEFINE_FACTORY__ = (definition),
        __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
            (__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :
            __WEBPACK_AMD_DEFINE_FACTORY__),
        __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    else {}
})('urljoin', this, function() {

    function normalize(strArray) {
        var resultArray = [];

        // If the first part is a plain protocol, we combine it with the next part.
        if (strArray[0].match(/^[^/:]+:\/*$/) && strArray.length > 1) {
            var first = strArray.shift();
            strArray[0] = first + strArray[0];
        }

        // There must be two or three slashes in the file protocol, two slashes in anything else.
        if (strArray[0].match(/^file:\/\/\//)) {
            strArray[0] = strArray[0].replace(/^([^/:]+):\/*/, '$1:///');
        } else {
            strArray[0] = strArray[0].replace(/^([^/:]+):\/*/, '$1://');
        }

        for (var i = 0; i < strArray.length; i++) {
            var component = strArray[i];

            if (typeof component !== 'string') {
                throw new TypeError('Url must be a string. Received ' + component);
            }

            if (component === '') {
                continue;
            }

            if (i > 0) {
                // Removing the starting slashes for each component but the first.
                component = component.replace(/^[\/]+/, '');
            }
            if (i < strArray.length - 1) {
                // Removing the ending slashes for each component but the last.
                component = component.replace(/[\/]+$/, '');
            } else {
                // For the last component we will combine multiple slashes to a single one.
                component = component.replace(/[\/]+$/, '/');
            }

            resultArray.push(component);

        }

        var str = resultArray.join('/');
        // Each input component is now separated by a single slash except the possible first plain protocol part.

        // remove trailing slash before parameters or hash
        str = str.replace(/\/(\?|&|#[^!])/g, '$1');

        // replace ? in parameters with &
        var parts = str.split('?');
        str = parts.shift() + (parts.length > 0 ? '?' : '') + parts.join('&');

        return str;
    }

    return function() {
        var input;

        if (typeof arguments[0] === 'object') {
            input = arguments[0];
        } else {
            input = [].slice.call(arguments);
        }

        return normalize(input);
    };

});


//# sourceURL=webpack://VLibras/./node_modules/url-join/lib/url-join.js?
                                    

#93 JavaScript::Eval (size: 8206, repeated: 1) - SHA256: 06a3a41abffa12715c65daabe151c20a1f1e29764af93ebb3d5d4b7e455dd4bc

                                        exports = module.exports = __webpack_require__( /*! ../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js")(false);
// Module
exports.push([module.i, "@media (max-width: 450px) {\n  div[vw] canvas {\n    min-height: unset !important;\n    min-width: unset !important;\n    -webkit-filter: blur(0px);\n    -moz-filter: blur(0px);\n    -ms-filter: blur(0px);\n    -o-filter: blur(0px);\n    filter: blur(0px);\n    min-height: calc(0.35 * 680px) !important;\n    min-width: calc(0.35 * 420px) !important; }\n  div[vw] [vw-plugin-wrapper].active {\n    height: 358px !important;\n    width: 210px !important; }\n  #gameContainer {\n    display: flex !important;\n    justify-content: center !important;\n    top: -75px !important;\n    left: -90px !important;\n    width: 100% !important;\n    height: 70% !important; }\n  [vp] [vp-controls] {\n    left: 36% !important;\n    bottom: 20% !important;\n    background: white; }\n  [vp] .vpw-controls-slider {\n    width: 27% !important; }\n  [vp] .vpw-box .vpw-mes {\n    left: 36% !important;\n    font-size: 12px !important; }\n  [vp] .vpw-settings-btn .vpw-settings-btn-close,\n  [vp] .vpw-btn-close .vpw-img {\n    right: 100px; }\n  [vp] [vp-rate-box].vp-enabled .vp-container {\n    margin-right: 70px;\n    margin-bottom: 80px; }\n  [vp] [vp-rate-button] .vp-button {\n    margin-right: 110px;\n    margin-bottom: 130px; }\n  [vp] [vp-rate-button] .vp-button img {\n    width: 32px;\n    margin-bottom: -37px;\n    margin-right: -14px; }\n  [vp] .vpw-message-box {\n    font-size: 0.7em; }\n    [vp] .vpw-message-box .vpw-message {\n      margin-left: 10px;\n      margin-right: 93px;\n      margin-bottom: 3px; }\n  [vp] .vpw-settings .vpw-content .vpw-vlibras-logo {\n    left: 39%;\n    bottom: 125px; }\n  [vp] .vpw-settings .vpw-content > ul {\n    margin-left: -20px; }\n  [vp] .vpw-settings .vpw-content > ul li .vpw-name {\n    font-size: 12px; }\n  [vp] .vpw-settings .vpw-content > ul .vpw-localism .vpw-flag {\n    right: 88px;\n    height: 24px; }\n  [vp] .vpw-switch {\n    width: 48px;\n    height: 15px;\n    margin-top: -10px;\n    right: 64px; }\n  [vp] .vpw-slider-check.vpw-round:before {\n    top: -3px; }\n  [vp] .vpw-slider-check:before {\n    height: 21px;\n    width: 20px;\n    left: -20;\n    bottom: 4px; }\n  [vp] .vpw-settings .vpw-content .vpw-vlibras-logo .vpw-logo {\n    width: 51%;\n    margin-left: 32px; }\n  [vp] .vpw-settings .vpw-content .vpw-vlibras-logo .vpw-vlibras-span {\n    left: 44%;\n    bottom: 5%; }\n  [vp] .vpw-settings .vpw-content .vpw-vlibras-logo {\n    left: 39%;\n    transform: translateX(-50%);\n    bottom: 125px; }\n  [vp] .vpw-settings .vpw-content > ul .vpw-localism .vpw-abbrev {\n    right: 65px; }\n  [vp] .vpw-controls-dictionary:not(.vpw-loading-dictionary):before {\n    font-size: 12px; }\n  [vp] .vpw-info-screen #vpw-info-tab-bullets {\n    right: 47px;\n    bottom: 100px; }\n  [vp] .vpw-info-screen .vpw-arrow-right.active {\n    right: 94px;\n    position: absolute;\n    top: 137px;\n    z-index: 4; }\n  [vp] .vpw-info-screen .vpw-arrow-left.active {\n    right: initial;\n    position: absolute;\n    top: 137px;\n    z-index: 4; }\n  [vp] .vpw-info-screen #vpw-info-main.active {\n    font-size: 0.7125em;\n    margin-right: 99px;\n    margin-bottom: 136px; }\n  [vp] .vpw-info-screen .vpw-info-tab .vpw-info-tab-label {\n    margin-top: -8px;\n    font-size: 14px; }\n  [vp] .vpw-info-screen .vpw-info-tab .vpw-info-tab-label-two {\n    font-size: 14px;\n    margin-top: 6px; }\n  [vp] .vpw-info-screen #vpw-info-realizadores .vpw-logo.ufpb {\n    max-width: 20%; }\n  [vp] .vpw-info-screen #vpw-info-realizadores .vpw-logo-group.text {\n    display: block; }\n  [vp] .vpw-info-screen #vpw-info-realizadores .vpw-logo-group.logo1 {\n    max-width: 70%; }\n  [vp] .vpw-info-screen #vpw-info-realizadores .vpw-logo-group.logo2 {\n    max-width: 86%; }\n  [vp] .vpw-info-screen #vpw-info-realizadores.active {\n    font-size: 0.8125em;\n    margin-right: 81px;\n    margin-bottom: 113px; }\n  [vp] .vpw-settings .vpw-content .vpw-flag {\n    height: 18px; }\n  [vp] .vpw-settings\n.vpw-content\n> .vpw-localism\n.vpw-regions\n> .vpw-container-regions {\n    margin-top: -1%;\n    margin-bottom: -2px; }\n  [vp] .vpw-settings .vpw-content > .vpw-localism {\n    width: 71%; }\n  [vp] .vpw-settings .vpw-content > .vpw-localism .vpw-regions {\n    left: -3px !important; }\n  [vp] .vpw-settings .vpw-content > ul .vpw-opacity {\n    margin-right: 56px; }\n  [vp] .vpw-dictionary .vpw-dict-container {\n    width: 64%;\n    height: 44%;\n    left: 44%; }\n  [vp] .vpw-bar .vpw-title {\n    margin-right: 40px; }\n  [vp] .vpw-dictionary .vpw-panel .vpw-search input {\n    width: 73%;\n    left: 39%; }\n  [vp] .vpw-dictionary .vpw-panel .vpw-search .vpw-icon img {\n    right: 70px; }\n  [vp] [vp-dictionary] {\n    right: 18px !important; }\n  [vp] .vpw-dictionary .vpw-dict-container ul li:not(.margin) {\n    padding: 5px; }\n  [vp] [vp-suggestion-button].vp-enabled {\n    right: 40px;\n    bottom: 150px !important; }\n  [vp] [vp-suggestion-screen] {\n    width: 72%;\n    height: 60%;\n    top: 41px; }\n  [vp] [vp-change-avatar] {\n    left: 9px;\n    top: 265px; }\n    [vp] [vp-change-avatar] .vp-button-change-avatar {\n      width: 30px;\n      height: 30px; }\n      [vp] [vp-change-avatar] .vp-button-change-avatar .change-avatar-female {\n        width: 15px; }\n      [vp] [vp-change-avatar] .vp-button-change-avatar .change-avatar-male {\n        width: 15px; } }\n\ndiv[vw] {\n  position: fixed;\n  max-width: 95vw;\n  right: 0;\n  top: 60%;\n  margin-top: -32vh;\n  z-index: 99999999;\n  display: none;\n  font-family: Arial;\n  color: #000;\n  line-height: 1.3; }\n  div[vw].enabled {\n    display: block; }\n  div[vw].active {\n    margin-top: -285px; }\n  div[vw].maximize {\n    top: 6vh;\n    left: 6vh;\n    right: 6vh;\n    bottom: 6vh;\n    max-width: initial;\n    margin-top: 0; }\n  div[vw].left {\n    left: 0;\n    right: initial; }\n  div[vw] #gameContainer {\n    position: absolute !important;\n    top: -25px;\n    left: 0;\n    right: 0;\n    bottom: 0;\n    margin: auto !important;\n    min-height: calc(0.7 * 450px);\n    min-width: calc(0.9 * 300px);\n    width: 100%;\n    height: 80%;\n    overflow: hidden;\n    -moz-border-radius: 10px;\n    -webkit-border-radius: 10px;\n    border-radius: 0px;\n    background: none !important; }\n    div[vw] #gameContainer canvas {\n      min-height: calc(0.7 * 450px);\n      min-width: calc(0.9 * 300px);\n      height: 100%;\n      width: 100%;\n      -webkit-filter: blur(0px);\n      -moz-filter: blur(0px);\n      -ms-filter: blur(0px);\n      -o-filter: blur(0px);\n      filter: blur(0px); }\n  div[vw] [vp] {\n    position: relative;\n    height: 100%;\n    width: 100%;\n    min-width: 300px;\n    min-height: 450px;\n    z-index: 1;\n    overflow: hidden; }\n    div[vw] [vp] [vp-message-box] {\n      position: absolute;\n      z-index: 5; }\n    div[vw] [vp] [vp-info-screen] {\n      z-index: 3; }\n      div[vw] [vp] [vp-info-screen] #info-text {\n        font-size: 1em !important; }\n      div[vw] [vp] [vp-info-screen] #info-realizadores {\n        font-size: 11px !important; }\n    div[vw] [vp] [vp-controls] {\n      position: absolute;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      left: 50%;\n      transform: translateX(-50%);\n      bottom: 0%;\n      max-width: 900px;\n      z-index: 2; }\n    div[vw] [vp] [vp-settings-btn] {\n      z-index: 2; }\n    div[vw] [vp] [vp-dictionary] {\n      z-index: 8; }\n    div[vw] [vp] [vp-rate-box] {\n      bottom: 58px; }\n    div[vw] [vp] [vp-suggestion-button].vp-enabled,\n    div[vw] [vp] [vp-suggestion-button] {\n      bottom: 58px; }\n    div[vw] [vp] [vp-suggestion-screen] {\n      top: 41px; }\n\n.vw-text:hover {\n  background-color: rgba(0, 63, 134, 0.2);\n  color: #000;\n  cursor: pointer; }\n\n.vw-text-active {\n  background-color: rgba(30, 63, 134, 0.2);\n  color: #000; }\n", ""]);


//# sourceURL=webpack://VLibras/./widget/src/scss/styles.scss?./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js
                                    

#94 JavaScript::Eval (size: 3406, repeated: 1) - SHA256: 78ed2e68897433bafdc2ccdd12e0f83e66e699ec2028cb845c683466ba7f543b

                                        var inherits = __webpack_require__( /*! inherits */ "./node_modules/inherits/inherits_browser.js");
var EventEmitter = __webpack_require__( /*! events */ "./node_modules/events/events.js").EventEmitter;

var dictionaryTpl = __webpack_require__( /*! ./dictionary.html */ "./plugin/components/Dictionary/dictionary.html").default;
__webpack_require__( /*! ./dictionary.scss */ "./plugin/components/Dictionary/dictionary.scss");

var Trie = __webpack_require__( /*! ./trie.js */ "./plugin/components/Dictionary/trie.js");
// var NonBlockingProcess = require('./non-blocking-process.js');

function Dictionary(player) {
    this.visible = false;
    this.player = player;
    this.closeScreen = null;
}

inherits(Dictionary, EventEmitter);

Dictionary.prototype.load = function(element, closeScreen) {
    this.element = element;
    this.element.innerHTML = dictionaryTpl;
    this.element.classList.add("vpw-dictionary");
    this.closeScreen = closeScreen;

    // Close button
    // this.element.querySelector('.panel .bar .btn-close')
    //   .addEventListener('click', this.hide.bind(this));

    // Signs trie
    this.signs = null;

    // List
    this.list = this.element.querySelector("ul");

    // Insert item method
    this.list._insert = function(word) {
        var item = document.createElement("li");

        if (word.indexOf("&") != -1) {
            regex = word.replace("&", "(");
            regex = regex + ")";
            item.innerHTML = regex;
            item.addEventListener("click", this._onItemClick.bind(this, word));
            this.list.appendChild(item);
        } else {
            item.innerHTML = word;
            item.addEventListener("click", this._onItemClick.bind(this, word));
            this.list.appendChild(item);
        }
    }.bind(this);

    // Request and load list
    var xhr = new XMLHttpRequest();
    xhr.open(
        "get",
        "https://dicionario2.vlibras.gov.br/signs?version=2018.3.1",
        true
    );
    xhr.responseType = "text";
    xhr.onload = function() {
        if (xhr.status == 200) {
            var json = JSON.parse(xhr.response);

            this.signs = new Trie(json);

            this.signs.loadSigns("", this.list._insert.bind(this.list));
            document
                .querySelector(".vpw-controls-dictionary.vpw-loading-dictionary")
                .classList.remove("vpw-loading-dictionary");
        } else console.error("Bad answer for signs, status: " + xhr.status);
    }.bind(this);
    xhr.send();

    this.defaultItem = this.list.querySelector("li");

    // Clear list method
    this.list._clear = function() {
        this.list.innerHTML = "";
    }.bind(this);

    // Search
    this.element.querySelector(".vpw-panel .vpw-search input").addEventListener(
        "keydown",
        function(event) {
            this.list._clear();
            this.signs.loadSigns(
                event.target.value.toUpperCase(),
                this.list._insert.bind(this.list)
            );
        }.bind(this)
    );

    // this.hide();
};

Dictionary.prototype._onItemClick = function(event, word) {
    this.closeScreen.closeAll();
    this.player.play(event);
};

Dictionary.prototype.toggle = function() {
    if (this.visible) this.hide();
    else this.show();
};

Dictionary.prototype.hide = function() {
    this.visible = false;
    this.element.classList.remove("active");
    this.emit("hide");
};

Dictionary.prototype.show = function() {
    this.visible = true;
    this.element.classList.add("active");
    this.emit("show");
};

module.exports = Dictionary;


//# sourceURL=webpack://VLibras/./plugin/components/Dictionary/index.js?
                                    

#95 JavaScript::Eval (size: 502, repeated: 1) - SHA256: fb38af35e42dc4fc1abf9e2e846e814477c5da4a0f725c24d7d56d4743bdd18d

                                        /**
 * Reduce `arr` with `fn`.
 *
 * @param {Array} arr
 * @param {Function} fn
 * @param {Mixed} initial
 *
 * TODO: combatible error handling?
 */

module.exports = function(arr, fn, initial) {
    var idx = 0;
    var len = arr.length;
    var curr = arguments.length == 3 ? initial : arr[idx++];

    while (idx < len) {
        curr = fn.call(null, curr, arr[idx], ++idx, arr);
    }

    return curr;
};

//# sourceURL=webpack://VLibras/../vlibras-player-webjs/node_modules/reduce-component/index.js?
                                    

#96 JavaScript::Eval (size: 766, repeated: 1) - SHA256: 0b913b79b7eedef615b9aaddadbbc22b71aed32fc9161c0ef0c2a03bfb2dbcdb

                                        var content = __webpack_require__( /*! !../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./settings.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./plugin/components/Settings/settings.scss");

if (typeof content === 'string') {
    content = [
        [module.i, content, '']
    ];
}

var options = {}

options.insert = "head";
options.singleton = false;

var update = __webpack_require__( /*! ../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js")(content, options);

if (content.locals) {
    module.exports = content.locals;
}


//# sourceURL=webpack://VLibras/./plugin/components/Settings/settings.scss?
                                    

#97 JavaScript::Eval (size: 276, repeated: 1) - SHA256: 01c943d457b3e52ed0b13e6ce84484424fcfce0be6020aa86dd761dbfb2c7de3

                                        __webpack_require__.r(__webpack_exports__);
/* harmony default export */
__webpack_exports__["default"] = ("<span class=\"vpw-mes\">VLIBRAS</span>\n<div settings-btn></div>\n<div settings-btn-close></div>\n");

//# sourceURL=webpack://VLibras/./plugin/components/Box/box.html?
                                    

#98 JavaScript::Eval (size: 176, repeated: 1) - SHA256: c75001df44463525ef8890ab0c73e021b55f1ca2ebdfe187fd47a967460e0306

                                        module.exports = __webpack_require__( /*! ./src/HashArray.js */ "./node_modules/hasharray/src/HashArray.js");

//# sourceURL=webpack://VLibras/./node_modules/hasharray/index.js?
                                    

#99 JavaScript::Eval (size: 1702, repeated: 1) - SHA256: 6621e6f76308e7b274854aa4f527cc651a34a9a2edf69197e14298f6e4076d94

                                        var template = __webpack_require__( /*! ./change-avatar.html */ "./plugin/components/ChangeAvatar/change-avatar.html").default;
__webpack_require__( /*! ./change-avatar.scss */ "./plugin/components/ChangeAvatar/change-avatar.scss");

function ChangeAvatar(player) {
    this.player = player;
    this.element = null;
}

ChangeAvatar.prototype.load = function(element) {
    this.element = element;
    this.element.innerHTML = template;
    const button = this.element.querySelector('.vp-button-change-avatar');
    let actualAvatar = 1;

    button.addEventListener('click', () => {
        switch (actualAvatar) {
            case 1:
                button.querySelector('.avatar-female').classList.remove('active');
                button.querySelector('.avatar-children').classList.add('active');
                this.player.changeAvatar("hozana");
                break;
            case 2:
                button.querySelector('.avatar-children').classList.remove('active');
                button.querySelector('.avatar-male').classList.add('active');
                this.player.changeAvatar("guga");
                break;
            case 3:
                button.querySelector('.avatar-male').classList.remove('active');
                button.querySelector('.avatar-female').classList.add('active');
                this.player.changeAvatar("icaro");
                break;
        }
        actualAvatar = (actualAvatar % 3) + 1
    });
};



ChangeAvatar.prototype.show = function() {
    this.enabled = true;
    this.element.classList.add('vp-disabled');
};

ChangeAvatar.prototype.hide = function() {
    if (this.element != undefined) {
        this.enabled = false;
        this.element.classList.remove('vp-disabled');
    }
};


module.exports = ChangeAvatar;


//# sourceURL=webpack://VLibras/./plugin/components/ChangeAvatar/index.js?
                                    

#100 JavaScript::Eval (size: 1223, repeated: 1) - SHA256: 129c0fe622947dc4418a402c825b5672e646fcd275cb134b2051cea9e5785803

                                        exports = module.exports = __webpack_require__( /*! ../../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js")(false);
// Module
exports.push([module.i, "[vw] [vw-access-button] {\n  display: none;\n  width: 140px;\n  text-align: center;\n  cursor: pointer;\n  margin: 0px 0px 0px -100px;\n  max-width: none; }\n  [vw] [vw-access-button].active {\n    display: block; }\n  [vw] [vw-access-button] .access-button {\n    width: 27%;\n    float: right; }\n  [vw] [vw-access-button] span {\n    font-size: 13px;\n    color: #004088; }\n  [vw] [vw-access-button] .access-button:hover + .pop-up {\n    width: 68%; }\n  [vw] [vw-access-button] .pop-up {\n    float: right;\n    width: 0%;\n    margin-right: 6px;\n    -webkit-transition: width 2s;\n    /* For Safari 3.1 to 6.0 */\n    transition: width 0.5s; }\n  [vw] [vw-access-button] .pop-up.left {\n    float: left !important;\n    margin-right: 0px; }\n  [vw] [vw-access-button] .access-button.left {\n    float: left !important;\n    margin-right: 6px; }\n", ""]);


//# sourceURL=webpack://VLibras/./widget/src/components/AccessButton/styles.scss?./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js
                                    

#101 JavaScript::Eval (size: 2928, repeated: 1) - SHA256: ef35f0108179c602efc3c21681a374c80e79c01108f0a9902c74f00e07c87605

                                        exports = module.exports = __webpack_require__( /*! ../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js")(false);
// Module
exports.push([module.i, "[vp] .vpw-dictionary {\n  display: none;\n  position: relative;\n  width: 100%;\n  height: calc(100% - 40px);\n  min-width: 300px;\n  min-height: 300px;\n  font-family: 'Open Sans', sans-serif;\n  background-color: white; }\n  [vp] .vpw-dictionary.active {\n    display: block; }\n  [vp] .vpw-dictionary .vpw-panel {\n    position: relative;\n    height: 114px;\n    background-color: white; }\n    [vp] .vpw-dictionary .vpw-panel .vpw-bar {\n      text-align: center;\n      padding-top: 20px; }\n    [vp] .vpw-dictionary .vpw-panel .vpw-search {\n      position: absolute;\n      width: 80%;\n      left: 50%;\n      transform: translateX(-50%);\n      margin-top: 20px; }\n      [vp] .vpw-dictionary .vpw-panel .vpw-search input {\n        position: absolute;\n        width: 100%;\n        left: 50%;\n        transform: translateX(-50%);\n        padding: 10px 10px 10px 10px;\n        border-radius: 6px;\n        border: 1px solid #DDD;\n        outline: none; }\n        [vp] .vpw-dictionary .vpw-panel .vpw-search input:focus {\n          border: 1px solid #00ddf9; }\n      [vp] .vpw-dictionary .vpw-panel .vpw-search .vpw-icon {\n        display: block;\n        position: relative; }\n        [vp] .vpw-dictionary .vpw-panel .vpw-search .vpw-icon img {\n          position: absolute;\n          height: 24px;\n          width: 24px;\n          top: 6px;\n          right: 7px; }\n  [vp] .vpw-dictionary .vpw-dict-container {\n    position: absolute;\n    width: 80%;\n    height: 68%;\n    left: 50%;\n    transform: translateX(-50%); }\n    [vp] .vpw-dictionary .vpw-dict-container ul {\n      height: 100%;\n      margin: 0;\n      padding: 0;\n      overflow-y: scroll;\n      list-style-type: none; }\n      [vp] .vpw-dictionary .vpw-dict-container ul::-webkit-scrollbar {\n        width: 8px; }\n      [vp] .vpw-dictionary .vpw-dict-container ul::-webkit-scrollbar-track {\n        background-color: #DDD; }\n      [vp] .vpw-dictionary .vpw-dict-container ul::-webkit-scrollbar-thumb {\n        background-color: #BCBCBC; }\n      [vp] .vpw-dictionary .vpw-dict-container ul li {\n        font-size: 14px;\n        cursor: pointer; }\n        [vp] .vpw-dictionary .vpw-dict-container ul li:hover {\n          background-color: #EAEAEA;\n          -webkit-transition: brackground-color 0.3s;\n          transition: brackground-color 0.4s; }\n        [vp] .vpw-dictionary .vpw-dict-container ul li.margin {\n          height: 114px; }\n        [vp] .vpw-dictionary .vpw-dict-container ul li:not(.margin) {\n          padding: 9px 10px 9px 10px; }\n", ""]);


//# sourceURL=webpack://VLibras/./plugin/components/Dictionary/dictionary.scss?./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js
                                    

#102 JavaScript::Eval (size: 1073, repeated: 1) - SHA256: 0903570e3857386da5ea0ea282af58b8fd619279b4d553f9bb6b044123abdf61

                                        var Trie = function(jsonData) {
    try {
        if (typeof jsonData === 'string') {
            this.root = JSON.parse(jsonData).root;
        } else {
            this.root = jsonData.root;
        }

    } catch (error) {
        this.root = {
            children: {},
            end: true
        };
        console.error('Failed to parse Prefix Tree from JSON\n' + error);
    }
}

Trie.prototype.loadSigns = function(keyWord, insertElement) {

    var search = function(node, word) {
        if (node.end) {
            insertElement(word);
        }

        var childrenKeys = Object.keys(node.children);

        for (var i = 0, len = childrenKeys.length; i < len; ++i) {
            search(node.children[childrenKeys[i]], word + childrenKeys[i]);
        }
    };

    var currentNode = this.root;
    keyWord = keyWord.toUpperCase();

    if (keyWord !== undefined) {
        for (var i = 0, len = keyWord.length; i < len; ++i) {
            try {
                currentNode = currentNode.children[keyWord[i]];
            } catch (error) {
                return;
            }
        }

        if (currentNode === undefined) {
            return;
        }
    }

    search(currentNode, keyWord);
};

module.exports = Trie;

//# sourceURL=webpack://VLibras/./plugin/components/Dictionary/trie.js?
                                    

#103 JavaScript::Eval (size: 1853, repeated: 1) - SHA256: 9b82be1818b1e426b7984c011a0635d5800d0b776a566e6c0755214dafb3fc47

                                        exports = module.exports = __webpack_require__( /*! ../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js")(false);
// Module
exports.push([module.i, "[vp] [vp-suggestion-button] {\n  display: flex;\n  flex-direction: row;\n  justify-content: flex-end;\n  position: absolute;\n  width: 100%;\n  bottom: 68px;\n  z-index: 2; }\n  [vp] [vp-suggestion-button] .vp-bounderies {\n    width: 100%;\n    overflow: hidden; }\n    [vp] [vp-suggestion-button] .vp-bounderies .vp-container {\n      display: flex;\n      flex-direction: column;\n      align-items: center;\n      padding-top: 10px;\n      padding-bottom: 10px;\n      background-color: rgba(255, 255, 255, 0.96);\n      z-index: 1;\n      transform: translateY(69px);\n      transition: transform 0.4s;\n      transition-delay: 0.4s; }\n      [vp] [vp-suggestion-button] .vp-bounderies .vp-container .vp-open-screen-button {\n        margin-bottom: 16px; }\n  [vp] [vp-suggestion-button] .vp-button-container {\n    position: absolute;\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    bottom: 0;\n    width: 100%;\n    padding-bottom: 10px;\n    z-index: 1;\n    opacity: 0;\n    transition: opacity 0.4s; }\n    [vp] [vp-suggestion-button] .vp-button-container .vp-close-button {\n      position: absolute;\n      bottom: -13px; }\n  [vp] [vp-suggestion-button].vp-enabled {\n    z-index: 4; }\n    [vp] [vp-suggestion-button].vp-enabled .vp-container {\n      transform: translateY(0);\n      transition-delay: 0s; }\n    [vp] [vp-suggestion-button].vp-enabled .vp-button-container {\n      opacity: 1;\n      transition-delay: 0.4s; }\n", ""]);


//# sourceURL=webpack://VLibras/./plugin/components/SuggestionButton/suggestion-button.scss?./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js
                                    

Executed Writes (0)



HTTP Transactions (48)


Request Response
                                        
                                            GET /v1/ HTTP/1.1 
Host: firefox.settings.services.mozilla.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site

                                         
                                         143.204.55.35
HTTP/1.1 200 OK
Content-Type: application/json
                                        
Content-Length: 939
Connection: keep-alive
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: Content-Type, Content-Length, Backoff, Retry-After, Alert
Content-Security-Policy: default-src 'none'; frame-ancestors 'none'; base-uri 'none';
Date: Fri, 09 Sep 2022 13:05:47 GMT
Strict-Transport-Security: max-age=31536000
X-Content-Type-Options: nosniff
X-Cache: Hit from cloudfront
Via: 1.1 dac7cf040932e0c072eeed10afdd7b3e.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: OSL50-C1
X-Amz-Cf-Id: SwZIgL3JpuIWT3K0e0f_0Q5I5YZqqfpOgqynzMojZxEnRV-pMxmS7A==
Age: 2402


--- Additional Info ---
Magic:  JSON data\012- , ASCII text, with very long lines (939), with no line terminators
Size:   939
Md5:    99b7d23c1748d0526782b9ff9ea45f09
Sha1:   eadd801a3ba2aa00632c6fb52e1f9125bd6d5b4f
Sha256: 48f81668f76955320480b484138aebdad5d03c471036b4449c737aca1ecab08e
                                        
                                            GET /moodle/login/forgot_password.php HTTP/1.1 
Host: isevirtualcampus.ise.org.br
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Upgrade-Insecure-Requests: 1

                                         
                                         172.104.195.251
HTTP/1.1 301 Moved Permanently
Content-Type: text/html; charset=iso-8859-1
                                        
Date: Fri, 09 Sep 2022 13:45:49 GMT
Server: Apache
Location: https://isevirtualcampus.ise.org.br/moodle/login/forgot_password.php
Content-Length: 276
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive


--- Additional Info ---
Magic:  HTML document text\012- HTML document text\012- HTML document text\012- HTML document text\012- HTML document text\012- exported SGML document, ASCII text
Size:   276
Md5:    c77eee2e5d710d0563bcad8e848df1f2
Sha1:   5001c81927b643774005a4f27836628f442c0d3e
Sha256: dc0aa9aa84739100f8cf8b2282e999d465d67f229171f49bafe46c5588964581
                                        
                                            POST / HTTP/1.1 
Host: r3.o.lencr.org
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/ocsp-request
Content-Length: 85
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

                                         
                                         23.36.76.226
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
                                        
Server: nginx
Content-Length: 503
ETag: "4B09E1D2B887DED061E4EC5F82EC70CE699EEED428ACC6B4FD3EF10ED9233C89"
Last-Modified: Thu, 08 Sep 2022 23:00:00 UTC
Cache-Control: public, no-transform, must-revalidate, max-age=8449
Expires: Fri, 09 Sep 2022 16:06:38 GMT
Date: Fri, 09 Sep 2022 13:45:49 GMT
Connection: keep-alive

                                        
                                            GET /chains/remote-settings.content-signature.mozilla.org-2022-10-09-23-18-04.chain HTTP/1.1 
Host: content-signature-2.cdn.mozilla.net
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: cross-site

                                         
                                         143.204.55.35
HTTP/2 200 OK
content-type: binary/octet-stream
                                        
content-length: 5348
last-modified: Sat, 20 Aug 2022 23:18:05 GMT
content-disposition: attachment
accept-ranges: bytes
server: AmazonS3
date: Fri, 09 Sep 2022 03:46:35 GMT
etag: "742edb4038f38bc533514982f3d2e861"
x-cache: Hit from cloudfront
via: 1.1 5de23153ac267c206221751e1cccb6e8.cloudfront.net (CloudFront)
x-amz-cf-pop: OSL50-C1
x-amz-cf-id: w1Jo6XYttLX7bgmQY67LzLcEB-zHnjgmLvUtWhGZSX7Pniik35ugBA==
age: 35955
X-Firefox-Spdy: h2


--- Additional Info ---
Magic:  PEM certificate\012- , ASCII text
Size:   5348
Md5:    742edb4038f38bc533514982f3d2e861
Sha1:   cc3a20c8dc2a8c632ef9387a2744253f1e3fdef1
Sha256: b6bfa49d3d135035701231db2fffc0c0643444394009a94c6a1b4d829d6b8345
                                        
                                            GET /v1/tiles HTTP/1.1 
Host: contile.services.mozilla.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site

                                         
                                         34.117.237.239
HTTP/2 200 OK
content-type: application/json
                                        
server: nginx
date: Fri, 09 Sep 2022 13:45:49 GMT
content-length: 12
strict-transport-security: max-age=31536000
via: 1.1 google
alt-svc: clear
X-Firefox-Spdy: h2


--- Additional Info ---
Magic:  JSON data\012- , ASCII text, with no line terminators
Size:   12
Md5:    23e88fb7b99543fb33315b29b1fad9d6
Sha1:   a48926c4ec03c7c8a4e8dffcd31e5a6cdda417ce
Sha256: 7d8f1de8b7de7bc21dfb546a1d0c51bf31f16eee5fad49dbceae1e76da38e5c3
                                        
                                            POST / HTTP/1.1 
Host: r3.o.lencr.org
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/ocsp-request
Content-Length: 85
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

                                         
                                         23.36.76.226
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
                                        
Server: nginx
Content-Length: 503
ETag: "EB96FB267FCDBA8BAA78D436CAE6C882AA14C8B5F0D0B390A2E69F30B9573D8F"
Last-Modified: Fri, 09 Sep 2022 10:00:00 UTC
Cache-Control: public, no-transform, must-revalidate, max-age=21600
Expires: Fri, 09 Sep 2022 19:45:49 GMT
Date: Fri, 09 Sep 2022 13:45:49 GMT
Connection: keep-alive

                                        
                                            GET /v1/buckets/main/collections/ms-language-packs/records/cfr-v1-en-US HTTP/1.1 
Host: firefox.settings.services.mozilla.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: application/json
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Content-Type: application/json
Connection: keep-alive
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site

                                         
                                         143.204.55.35
HTTP/1.1 200 OK
Content-Type: application/json
                                        
Content-Length: 329
Connection: keep-alive
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: ETag, Expires, Content-Length, Cache-Control, Pragma, Content-Type, Alert, Backoff, Last-Modified, Retry-After
Content-Security-Policy: default-src 'none'; frame-ancestors 'none'; base-uri 'none';
Last-Modified: Fri, 25 Mar 2022 17:45:46 GMT
Strict-Transport-Security: max-age=31536000
X-Content-Type-Options: nosniff
Date: Fri, 09 Sep 2022 12:56:07 GMT
Cache-Control: max-age=3600
Expires: Fri, 09 Sep 2022 13:40:05 GMT
ETag: "1648230346554"
X-Cache: Hit from cloudfront
Via: 1.1 8e6dce34fd223e0c9d89fd938d1784a2.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: OSL50-C1
X-Amz-Cf-Id: SkXdyMrXyTuCDIW-HXLKlUVi_NareBe3ChBbn9wc_nFO5R0baBEQAg==
Age: 2982


--- Additional Info ---
Magic:  JSON data\012- , ASCII text, with very long lines (329), with no line terminators
Size:   329
Md5:    0333b0655111aa68de771adfcc4db243
Sha1:   63f295a144ac87a7c8e23417626724eeca68a7eb
Sha256: 60636eb1dc67c9ed000fe0b49f03777ad6f549cb1d2b9ff010cf198465ae6300
                                        
                                            GET /moodle/login/forgot_password.php HTTP/1.1 
Host: isevirtualcampus.ise.org.br
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1

                                         
                                         172.104.195.251
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
                                        
Date: Fri, 09 Sep 2022 13:45:50 GMT
Server: Apache
Set-Cookie: MoodleSession=1c58qsnj9nfaklmn8pkkt957d2; path=/moodle/; secure
Expires:
Cache-Control: private, pre-check=0, post-check=0, max-age=0, no-transform
Pragma: no-cache
Content-Language: en-us
Content-Script-Type: text/javascript
Content-Style-Type: text/css
X-UA-Compatible: IE=edge
Accept-Ranges: none
X-Frame-Options: sameorigin
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 8171
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive


--- Additional Info ---
Magic:  HTML document text\012- HTML document text\012- HTML document text\012- HTML document text\012- HTML document text\012- HTML document text\012- exported SGML document, Unicode text, UTF-8 text, with very long lines (12210), with CRLF, LF line terminators
Size:   8171
Md5:    80b793f275dbcd46111ff179f5bb3067
Sha1:   5be533f2664f0a57aa065a1380f8cbd2478635d1
Sha256: 3cb606c189666837ea31615a21ebd205d830d23d40d1c5d38524669aa6a77a40
                                        
                                            POST / HTTP/1.1 
Host: ocsp.digicert.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/ocsp-request
Content-Length: 83
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

                                         
                                         93.184.220.29
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
                                        
Accept-Ranges: bytes
Age: 5549
Cache-Control: 'max-age=158059'
Date: Fri, 09 Sep 2022 13:45:50 GMT
Last-Modified: Fri, 09 Sep 2022 12:13:21 GMT
Server: ECS (ska/F717)
X-Cache: HIT
Content-Length: 471

                                        
                                            GET /ajax/libs/jquery/3.1.0/jquery.min.js HTTP/1.1 
Host: cdnjs.cloudflare.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: https://isevirtualcampus.ise.org.br/
Sec-Fetch-Dest: script
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: cross-site

                                         
                                         104.17.24.14
HTTP/2 200 OK
content-type: application/javascript; charset=utf-8
                                        
date: Fri, 09 Sep 2022 13:45:50 GMT
content-length: 27198
access-control-allow-origin: *
cache-control: public, max-age=30672000
content-encoding: br
etag: "5eb03ec4-1514f"
last-modified: Mon, 04 May 2020 16:11:48 GMT
cf-cdnjs-via: cfworker/kv
cross-origin-resource-policy: cross-origin
timing-allow-origin: *
x-content-type-options: nosniff
expect-ct: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
vary: Accept-Encoding
cf-cache-status: HIT
age: 5774816
expires: Wed, 30 Aug 2023 13:45:50 GMT
accept-ranges: bytes
report-to: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=J%2BHLgVRB2yAM4A9k69BkRucWnZ9Vgsw8kL2QUyG9EVTyJbtjtGoBYg28Hmhh5%2Bifx%2FlhmIDUkszF%2F4dkQmskffXeMlyS1DBQSgFfGUY5Bq%2FesiiFhZnSw0ZBMt3ia%2Br2Qpn6L6GT"}],"group":"cf-nel","max_age":604800}
nel: {"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}
strict-transport-security: max-age=15780000
server: cloudflare
cf-ray: 74805dd93c14b509-OSL
alt-svc: h3=":443"; ma=86400, h3-29=":443"; ma=86400
X-Firefox-Spdy: h2


--- Additional Info ---
Magic:  ASCII text, with very long lines (32014)
Size:   27198
Md5:    b0a538eca8603c37c15e4ccd04500c57
Sha1:   f89f4099777ae63be4e09fee2b1227bc6874fd73
Sha256: 917decede324477626db7f615c8ee595556bafb7a875bdc9d3c3b1b94b345307
                                        
                                            POST /gts1c3 HTTP/1.1 
Host: ocsp.pki.goog
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/ocsp-request
Content-Length: 84
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

                                         
                                         142.250.74.3
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
                                        
Date: Fri, 09 Sep 2022 13:45:50 GMT
Cache-Control: public, max-age=14400
Server: ocsp_responder
Content-Length: 472
X-XSS-Protection: 0
X-Frame-Options: SAMEORIGIN

                                        
                                            GET /moodle/theme/yui_combo.php?rollup/3.17.2/yui-moodlesimple-min.css HTTP/1.1 
Host: isevirtualcampus.ise.org.br
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: text/css,*/*;q=0.1
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: https://isevirtualcampus.ise.org.br/moodle/login/forgot_password.php
Cookie: MoodleSession=1c58qsnj9nfaklmn8pkkt957d2
Sec-Fetch-Dest: style
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: same-origin

                                         
                                         172.104.195.251
HTTP/1.1 200 OK
Content-Type: text/css;charset=UTF-8
                                        
Date: Fri, 09 Sep 2022 13:45:50 GMT
Server: Apache
Content-Disposition: inline; filename="combo"
Last-Modified: Mon, 08 Feb 2021 20:26:35 GMT
Expires: Mon, 04 Sep 2023 13:45:50 GMT
Pragma:
Cache-Control: public, max-age=31104000, immutable
Accept-Ranges: none
Etag: "b9bc567c469e2872cf3bbb14603342a72de2509b"
Content-Encoding: gzip
Vary: Accept-Encoding
Content-Length: 1035
Keep-Alive: timeout=5, max=99
Connection: Keep-Alive


--- Additional Info ---
Magic:  ASCII text, with very long lines (1979)
Size:   1035
Md5:    e9af13e8b2f0629ef7870ec0739b34d7
Sha1:   aa847b31163541a887abc75b16b8eb3abcda07c5
Sha256: 3502516177349829f86389b536ce18da881d6573c7662f21913f0517508edfa5
                                        
                                            POST /gts1c3 HTTP/1.1 
Host: ocsp.pki.goog
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/ocsp-request
Content-Length: 84
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

                                         
                                         142.250.74.3
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
                                        
Date: Fri, 09 Sep 2022 13:45:50 GMT
Cache-Control: public, max-age=14400
Server: ocsp_responder
Content-Length: 472
X-XSS-Protection: 0
X-Frame-Options: SAMEORIGIN

                                        
                                            GET /moodle/lib/javascript.php/1662400547/lib/polyfills/polyfill.js HTTP/1.1 
Host: isevirtualcampus.ise.org.br
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: https://isevirtualcampus.ise.org.br/moodle/login/forgot_password.php
Cookie: MoodleSession=1c58qsnj9nfaklmn8pkkt957d2
Sec-Fetch-Dest: script
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: same-origin

                                         
                                         172.104.195.251
HTTP/1.1 200 OK
Content-Type: application/javascript; charset=utf-8
                                        
Date: Fri, 09 Sep 2022 13:45:50 GMT
Server: Apache
Etag: "91f0c6f6a10a971e1e688bc4d53403de3e7c81c6"
Content-Disposition: inline; filename="javascript.php"
Last-Modified: Mon, 05 Sep 2022 17:55:51 GMT
Expires: Thu, 08 Dec 2022 13:45:50 GMT
Pragma:
Cache-Control: public, max-age=7776000, immutable
Accept-Ranges: none
Content-Encoding: gzip
Vary: Accept-Encoding
Content-Length: 5244
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive


--- Additional Info ---
Magic:  ASCII text, with very long lines (17856), with no line terminators
Size:   5244
Md5:    b00bc2defa5b15d6ace9fbfbb21e497b
Sha1:   bbc448bdeaaf79a982ba1d192107f07aebe3e123
Sha256: 443e73663610cb7ccb8a7ae7da6f080ddde4a6414ea975e0914edddc6aabdefc
                                        
                                            GET /moodle/lib/javascript.php/1662400547/lib/babel-polyfill/polyfill.min.js HTTP/1.1 
Host: isevirtualcampus.ise.org.br
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: https://isevirtualcampus.ise.org.br/moodle/login/forgot_password.php
Cookie: MoodleSession=1c58qsnj9nfaklmn8pkkt957d2
Sec-Fetch-Dest: script
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: same-origin

                                         
                                         172.104.195.251
HTTP/1.1 200 OK
Content-Type: application/javascript; charset=utf-8
                                        
Date: Fri, 09 Sep 2022 13:45:50 GMT
Server: Apache
Etag: "134804fdfbd1bd7ba220ac9a977f5383ad0cd263"
Content-Disposition: inline; filename="javascript.php"
Last-Modified: Mon, 05 Sep 2022 17:55:51 GMT
Expires: Thu, 08 Dec 2022 13:45:50 GMT
Pragma:
Cache-Control: public, max-age=7776000, immutable
Accept-Ranges: none
Content-Encoding: gzip
Vary: Accept-Encoding
Keep-Alive: timeout=5, max=98
Connection: Keep-Alive
Transfer-Encoding: chunked


--- Additional Info ---
Magic:  Unicode text, UTF-8 text, with very long lines (34750), with NEL line terminators
Size:   34221
Md5:    a8da4866c35fec35e4ead0c273e5d8fe
Sha1:   cb422b31f1e5248f9eb4ac49355ddc2498a8fe08
Sha256: f5a3a7a1a5fad47d3ba52273cee1e55ca7afd8c0cfed14d884571c347c41fbec
                                        
                                            GET /moodle/lib/javascript.php/1662400547/lib/javascript-static.js HTTP/1.1 
Host: isevirtualcampus.ise.org.br
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: https://isevirtualcampus.ise.org.br/moodle/login/forgot_password.php
Cookie: MoodleSession=1c58qsnj9nfaklmn8pkkt957d2
Sec-Fetch-Dest: script
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: same-origin

                                         
                                         172.104.195.251
HTTP/1.1 200 OK
Content-Type: application/javascript; charset=utf-8
                                        
Date: Fri, 09 Sep 2022 13:45:50 GMT
Server: Apache
Etag: "dbc46970de38d3a16523772acd2f1b56ad7b9cc9"
Content-Disposition: inline; filename="javascript.php"
Last-Modified: Mon, 05 Sep 2022 17:55:51 GMT
Expires: Thu, 08 Dec 2022 13:45:50 GMT
Pragma:
Cache-Control: public, max-age=7776000, immutable
Accept-Ranges: none
Content-Encoding: gzip
Vary: Accept-Encoding
Content-Length: 6777
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive


--- Additional Info ---
Magic:  HTML document, ASCII text, with very long lines (1875)
Size:   6777
Md5:    9a4c20372f0c53bc61ac3c90d203776a
Sha1:   05879d8f0e082b0663c76e1c81ff2e368d8a09ae
Sha256: b64e57b396514a45e7680e661271d0d86d880765c8faaf5655c6a19940bae6d5
                                        
                                            GET / HTTP/1.1 
Host: push.services.mozilla.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Sec-WebSocket-Version: 13
Origin: wss://push.services.mozilla.com/
Sec-WebSocket-Protocol: push-notification
Sec-WebSocket-Extensions: permessage-deflate
Sec-WebSocket-Key: fPY6/RNGx0Eny/I7OEfysQ==
Connection: keep-alive, Upgrade
Sec-Fetch-Dest: websocket
Sec-Fetch-Mode: websocket
Sec-Fetch-Site: cross-site
Pragma: no-cache
Cache-Control: no-cache
Upgrade: websocket

                                         
                                         52.27.12.161
HTTP/1.1 101 Switching Protocols
                                        
Connection: Upgrade
Upgrade: websocket
Sec-WebSocket-Accept: KNO5CNmSsmJfiOslA2KQQp6kQNM=

                                        
                                            GET /wp-content/uploads/moodle.css HTTP/1.1 
Host: survey.ise.org.br
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: text/css,*/*;q=0.1
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: https://isevirtualcampus.ise.org.br/
Sec-Fetch-Dest: style
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: same-site

                                         
                                         162.241.133.109
HTTP/1.1 200 OK
Content-Type: text/css
                                        
Date: Fri, 09 Sep 2022 13:45:50 GMT
Server: Apache
Last-Modified: Thu, 04 Aug 2022 14:38:29 GMT
Accept-Ranges: bytes
Content-Length: 2663
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive


--- Additional Info ---
Magic:  ASCII text, with CRLF line terminators
Size:   2663
Md5:    18f7e001afa3acd6ca4b766b7167f4fc
Sha1:   4e064d34c708b616b1adfeb6831d0800a5d8bbb6
Sha256: 39364088219a64425e641beda032e8deacd6f4a80bd53115faa7ab8d4f17a71c
                                        
                                            GET /wp-content/uploads/moodle.js HTTP/1.1 
Host: survey.ise.org.br
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: https://isevirtualcampus.ise.org.br/
Sec-Fetch-Dest: script
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: same-site

                                         
                                         162.241.133.109
HTTP/1.1 200 OK
Content-Type: application/javascript
                                        
Date: Fri, 09 Sep 2022 13:45:50 GMT
Server: Apache
Last-Modified: Tue, 21 Jun 2022 20:01:33 GMT
Accept-Ranges: bytes
Content-Length: 252
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive


--- Additional Info ---
Magic:  ASCII text, with CRLF line terminators
Size:   252
Md5:    bad4781d1ffd5b4f91c434aa6dc541d6
Sha1:   b1631fc3ead2156215012dc7af97e70d04bb375a
Sha256: 73299acbf7c98be90e1cc1c31e42e7eca041134d2f23a749a615f70851d4138f

Alerts:
  Blocklists:
    - fortinet: Malware
                                        
                                            POST / HTTP/1.1 
Host: ocsp.sca1b.amazontrust.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/ocsp-request
Content-Length: 83
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

                                         
                                         143.204.42.88
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
                                        
Content-Length: 471
Connection: keep-alive
Accept-Ranges: bytes
Cache-Control: 'max-age=158059'
Date: Fri, 09 Sep 2022 13:45:50 GMT
Last-Modified: Fri, 09 Sep 2022 12:00:05 GMT
Server: ECS (nyb/1D19)
X-Cache: Miss from cloudfront
Via: 1.1 814e8c24454087e83cd261a6cf477166.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: OSL50-C1
X-Amz-Cf-Id: Ts4Bc7DUIBoQVeyu4hbglE43GOGMoIjmBOTcXjAASJk1Grn5iA3fOA==
Age: 6345

                                        
                                            GET /moodle/theme/yui_combo.php?rollup/3.17.2/yui-moodlesimple-min.js HTTP/1.1 
Host: isevirtualcampus.ise.org.br
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: https://isevirtualcampus.ise.org.br/moodle/login/forgot_password.php
Cookie: MoodleSession=1c58qsnj9nfaklmn8pkkt957d2
Sec-Fetch-Dest: script
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: same-origin

                                         
                                         172.104.195.251
HTTP/1.1 200 OK
Content-Type: application/javascript
                                        
Date: Fri, 09 Sep 2022 13:45:50 GMT
Server: Apache
Content-Disposition: inline; filename="combo"
Last-Modified: Mon, 08 Feb 2021 20:26:35 GMT
Expires: Mon, 04 Sep 2023 13:45:50 GMT
Pragma:
Cache-Control: public, max-age=31104000, immutable
Accept-Ranges: none
Etag: "78581a0bac8a932effb32db3e91e0f2f2b47c08e"
Content-Encoding: gzip
Vary: Accept-Encoding
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked


--- Additional Info ---
Magic:  ASCII text, with very long lines (6010)
Size:   84392
Md5:    8bcb376a1000018ace15774394400419
Sha1:   2f8e8e67c1c31bac12aca22f482c3ef33a28a7a7
Sha256: ba65826c64be1db28f1d0549c4dcce3598464e4da1154b26b28e6d6c58db25af
                                        
                                            GET /moodle/theme/styles.php/boost/1662400547_1656005163/all HTTP/1.1 
Host: isevirtualcampus.ise.org.br
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: text/css,*/*;q=0.1
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: https://isevirtualcampus.ise.org.br/moodle/login/forgot_password.php
Cookie: MoodleSession=1c58qsnj9nfaklmn8pkkt957d2
Sec-Fetch-Dest: style
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: same-origin

                                         
                                         172.104.195.251
HTTP/1.1 200 OK
Content-Type: text/css; charset=utf-8
                                        
Date: Fri, 09 Sep 2022 13:45:50 GMT
Server: Apache
Etag: "844975bf34d054bda80d08ec374d6b8fb785a4af"
Content-Disposition: inline; filename="styles.php"
Last-Modified: Wed, 07 Sep 2022 17:41:58 GMT
Expires: Thu, 08 Dec 2022 13:45:50 GMT
Pragma:
Cache-Control: public, max-age=7776000, immutable
Accept-Ranges: none
Content-Encoding: gzip
Vary: Accept-Encoding
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked


--- Additional Info ---
Magic:  Unicode text, UTF-8 text, with very long lines (65532), with no line terminators
Size:   117114
Md5:    6817ad80195dbd2e94bade277b151fab
Sha1:   bd4cc7314998e0e5e99f56248b893507e22f49ce
Sha256: 9539e72820e439ee550a09cabd1240b87d78533e2053e8e2dffa27b5ec6bef8e
                                        
                                            GET /moodle/pluginfile.php/1/core_admin/logocompact/300x300/1662400547/logo%20ISE.png HTTP/1.1 
Host: isevirtualcampus.ise.org.br
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: image/avif,image/webp,*/*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: https://isevirtualcampus.ise.org.br/moodle/login/forgot_password.php
Cookie: MoodleSession=1c58qsnj9nfaklmn8pkkt957d2
Sec-Fetch-Dest: image
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: same-origin

                                         
                                         172.104.195.251
HTTP/1.1 200 OK
Content-Type: image/png
                                        
Date: Fri, 09 Sep 2022 13:45:51 GMT
Server: Apache
Expires: Tue, 08 Nov 2022 13:45:51 GMT
Cache-Control: public, max-age=5184000, no-transform
Pragma:
Content-Disposition: inline; filename="logo ISE.png"
Last-Modified: Mon, 05 Sep 2022 17:55:51 GMT
Accept-Ranges: bytes
Content-Length: 10832
Keep-Alive: timeout=5, max=99
Connection: Keep-Alive


--- Additional Info ---
Magic:  PNG image data, 182 x 102, 8-bit/color RGBA, non-interlaced\012- data
Size:   10832
Md5:    c267a3ffa808083f7c15a4093d36e730
Sha1:   58f076adee8df1d397dc36a93f063e6cf0513a30
Sha256: 658c5dbfa2d82cc6e9f012c3b868f23d9b02ae928589e917729f0aca6e6b6e8b
                                        
                                            GET /moodle/theme/font.php/boost/core/1662400547/fontawesome-webfont.woff2?v=4.7.0 HTTP/1.1 
Host: isevirtualcampus.ise.org.br
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: application/font-woff2;q=1.0,application/font-woff;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: identity
Connection: keep-alive
Referer: https://isevirtualcampus.ise.org.br/moodle/theme/styles.php/boost/1662400547_1656005163/all
Cookie: MoodleSession=1c58qsnj9nfaklmn8pkkt957d2
Sec-Fetch-Dest: font
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin

                                         
                                         172.104.195.251
HTTP/1.1 200 OK
Content-Type: application/font-woff2
                                        
Date: Fri, 09 Sep 2022 13:45:51 GMT
Server: Apache
Etag: "85a3561097c942fa205ba88c4c4a17f06bf42f4b"
Content-Disposition: inline; filename="fontawesome-webfont.woff2"
Last-Modified: Mon, 05 Sep 2022 17:56:13 GMT
Expires: Thu, 08 Dec 2022 13:45:51 GMT
Pragma:
Cache-Control: public, max-age=7776000, immutable
Accept-Ranges: none
Content-Length: 77160
Keep-Alive: timeout=5, max=99
Connection: Keep-Alive


--- Additional Info ---
Magic:  Web Open Font Format (Version 2), TrueType, length 77160, version 4.459\012- data
Size:   77160
Md5:    af7ae505a9eed503f8b8e6982036873e
Sha1:   d6f48cba7d076fb6f2fd6ba993a75b9dc1ecbf0c
Sha256: 2adefcbc041e7d18fcf2d417879dc5a09997aa64d675b7a3c4b6ce33da13f3fe
                                        
                                            POST / HTTP/1.1 
Host: r3.o.lencr.org
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/ocsp-request
Content-Length: 85
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

                                         
                                         23.36.76.226
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
                                        
Server: nginx
Content-Length: 503
ETag: "48B4321F3BDA8FD67C5BC75F98B0DFE6DF2BFDA8DCF5E708AECD47270AE03217"
Last-Modified: Wed, 07 Sep 2022 20:00:00 UTC
Cache-Control: public, no-transform, must-revalidate, max-age=12017
Expires: Fri, 09 Sep 2022 17:06:08 GMT
Date: Fri, 09 Sep 2022 13:45:51 GMT
Connection: keep-alive

                                        
                                            POST / HTTP/1.1 
Host: r3.o.lencr.org
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/ocsp-request
Content-Length: 85
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

                                         
                                         23.36.76.226
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
                                        
Server: nginx
Content-Length: 503
ETag: "48B4321F3BDA8FD67C5BC75F98B0DFE6DF2BFDA8DCF5E708AECD47270AE03217"
Last-Modified: Wed, 07 Sep 2022 20:00:00 UTC
Cache-Control: public, no-transform, must-revalidate, max-age=12017
Expires: Fri, 09 Sep 2022 17:06:08 GMT
Date: Fri, 09 Sep 2022 13:45:51 GMT
Connection: keep-alive

                                        
                                            POST / HTTP/1.1 
Host: r3.o.lencr.org
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/ocsp-request
Content-Length: 85
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

                                         
                                         23.36.76.226
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
                                        
Server: nginx
Content-Length: 503
ETag: "48B4321F3BDA8FD67C5BC75F98B0DFE6DF2BFDA8DCF5E708AECD47270AE03217"
Last-Modified: Wed, 07 Sep 2022 20:00:00 UTC
Cache-Control: public, no-transform, must-revalidate, max-age=12017
Expires: Fri, 09 Sep 2022 17:06:08 GMT
Date: Fri, 09 Sep 2022 13:45:51 GMT
Connection: keep-alive

                                        
                                            POST / HTTP/1.1 
Host: r3.o.lencr.org
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/ocsp-request
Content-Length: 85
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

                                         
                                         23.36.76.226
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
                                        
Server: nginx
Content-Length: 503
ETag: "48B4321F3BDA8FD67C5BC75F98B0DFE6DF2BFDA8DCF5E708AECD47270AE03217"
Last-Modified: Wed, 07 Sep 2022 20:00:00 UTC
Cache-Control: public, no-transform, must-revalidate, max-age=12017
Expires: Fri, 09 Sep 2022 17:06:08 GMT
Date: Fri, 09 Sep 2022 13:45:51 GMT
Connection: keep-alive

                                        
                                            GET /296x148/filters:format(jpeg):quality(60):no_upscale():strip_exif()/https%3A%2F%2Fs3.amazonaws.com%2Fpocket-curatedcorpusapi-prod-images%2F498f96cc-d02c-4ca3-a7e2-0be324253465.jpeg HTTP/1.1 
Host: img-getpocket.cdn.mozilla.net
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: image/avif,image/webp,*/*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Origin: null
Connection: keep-alive
Sec-Fetch-Dest: image
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site

                                         
                                         34.120.237.76
HTTP/2 200 OK
content-type: image/jpeg
                                        
server: nginx
content-length: 3125
x-amzn-requestid: 5820e798-6469-40f9-8d70-ee71f1a163b9
x-xss-protection: 1; mode=block
access-control-allow-origin: *
strict-transport-security: max-age=63072000; includeSubdomains; preload
x-frame-options: DENY
content-security-policy: default-src 'none'; img-src 'self'; script-src 'self'; style-src 'self'; object-src 'none'
x-amz-apigw-id: YLM5GGQAoAMF8eQ=
x-content-type-options: nosniff
x-amzn-trace-id: Root=1-631ac1d3-3a0e9db848ea7ab145f1cffa;Sampled=0
x-amzn-remapped-date: Fri, 09 Sep 2022 04:32:19 GMT
x-amz-cf-pop: HIO50-C1, SEA73-P2
x-cache: Miss from cloudfront
x-amz-cf-id: eZaKpjBYe3Qn7vs3zF52Cxob-xu3LMFs8esQAu6Lp6bzM0aOEHoXVg==
via: 1.1 a4fe306096165bb1e86e69365dc8fac2.cloudfront.net (CloudFront), 1.1 1352c0a623ff0601dd16439f3f225f70.cloudfront.net (CloudFront), 1.1 google
date: Fri, 09 Sep 2022 04:32:20 GMT
etag: "113393e0dbabb3aff949d19ab6517ba1082b622d"
age: 33211
cache-control: max-age=3600,public,public
alt-svc: clear
X-Firefox-Spdy: h2


--- Additional Info ---
Magic:  JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, progressive, precision 8, 296x148, components 3\012- data
Size:   3125
Md5:    0078c7a407144a1ede33aef6f734eecf
Sha1:   113393e0dbabb3aff949d19ab6517ba1082b622d
Sha256: 42afcaf15e45dfa9aff14f59f69d60a3de127005e35783d2d35a4cfa652b57b3
                                        
                                            GET /296x148/filters:format(jpeg):quality(60):no_upscale():strip_exif()/https%3A%2F%2Fs3.amazonaws.com%2Fpocket-curatedcorpusapi-prod-images%2F734c0779-c033-4fb9-aef7-ec81416744c3.jpeg HTTP/1.1 
Host: img-getpocket.cdn.mozilla.net
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: image/avif,image/webp,*/*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Origin: null
Connection: keep-alive
Sec-Fetch-Dest: image
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site

                                         
                                         34.120.237.76
HTTP/2 200 OK
content-type: image/jpeg
                                        
server: nginx
content-length: 6365
x-amzn-requestid: dc414175-8174-4fa8-812b-1f72de48d5f7
x-xss-protection: 1; mode=block
access-control-allow-origin: *
strict-transport-security: max-age=63072000; includeSubdomains; preload
x-frame-options: DENY
content-security-policy: default-src 'none'; img-src 'self'; script-src 'self'; style-src 'self'; object-src 'none'
x-amz-apigw-id: YKRBYEt8oAMFmyg=
x-content-type-options: nosniff
x-amzn-trace-id: Root=1-631a6208-1c2417b120725a9a0642620a;Sampled=0
x-amzn-remapped-date: Thu, 08 Sep 2022 21:43:36 GMT
x-amz-cf-pop: HIO50-C1, SEA73-P2
x-cache: Miss from cloudfront
x-amz-cf-id: 8Bvag9DT9hfKBaEhvBZ3UOna0tA_z7uvExg_2VVhd5yHy9BiJAkHbQ==
via: 1.1 0c96ded7ff282d2dbcf47c918b6bb500.cloudfront.net (CloudFront), 1.1 76dcc62b68091cc715d50b5017be77fc.cloudfront.net (CloudFront), 1.1 google
date: Thu, 08 Sep 2022 21:54:52 GMT
age: 57059
etag: "ff2c27cf141c68259e6e85020b01efc5d41730a6"
cache-control: max-age=3600,public,public
alt-svc: clear
X-Firefox-Spdy: h2


--- Additional Info ---
Magic:  JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, progressive, precision 8, 296x148, components 3\012- data
Size:   6365
Md5:    cf8614d876156699bdf11897c45e9ae8
Sha1:   ff2c27cf141c68259e6e85020b01efc5d41730a6
Sha256: c89d6a2fdc789fc725e8bac99774f9f9f0b22000f57d32f5611525bca30002d9
                                        
                                            GET /296x148/filters:format(jpeg):quality(60):no_upscale():strip_exif()/https%3A%2F%2Fs3.amazonaws.com%2Fpocket-curatedcorpusapi-prod-images%2Fd9009587-828b-4a7a-8b84-f28d4b93cdef.jpeg HTTP/1.1 
Host: img-getpocket.cdn.mozilla.net
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: image/avif,image/webp,*/*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Origin: null
Connection: keep-alive
Sec-Fetch-Dest: image
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site

                                         
                                         34.120.237.76
HTTP/2 200 OK
content-type: image/jpeg
                                        
server: nginx
content-length: 7515
x-amzn-requestid: eaf81b32-3b53-4e89-a9d0-943bc9f9982f
x-xss-protection: 1; mode=block
access-control-allow-origin: *
strict-transport-security: max-age=63072000; includeSubdomains; preload
x-frame-options: DENY
content-security-policy: default-src 'none'; img-src 'self'; script-src 'self'; style-src 'self'; object-src 'none'
x-amz-apigw-id: X0j0QFhxoAMF-Mw=
x-content-type-options: nosniff
x-amzn-trace-id: Root=1-6311b34e-114287d30092033a2b54ec01;Sampled=0
x-amzn-remapped-date: Fri, 02 Sep 2022 07:39:58 GMT
x-amz-cf-pop: SEA73-P2
x-cache: Hit from cloudfront
x-amz-cf-id: _mlXN3nJ7ZPcUDWIqqiv2CB6dkSJ2Y-AZIXNs4xOj18ZX6DYMdhXAA==
via: 1.1 49b94a8674d6e86a841d6523f7dbaf14.cloudfront.net (CloudFront), 1.1 ece5d4a731ece5ff46c564ab2b946ede.cloudfront.net (CloudFront), 1.1 google
date: Thu, 08 Sep 2022 21:46:19 GMT
age: 57572
etag: "09dcbdc6043f01dd56920cca3ce3920d0d07b795"
cache-control: max-age=3600,public,public
alt-svc: clear
X-Firefox-Spdy: h2


--- Additional Info ---
Magic:  JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, progressive, precision 8, 296x148, components 3\012- data
Size:   7515
Md5:    60fa03262bb3728f24a4c7a8177ec788
Sha1:   09dcbdc6043f01dd56920cca3ce3920d0d07b795
Sha256: e7448f186933f9848f1d55f0e8dba593918846d02fb9cc3a7cd86d69b96a7fde
                                        
                                            GET /296x148/filters:format(jpeg):quality(60):no_upscale():strip_exif()/https%3A%2F%2Fs3.amazonaws.com%2Fpocket-curatedcorpusapi-prod-images%2Fc632269f-fb89-42dc-acc4-f733f3d7beb7.jpeg HTTP/1.1 
Host: img-getpocket.cdn.mozilla.net
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: image/avif,image/webp,*/*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Origin: null
Connection: keep-alive
Sec-Fetch-Dest: image
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site

                                         
                                         34.120.237.76
HTTP/2 200 OK
content-type: image/jpeg
                                        
server: nginx
content-length: 4532
x-amzn-requestid: e5694699-7f38-4542-8808-54bda7ee7d86
x-xss-protection: 1; mode=block
access-control-allow-origin: *
strict-transport-security: max-age=63072000; includeSubdomains; preload
x-frame-options: DENY
content-security-policy: default-src 'none'; img-src 'self'; script-src 'self'; style-src 'self'; object-src 'none'
x-amz-apigw-id: YIMmGGUmIAMF2cw=
x-content-type-options: nosniff
x-amzn-trace-id: Root=1-63198e26-1aa6788e24fcfdf0008bee21;Sampled=0
x-amzn-remapped-date: Thu, 08 Sep 2022 06:39:34 GMT
x-amz-cf-pop: SEA19-C1, SEA19-C2
x-cache: Hit from cloudfront
x-amz-cf-id: zdVUahmbPQ7sQMlg14M89JOwjN2PEM03GNLYEwxPjcaioRpyqb8isA==
via: 1.1 ef6538ee7be7b17c84d06edb0f4c0a1a.cloudfront.net (CloudFront), 1.1 7eb3b782ab09047ce0d11ee03763894c.cloudfront.net (CloudFront), 1.1 google
date: Thu, 08 Sep 2022 22:26:32 GMT
age: 55159
etag: "70ede5692526afd351d134a391383461dafdc64f"
cache-control: max-age=3600,public,public
alt-svc: clear
X-Firefox-Spdy: h2


--- Additional Info ---
Magic:  JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, progressive, precision 8, 296x148, components 3\012- data
Size:   4532
Md5:    a5fdeb374d4e3669ce5d9ff2cd22cd19
Sha1:   70ede5692526afd351d134a391383461dafdc64f
Sha256: 10c5d8e41aae1a36525a45375966b5067333f0c7edc176a540fd6527ebe1ad8c
                                        
                                            GET /296x148/filters:format(jpeg):quality(60):no_upscale():strip_exif()/https%3A%2F%2Fs3.amazonaws.com%2Fpocket-curatedcorpusapi-prod-images%2Fb5a39739-e855-4625-859f-7e2fed3d2511.jpeg HTTP/1.1 
Host: img-getpocket.cdn.mozilla.net
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: image/avif,image/webp,*/*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Origin: null
Connection: keep-alive
Sec-Fetch-Dest: image
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site

                                         
                                         34.120.237.76
HTTP/2 200 OK
content-type: image/jpeg
                                        
server: nginx
content-length: 12107
x-amzn-requestid: 9ea883d8-b844-49d0-8651-67124d2c0852
x-xss-protection: 1; mode=block
access-control-allow-origin: *
strict-transport-security: max-age=63072000; includeSubdomains; preload
x-frame-options: DENY
content-security-policy: default-src 'none'; img-src 'self'; script-src 'self'; style-src 'self'; object-src 'none'
x-amz-apigw-id: YG9TgHANIAMF5rQ=
x-content-type-options: nosniff
x-amzn-trace-id: Root=1-63190f49-137ad22c52baa6fb04ae190d;Sampled=0
x-amzn-remapped-date: Wed, 07 Sep 2022 21:38:17 GMT
x-amz-cf-pop: SEA19-C2
x-cache: Miss from cloudfront
x-amz-cf-id: fq_ew5bfpcSJ7F229SyDLZlpOnmSWujlU7HzwsQIS1q2HZSvsHGuvQ==
via: 1.1 56c69262ecfa7873b40572ba8a323242.cloudfront.net (CloudFront), 1.1 ee8246c5442dace7525c74f6a799bb46.cloudfront.net (CloudFront), 1.1 google
date: Thu, 08 Sep 2022 22:13:21 GMT
age: 55950
etag: "15cefe1e2be8ad63e40cfe02c2f5f8c59af015ad"
cache-control: max-age=3600,public,public
alt-svc: clear
X-Firefox-Spdy: h2


--- Additional Info ---
Magic:  JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, progressive, precision 8, 296x148, components 3\012- data
Size:   12107
Md5:    a9ca2de4e61d1aae73da7d13ad3ec727
Sha1:   15cefe1e2be8ad63e40cfe02c2f5f8c59af015ad
Sha256: 911550bc2b8e4c4aad215692361fe494275002f89faa9eae2e2fc2664da1107c
                                        
                                            GET /296x148/filters:format(jpeg):quality(60):no_upscale():strip_exif()/https%3A%2F%2Fs3.amazonaws.com%2Fpocket-curatedcorpusapi-prod-images%2F793f20c6-757e-47e5-8ab6-4d73ceae75af.jpeg HTTP/1.1 
Host: img-getpocket.cdn.mozilla.net
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: image/avif,image/webp,*/*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Origin: null
Connection: keep-alive
Sec-Fetch-Dest: image
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site

                                         
                                         34.120.237.76
HTTP/2 200 OK
content-type: image/jpeg
                                        
server: nginx
content-length: 4002
x-amzn-requestid: ea2f5309-e220-4b7e-b718-9339b9444cc2
x-xss-protection: 1; mode=block
access-control-allow-origin: *
strict-transport-security: max-age=63072000; includeSubdomains; preload
x-frame-options: DENY
content-security-policy: default-src 'none'; img-src 'self'; script-src 'self'; style-src 'self'; object-src 'none'
x-amz-apigw-id: YKQ6hHM8IAMFeJQ=
x-content-type-options: nosniff
x-amzn-trace-id: Root=1-631a61dc-7d45fd9253b7b7fa732b6f8d;Sampled=0
x-amzn-remapped-date: Thu, 08 Sep 2022 21:42:52 GMT
x-amz-cf-pop: HIO50-C1, SEA73-P2
x-cache: Miss from cloudfront
x-amz-cf-id: VD7SlrM2RwFk5cfQvul2bTJA__GPYd5_UPY0D0_5NGLHoBj3yur7PA==
via: 1.1 030fe0607711293dda988e571617a9f2.cloudfront.net (CloudFront), 1.1 5abfab33f248090bb0f31ca137ce9464.cloudfront.net (CloudFront), 1.1 google
date: Thu, 08 Sep 2022 22:15:21 GMT
age: 55830
etag: "cec8428d159a5bde29e89c64cfb04146f759d52b"
cache-control: max-age=3600,public,public
alt-svc: clear
X-Firefox-Spdy: h2


--- Additional Info ---
Magic:  JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, progressive, precision 8, 296x148, components 3\012- data
Size:   4002
Md5:    c9590b525c8b07a297c8784f02b161a1
Sha1:   cec8428d159a5bde29e89c64cfb04146f759d52b
Sha256: d309772ce79d36f7b1df0a3ea85a01f8278db2909c860721d105b772efed82ed
                                        
                                            GET /app/vlibras-plugin.js HTTP/1.1 
Host: vlibras.gov.br
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: https://isevirtualcampus.ise.org.br/
Sec-Fetch-Dest: script
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: cross-site

                                         
                                         54.233.154.124
HTTP/2 200 OK
content-type: application/javascript
                                        
date: Fri, 09 Sep 2022 13:45:51 GMT
content-length: 355317
last-modified: Wed, 01 Dec 2021 00:57:12 GMT
etag: "61a6c868-56bf5"
access-control-allow-origin: *
accept-ranges: bytes
X-Firefox-Spdy: h2


--- Additional Info ---
Magic:  Unicode text, UTF-8 text, with very long lines (65466)
Size:   355317
Md5:    2c0f062766f276c163fdcdb92cc80c3e
Sha1:   23b936d058523f39a55b8dd7b7d76b27d1dc592b
Sha256: 7afe9c34f0b0d91334ffb0f248cb724a22d89101a76b857da804ac85ffb6aa8a
                                        
                                            GET /moodle/theme/yui_combo.php?m/1662400547/core/event/event-min.js&m/1662400547/filter_mathjaxloader/loader/loader-min.js HTTP/1.1 
Host: isevirtualcampus.ise.org.br
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: https://isevirtualcampus.ise.org.br/moodle/login/forgot_password.php
Cookie: MoodleSession=1c58qsnj9nfaklmn8pkkt957d2
Sec-Fetch-Dest: script
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: same-origin

                                         
                                         172.104.195.251
HTTP/1.1 200 OK
Content-Type: application/javascript
                                        
Date: Fri, 09 Sep 2022 13:45:52 GMT
Server: Apache
Content-Disposition: inline; filename="combo"
Last-Modified: Thu, 04 Mar 2021 12:23:47 GMT
Expires: Mon, 04 Sep 2023 13:45:52 GMT
Pragma:
Cache-Control: public, max-age=31104000, immutable
Accept-Ranges: none
Etag: "0d574186a506b5719a3a22d06a232ab0aa879cf9"
Content-Encoding: gzip
Vary: Accept-Encoding
Content-Length: 857
Keep-Alive: timeout=5, max=98
Connection: Keep-Alive


--- Additional Info ---
Magic:  ASCII text, with very long lines (2198), with no line terminators
Size:   857
Md5:    260b3cd4413738b36a0f5701136e4b68
Sha1:   24f548756b34d4c67c80b44214d1cdd9ff65ea1c
Sha256: 949a6496f576e9171c6d9244bf7eeb8129fc1840f609b502e529851154ade6fc
                                        
                                            GET /moodle/theme/yui_combo.php?m/1662400547/core/formchangechecker/formchangechecker-min.js HTTP/1.1 
Host: isevirtualcampus.ise.org.br
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: https://isevirtualcampus.ise.org.br/moodle/login/forgot_password.php
Cookie: MoodleSession=1c58qsnj9nfaklmn8pkkt957d2
Sec-Fetch-Dest: script
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: same-origin

                                         
                                         172.104.195.251
HTTP/1.1 200 OK
Content-Type: application/javascript
                                        
Date: Fri, 09 Sep 2022 13:45:52 GMT
Server: Apache
Content-Disposition: inline; filename="combo"
Last-Modified: Thu, 04 Mar 2021 12:23:47 GMT
Expires: Mon, 04 Sep 2023 13:45:52 GMT
Pragma:
Cache-Control: public, max-age=31104000, immutable
Accept-Ranges: none
Etag: "54f62d91eaa17296f926ae51141a58aaa88b1e11"
Content-Encoding: gzip
Vary: Accept-Encoding
Content-Length: 960
Keep-Alive: timeout=5, max=97
Connection: Keep-Alive


--- Additional Info ---
Magic:  ASCII text, with very long lines (3346), with no line terminators
Size:   960
Md5:    2d4ab876b01b8a87555c29fd705ec3a3
Sha1:   59163b820641ee4b2dca4bf34440cabae1814c75
Sha256: 1c66ca0075c1fd9b5e91c8810c71cf87044e35ea7b360c5c06a12faf8a9ffd76
                                        
                                            GET /favicon.ico HTTP/1.1 
Host: isevirtualcampus.ise.org.br
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: image/avif,image/webp,*/*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: https://isevirtualcampus.ise.org.br/moodle/login/forgot_password.php
Sec-Fetch-Dest: image
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: same-origin

                                         
                                         172.104.195.251
HTTP/1.1 404 Not Found
Content-Type: text/html; charset=iso-8859-1
                                        
Date: Fri, 09 Sep 2022 13:45:52 GMT
Server: Apache
Content-Length: 196
Keep-Alive: timeout=5, max=96
Connection: Keep-Alive


--- Additional Info ---
Magic:  HTML document text\012- HTML document text\012- HTML document text\012- HTML document text\012- exported SGML document, ASCII text
Size:   196
Md5:    62962daa1b19bbcc2db10b7bfd531ea6
Sha1:   d64bae91091eda6a7532ebec06aa70893b79e1f8
Sha256: 80c3fe2ae1062abf56456f52518bd670f9ec3917b7f85e152b347ac6b6faf880
                                        
                                            GET /moodle/lib/requirejs.php/1662400547/core/first.js HTTP/1.1 
Host: isevirtualcampus.ise.org.br
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: https://isevirtualcampus.ise.org.br/moodle/login/forgot_password.php
Cookie: MoodleSession=1c58qsnj9nfaklmn8pkkt957d2
Sec-Fetch-Dest: script
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: same-origin

                                         
                                         172.104.195.251
HTTP/1.1 200 OK
Content-Type: application/javascript; charset=utf-8
                                        
Date: Fri, 09 Sep 2022 13:45:52 GMT
Server: Apache
Etag: "80b5c3c4b96abc54783441366bb8b2fdb49994f1"
Content-Disposition: inline; filename="requirejs.php"
Last-Modified: Mon, 05 Sep 2022 17:55:52 GMT
Expires: Thu, 08 Dec 2022 13:45:52 GMT
Pragma:
Cache-Control: public, max-age=7776000, immutable
Accept-Ranges: none
Content-Encoding: gzip
Vary: Accept-Encoding
Keep-Alive: timeout=5, max=98
Connection: Keep-Alive
Transfer-Encoding: chunked


--- Additional Info ---
Magic:  ASCII text, with very long lines (9819)
Size:   451946
Md5:    a2e68fc3e2c33bea157d811ac4b35710
Sha1:   83a3e7f154cf48d5c4a8ede618f5eea302d94e7a
Sha256: 0d73eab51518e3361efac00b1601db4c0de7951fc69d2c5fb2877cdca1950041
                                        
                                            GET /moodle/lib/javascript.php/1662400547/lib/jquery/jquery-3.5.1.min.js HTTP/1.1 
Host: isevirtualcampus.ise.org.br
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: https://isevirtualcampus.ise.org.br/moodle/login/forgot_password.php
Cookie: MoodleSession=1c58qsnj9nfaklmn8pkkt957d2
Sec-Fetch-Dest: script
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: same-origin

                                         
                                         172.104.195.251
HTTP/1.1 200 OK
Content-Type: application/javascript; charset=utf-8
                                        
Date: Fri, 09 Sep 2022 13:45:53 GMT
Server: Apache
Etag: "04b1958dbe3f0973c799b3178147e72daa1e81f9"
Content-Disposition: inline; filename="javascript.php"
Last-Modified: Mon, 05 Sep 2022 17:55:54 GMT
Expires: Thu, 08 Dec 2022 13:45:53 GMT
Pragma:
Cache-Control: public, max-age=7776000, immutable
Accept-Ranges: none
Content-Encoding: gzip
Vary: Accept-Encoding
Keep-Alive: timeout=5, max=97
Connection: Keep-Alive
Transfer-Encoding: chunked


--- Additional Info ---
Magic:  ASCII text, with very long lines (65451)
Size:   30914
Md5:    9e20b290f3bf1923af08d826a5e82c86
Sha1:   fa97509e0967c34ea5393af9f7e1a79162404205
Sha256: 9af00f1990a36ea52fb3eee0118efc546fb6976d2fa8d6d048f5e9a896062cf0
                                        
                                            POST /moodle/lib/ajax/service.php?sesskey=cBoPa3ozF5&info=media_videojs_get_language HTTP/1.1 
Host: isevirtualcampus.ise.org.br
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: application/json, text/javascript, */*; q=0.01
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Content-Type: application/json
X-Requested-With: XMLHttpRequest
Content-Length: 76
Origin: https://isevirtualcampus.ise.org.br
Connection: keep-alive
Referer: https://isevirtualcampus.ise.org.br/moodle/login/forgot_password.php
Cookie: MoodleSession=1c58qsnj9nfaklmn8pkkt957d2
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin

                                         
                                         172.104.195.251
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
                                        
Date: Fri, 09 Sep 2022 13:45:53 GMT
Server: Apache
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate
Pragma: no-cache
Content-Length: 4530
Keep-Alive: timeout=5, max=96
Connection: Keep-Alive


--- Additional Info ---
Magic:  JSON data\012- , ASCII text, with very long lines (4530), with no line terminators
Size:   4530
Md5:    4d5523cbc76f44fe608854860b0a2569
Sha1:   b821723eb7ecf0b7e97c516fbbc88c3b85560229
Sha256: 2088fbe413aa7bc5fc811ec5778bd623becf7c1c149d2f12fc8c21ad7cd343d5
                                        
                                            GET /moodle/theme/yui_combo.php?3.17.2/event-mousewheel/event-mousewheel-min.js&3.17.2/event-resize/event-resize-min.js&3.17.2/event-hover/event-hover-min.js&3.17.2/event-touch/event-touch-min.js&3.17.2/event-move/event-move-min.js&3.17.2/event-flick/event-flick-min.js&3.17.2/event-valuechange/event-valuechange-min.js&3.17.2/event-tap/event-tap-min.js HTTP/1.1 
Host: isevirtualcampus.ise.org.br
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: https://isevirtualcampus.ise.org.br/moodle/login/forgot_password.php
Cookie: MoodleSession=1c58qsnj9nfaklmn8pkkt957d2
Sec-Fetch-Dest: script
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: same-origin

                                         
                                         172.104.195.251
HTTP/1.1 200 OK
Content-Type: application/javascript
                                        
Date: Fri, 09 Sep 2022 13:45:53 GMT
Server: Apache
Content-Disposition: inline; filename="combo"
Last-Modified: Mon, 08 Feb 2021 20:26:35 GMT
Expires: Mon, 04 Sep 2023 13:45:53 GMT
Pragma:
Cache-Control: public, max-age=31104000, immutable
Accept-Ranges: none
Etag: "b24ca831785ba367093f089618e840be511be85d"
Content-Encoding: gzip
Vary: Accept-Encoding
Content-Length: 4808
Keep-Alive: timeout=5, max=95
Connection: Keep-Alive


--- Additional Info ---
Magic:  ASCII text, with very long lines (3857)
Size:   4808
Md5:    713bb7fd594c64c3598edc178658783a
Sha1:   5cf119be436a34e733ca1fee6c41b3c8350cedaf
Sha256: f5cfc9a7087a218ad9951e7e5d22bade76acb58ccac10f3ca1ec891299b6735e
                                        
                                            GET /app/assets/popup.png HTTP/1.1 
Host: vlibras.gov.br
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: image/avif,image/webp,*/*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: https://isevirtualcampus.ise.org.br/
Sec-Fetch-Dest: image
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: cross-site
TE: trailers

                                         
                                         54.233.154.124
HTTP/2 200 OK
content-type: image/png
                                        
date: Fri, 09 Sep 2022 13:45:53 GMT
content-length: 13517
last-modified: Fri, 23 Apr 2021 01:40:44 GMT
etag: "6082259c-34cd"
access-control-allow-origin: *
accept-ranges: bytes
X-Firefox-Spdy: h2


--- Additional Info ---
Magic:  PNG image data, 200 x 76, 8-bit/color RGBA, non-interlaced\012- data
Size:   13517
Md5:    26152e5505976ab7ce8acb47c41a921d
Sha1:   0c3da212990cc8758afe0eea286137d666bc246a
Sha256: cd944366ba7af7859c1c3669331af9d52768590cdb5391db5c2d8ec21009b9fd
                                        
                                            GET /app/assets/component-ac.png HTTP/1.1 
Host: vlibras.gov.br
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: image/avif,image/webp,*/*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: https://isevirtualcampus.ise.org.br/
Sec-Fetch-Dest: image
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: cross-site
TE: trailers

                                         
                                         54.233.154.124
HTTP/2 200 OK
content-type: image/png
                                        
date: Fri, 09 Sep 2022 13:45:53 GMT
content-length: 4233
last-modified: Fri, 23 Apr 2021 01:40:44 GMT
etag: "6082259c-1089"
access-control-allow-origin: *
accept-ranges: bytes
X-Firefox-Spdy: h2


--- Additional Info ---
Magic:  PNG image data, 72 x 72, 8-bit/color RGBA, non-interlaced\012- data
Size:   4233
Md5:    9b16e662ecdfc928c5ce5db0fd9f2cd3
Sha1:   93ee29a4fbec495fc96ebde912915ce008aa9df3
Sha256: a425146258403bb2c3a4984144cf9f34d3915ac7d17a21f8da07ed08e5382e0d
                                        
                                            GET /moodle/lib/ajax/service-nologin.php?info=core_output_load_template_with_dependencies,core_output_load_template_with_dependencies,core_output_load_template_with_dependencies,core_output_load_template_with_dependencies&cachekey=1662400547&args=%5B%7B%22index%22%3A0%2C%22methodname%22%3A%22core_output_load_template_with_dependencies%22%2C%22args%22%3A%7B%22component%22%3A%22core%22%2C%22template%22%3A%22loading%22%2C%22themename%22%3A%22boost%22%2C%22lang%22%3A%22en_us%22%7D%7D%2C%7B%22index%22%3A1%2C%22methodname%22%3A%22core_output_load_template_with_dependencies%22%2C%22args%22%3A%7B%22component%22%3A%22core%22%2C%22template%22%3A%22modal%22%2C%22themename%22%3A%22boost%22%2C%22lang%22%3A%22en_us%22%7D%7D%2C%7B%22index%22%3A2%2C%22methodname%22%3A%22core_output_load_template_with_dependencies%22%2C%22args%22%3A%7B%22component%22%3A%22core%22%2C%22template%22%3A%22modal_backdrop%22%2C%22themename%22%3A%22boost%22%2C%22lang%22%3A%22en_us%22%7D%7D%2C%7B%22index%22%3A3%2C%22methodname%22%3A%22core_output_load_template_with_dependencies%22%2C%22args%22%3A%7B%22component%22%3A%22core%22%2C%22template%22%3A%22pix_icon_fontawesome%22%2C%22themename%22%3A%22boost%22%2C%22lang%22%3A%22en_us%22%7D%7D%5D HTTP/1.1 
Host: isevirtualcampus.ise.org.br
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: application/json, text/javascript, */*; q=0.01
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Content-Type: application/json
X-Requested-With: XMLHttpRequest
Connection: keep-alive
Referer: https://isevirtualcampus.ise.org.br/moodle/login/forgot_password.php
Cookie: MoodleSession=1c58qsnj9nfaklmn8pkkt957d2
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin

                                         
                                         172.104.195.251
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
                                        
Date: Fri, 09 Sep 2022 13:45:53 GMT
Server: Apache
Expires: Thu, 08 Dec 2022 13:45:53 GMT
Pragma:
Cache-Control: public, max-age=7776000, immutable
Accept-Ranges: none
Content-Length: 2366
Keep-Alive: timeout=5, max=94
Connection: Keep-Alive


--- Additional Info ---
Magic:  JSON data\012- , ASCII text, with very long lines (2366), with no line terminators
Size:   2366
Md5:    277cbffc8b01633c828dc3c8745240ae
Sha1:   67c5c5c693b256710fe2c8d51a9ac72541dc3a57
Sha256: 09604128b770c0e743538b387c387056ab0eb8108d7b700e98affe9d18d55a52
                                        
                                            GET /moodle/lib/ajax/service-nologin.php?info=6-method-calls&cachekey=1662448682&args=%5B%7B%22index%22%3A0%2C%22methodname%22%3A%22core_get_string%22%2C%22args%22%3A%7B%22stringid%22%3A%22cancel%22%2C%22stringparams%22%3A%5B%5D%2C%22component%22%3A%22core%22%2C%22lang%22%3A%22en_us%22%7D%7D%2C%7B%22index%22%3A1%2C%22methodname%22%3A%22core_get_string%22%2C%22args%22%3A%7B%22stringid%22%3A%22closebuttontitle%22%2C%22stringparams%22%3A%5B%5D%2C%22component%22%3A%22core%22%2C%22lang%22%3A%22en_us%22%7D%7D%2C%7B%22index%22%3A2%2C%22methodname%22%3A%22core_get_string%22%2C%22args%22%3A%7B%22stringid%22%3A%22loading%22%2C%22stringparams%22%3A%5B%5D%2C%22component%22%3A%22core%22%2C%22lang%22%3A%22en_us%22%7D%7D%2C%7B%22index%22%3A3%2C%22methodname%22%3A%22core_get_string%22%2C%22args%22%3A%7B%22stringid%22%3A%22savechanges%22%2C%22stringparams%22%3A%5B%5D%2C%22component%22%3A%22core%22%2C%22lang%22%3A%22en_us%22%7D%7D%2C%7B%22index%22%3A4%2C%22methodname%22%3A%22core_get_string%22%2C%22args%22%3A%7B%22stringid%22%3A%22showless%22%2C%22stringparams%22%3A%5B%5D%2C%22component%22%3A%22core_form%22%2C%22lang%22%3A%22en_us%22%7D%7D%2C%7B%22index%22%3A5%2C%22methodname%22%3A%22core_get_string%22%2C%22args%22%3A%7B%22stringid%22%3A%22showmore%22%2C%22stringparams%22%3A%5B%5D%2C%22component%22%3A%22core_form%22%2C%22lang%22%3A%22en_us%22%7D%7D%5D HTTP/1.1 
Host: isevirtualcampus.ise.org.br
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: application/json, text/javascript, */*; q=0.01
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Content-Type: application/json
X-Requested-With: XMLHttpRequest
Connection: keep-alive
Referer: https://isevirtualcampus.ise.org.br/moodle/login/forgot_password.php
Cookie: MoodleSession=1c58qsnj9nfaklmn8pkkt957d2
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin

                                         
                                         172.104.195.251
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
                                        
Date: Fri, 09 Sep 2022 13:45:53 GMT
Server: Apache
Expires: Thu, 08 Dec 2022 13:45:53 GMT
Pragma:
Cache-Control: public, max-age=7776000, immutable
Accept-Ranges: none
Content-Length: 211
Keep-Alive: timeout=5, max=97
Connection: Keep-Alive


--- Additional Info ---
Magic:  JSON data\012- , ASCII text, with no line terminators
Size:   211
Md5:    c135ebb8306e47146c197265b9c9022b
Sha1:   425c439b399cc4a29df884f4ac5aa75505944c2c
Sha256: afefe583c5a695189962783424716b19758b2a08e71480cb91a73c88c98a20be
                                        
                                            GET /moodle/lib/ajax/service-nologin.php?info=core_output_load_fontawesome_icon_system_map&cachekey=1662400547&args=%5B%7B%22index%22%3A0%2C%22methodname%22%3A%22core_output_load_fontawesome_icon_system_map%22%2C%22args%22%3A%7B%22themename%22%3A%22boost%22%7D%7D%5D HTTP/1.1 
Host: isevirtualcampus.ise.org.br
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: application/json, text/javascript, */*; q=0.01
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Content-Type: application/json
X-Requested-With: XMLHttpRequest
Connection: keep-alive
Referer: https://isevirtualcampus.ise.org.br/moodle/login/forgot_password.php
Cookie: MoodleSession=1c58qsnj9nfaklmn8pkkt957d2
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin

                                         
                                         172.104.195.251
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
                                        
Date: Fri, 09 Sep 2022 13:45:53 GMT
Server: Apache
Expires: Thu, 08 Dec 2022 13:45:53 GMT
Pragma:
Cache-Control: public, max-age=7776000, immutable
Accept-Ranges: none
Keep-Alive: timeout=5, max=95
Connection: Keep-Alive
Transfer-Encoding: chunked


--- Additional Info ---
Magic:  JSON data\012- , ASCII text, with very long lines (30765), with no line terminators
Size:   30765
Md5:    a68d80b51e29f948714624ea5037cd60
Sha1:   449d3ea56d3e2bc35fa8956cd337bf329e659c11
Sha256: 519aa44499425bf6a3fa93a91055ddf2d253287b132b3dca5cbd685fa63ca1e9
                                        
                                            GET /css2?family=Source+Sans+Pro:ital,wght@0,200;0,300;0,400;0,600;0,700;0,900;1,200;1,300;1,400;1,600;1,700;1,900&display=swap HTTP/1.1 
Host: fonts.googleapis.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: text/css,*/*;q=0.1
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: https://isevirtualcampus.ise.org.br/
Sec-Fetch-Dest: style
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: cross-site

                                         
                                         142.250.74.10
HTTP/2 200 OK
content-type: text/css; charset=utf-8
                                        
access-control-allow-origin: *
timing-allow-origin: *
link: <https://fonts.gstatic.com>; rel=preconnect; crossorigin
strict-transport-security: max-age=31536000
expires: Fri, 09 Sep 2022 13:45:50 GMT
date: Fri, 09 Sep 2022 13:45:50 GMT
cache-control: private, max-age=86400
cross-origin-resource-policy: cross-origin
cross-origin-opener-policy: same-origin-allow-popups
content-encoding: gzip
server: ESF
x-xss-protection: 0
x-frame-options: SAMEORIGIN
x-content-type-options: nosniff
alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"
X-Firefox-Spdy: h2


--- Additional Info ---