Spamworldpro Mini Shell
Spamworldpro


Server : Apache
System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64
User : corals ( 1002)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /home/corals/clinic.corals.io/public/assets/front/js/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/clinic.corals.io/public/assets/front/js/plugins.youtube.js
/*jquery.mb.YTPlayer 23-01-2021
 _ jquery.mb.components 
 _ email: [email protected] 
 _ Copyright (c) 2001-2021. Matteo Bicocchi (Pupunzi); 
 _ blog: http://pupunzi.open-lab.com 
 _ Open Lab s.r.l., Florence - Italy 
 */

var ytp = ytp || {};
let YTPRndSuffix = (new Date).getTime(), YTPTimerLabels = {
    init: 'YTPlayerInit_' + YTPRndSuffix,
    startPlaying: 'YTPlayerStartPlay_' + YTPRndSuffix,
};

function onYouTubeIframeAPIReady () {
    ytp.YTAPIReady ||
    (ytp.YTAPIReady = !0, jQuery(document).trigger('YTAPIReady'));
}

let getYTPVideoID = function (e) {
    let r, t;
    return e.indexOf('youtu.be') > 0 || e.indexOf('youtube.com/embed') > 0
        ? r = (t = (r = e.substr(e.lastIndexOf('/') + 1, e.length)).indexOf(
            '?list=') > 0 ? r.substr(r.lastIndexOf('='), r.length) : null)
            ? r.substr(0, r.lastIndexOf('?'))
            : r
        : e.indexOf('http') > -1 ? (r = e.match(
            /[\\?&]v=([^&#]*)/)[1], t = e.indexOf('list=') > 0 ? e.match(
            /[\\?&]list=([^&#]*)/)[1] : null) : t = (r = e.length > 15
            ? null
            : e) ? null : e, { videoID: r, playlistID: t };
};
!function (jQuery, ytp) {
    jQuery.mbYTPlayer = {
        name: 'jquery.mb.YTPlayer',
        version: '3.3.9',
        build: '7581',
        author: 'Matteo Bicocchi (pupunzi)',
        apiKey: '',
        defaults: {
            videoURL: null,
            containment: 'body',
            ratio: 'auto',
            fadeOnStartTime: 1e3,
            startAt: 0,
            stopAt: 0,
            autoPlay: !0,
            delayAtStart: 1e3,
            coverImage: !1,
            loop: !0,
            addRaster: !1,
            mask: !1,
            opacity: 1,
            quality: 'hd1080',
            vol: 50,
            mute: !1,
            showControls: !0,
            anchor: 'center,center',
            showAnnotations: !1,
            cc_load_policy: !1,
            showYTLogo: !0,
            useOnMobile: !0,
            playOnlyIfVisible: !1,
            onScreenPercentage: 30,
            goFullScreenOnPlay: !1,
            stopMovieOnBlur: !0,
            realFullscreen: !0,
            optimizeDisplay: !0,
            abundance: .3,
            gaTrack: !0,
            remember_last_time: !1,
            addFilters: !1,
            useNoCookie: !0,
            onReady: function (e) {},
            onError: function (e, r) {},
            onEnd: function () {},
        },
        controls: {
            play: 'P',
            pause: 'p',
            mute: 'M',
            unmute: 'A',
            onlyYT: 'O',
            showSite: 'R',
            ytLogo: 'Y',
        },
        controlBar: null,
        locationProtocol: 'https:',
        defaultFilters: {
            grayscale: { value: 0, unit: '%' },
            hue_rotate: { value: 0, unit: 'deg' },
            invert: { value: 0, unit: '%' },
            opacity: { value: 0, unit: '%' },
            saturate: { value: 0, unit: '%' },
            sepia: { value: 0, unit: '%' },
            brightness: { value: 0, unit: '%' },
            contrast: { value: 0, unit: '%' },
            blur: { value: 0, unit: 'px' },
        },
        buildPlayer: function (options) {
            if (ytp.YTAPIReady || void 0 !== window.YT) setTimeout(function () {
                jQuery(document).
                    trigger('YTAPIReady'), ytp.YTAPIReady = !0;
            }, 100); else {
                jQuery('#YTAPI').remove();
                let e = jQuery('<script>').
                    attr({
                        src: 'https://www.youtube.com/iframe_api?v=' +
                            jQuery.mbYTPlayer.version, id: 'YTAPI',
                    });
                jQuery('head').prepend(e);
            }

            function isIframe () {
                let e = !1;
                try {
                    self.location.href !== top.location.href && (e = !0);
                } catch (r) {e = !0;}
                return e;
            }

            return this.each(function () {
                let YTPlayer = this, $YTPlayer = jQuery(YTPlayer);
                $YTPlayer.hide(), YTPlayer.loop = 0, YTPlayer.state = 0, YTPlayer.filters = jQuery.extend(
                    !0, {},
                    jQuery.mbYTPlayer.defaultFilters), YTPlayer.filtersEnabled = !0, YTPlayer.id = YTPlayer.id ||
                    'YTP_' + (new Date).getTime(), $YTPlayer.addClass(
                    'mb_YTPlayer');
                let property = $YTPlayer.data('property') && 'string' ==
                typeof $YTPlayer.data('property') ? eval(
                    '(' + $YTPlayer.data('property') + ')') : $YTPlayer.data(
                    'property');
                'object' != typeof property &&
                (property = {}), YTPlayer.opt = jQuery.extend(!0, {},
                    jQuery.mbYTPlayer.defaults, YTPlayer.opt, options,
                    property), YTPRndSuffix = getYTPVideoID(
                    YTPlayer.opt.videoURL).videoID, YTPTimerLabels = {
                    init: 'YTPlayerInit_' + YTPRndSuffix,
                    startPlaying: 'YTPlayerStartPlay_' + YTPRndSuffix,
                }, console.time(YTPTimerLabels.init), console.time(
                    YTPTimerLabels.startPlaying), YTPlayer.opt.elementId = YTPlayer.id, 0 ===
                YTPlayer.opt.vol &&
                (YTPlayer.opt.vol = 1, YTPlayer.opt.mute = !0), YTPlayer.opt.loop &&
                'boolean' == typeof YTPlayer.opt.loop &&
                (YTPlayer.opt.loop = 9999);
                let fullScreenAvailable = document.fullscreenEnabled ||
                    document.webkitFullscreenEnabled ||
                    document.mozFullScreenEnabled ||
                    document.msFullscreenEnabled;
                YTPlayer.opt.realFullscreen = !(isIframe() ||
                    !fullScreenAvailable) &&
                    YTPlayer.opt.realFullscreen, YTPlayer.opt.showAnnotations = YTPlayer.opt.showAnnotations
                    ? '1'
                    : '3', YTPlayer.opt.cc_load_policy = YTPlayer.opt.cc_load_policy
                    ? '1'
                    : '0', YTPlayer.opt.coverImage = YTPlayer.opt.coverImage ||
                    YTPlayer.opt.backgroundImage, YTPlayer.opt.quality = 'hd1080', jQuery.mbBrowser.msie &&
                jQuery.mbBrowser.version < 9 &&
                (YTPlayer.opt.opacity = 1), YTPlayer.opt.containment = 'self' ===
                YTPlayer.opt.containment ? $YTPlayer : jQuery(
                    YTPlayer.opt.containment), YTPlayer.isRetina = window.retina ||
                    window.devicePixelRatio > 1, YTPlayer.opt.ratio = 'auto' ===
                YTPlayer.opt.ratio
                    ? 16 / 9
                    : YTPlayer.opt.ratio, YTPlayer.opt.ratio = eval(
                    YTPlayer.opt.ratio);
                let origContainmentBackground = YTPlayer.opt.containment.css(
                    'background-image');
                origContainmentBackground = 'none' === origContainmentBackground
                    ? null
                    : origContainmentBackground, YTPlayer.orig_containment_background = origContainmentBackground, $YTPlayer.attr(
                    'id') || $YTPlayer.attr('id', 'ytp_' +
                    (new Date).getTime()), YTPlayer.playerID = 'iframe_' +
                    YTPlayer.id, YTPlayer.isAlone = !1, YTPlayer.hasFocus = !0, YTPlayer.videoID = YTPlayer.opt.videoURL
                    ? getYTPVideoID(YTPlayer.opt.videoURL).videoID
                    : !!$YTPlayer.attr('href') && getYTPVideoID($YTPlayer.attr(
                    'href')).videoID, YTPlayer.playlistID = YTPlayer.opt.videoURL
                    ? getYTPVideoID(YTPlayer.opt.videoURL).playlistID
                    : !!$YTPlayer.attr('href') &&
                    getYTPVideoID($YTPlayer.attr('href')).playlistID;
                let start_from_last = 0;
                if (jQuery.mbCookie.get(
                    'YTPlayer_start_from' + YTPlayer.videoID) &&
                (start_from_last = parseFloat(jQuery.mbCookie.get(
                    'YTPlayer_start_from' +
                    YTPlayer.videoID))), YTPlayer.opt.remember_last_time &&
                start_from_last &&
                (YTPlayer.start_from_last = start_from_last, jQuery.mbCookie.remove(
                    'YTPlayer_start_from' +
                    YTPlayer.videoID)), YTPlayer.isPlayer = $YTPlayer.is(
                    YTPlayer.opt.containment), YTPlayer.isBackground = YTPlayer.opt.containment.is(
                    'body'), YTPlayer.isBackground &&
                ytp.backgroundIsInited) return;
                if (YTPlayer.isPlayer &&
                $YTPlayer.show(), YTPlayer.overlay = jQuery('<div/>').
                    css({
                        position: 'absolute',
                        top: 0,
                        left: 0,
                        width: '100%',
                        height: '100%',
                    }).
                    addClass(
                        'YTPOverlay'), $YTPlayer.changeCoverImage(), YTPlayer.wrapper = jQuery(
                    '<div/>').
                    attr('id', 'wrapper_' + YTPlayer.id).
                    css({
                        position: 'absolute',
                        zIndex: 0,
                        minWidth: '100%',
                        minHeight: '100%',
                        left: 0,
                        top: 0,
                        overflow: 'hidden',
                        opacity: 0,
                    }).
                    addClass('mbYTP_wrapper'), YTPlayer.isPlayer) {
                    let e = jQuery.mbBrowser.mobile
                        ? 'inlinePlayButtonMobile'
                        : 'inlinePlayButton';
                    YTPlayer.inlinePlayButton = jQuery('<div/>').
                        addClass('inlinePlayButton').
                        html(jQuery.mbYTPlayer.controls.play), $YTPlayer.append(
                        YTPlayer.inlinePlayButton), YTPlayer.inlinePlayButton.on(
                        'click', function (e) {
                            $YTPlayer.YTPPlay(), YTPlayer.inlinePlayButton.hide(), YTPlayer.opt.goFullScreenOnPlay &&
                            $YTPlayer.YTPFullscreen(), e.stopPropagation();
                        }), YTPlayer.opt.autoPlay &&
                    YTPlayer.inlinePlayButton.hide(), YTPlayer.overlay.on(
                        'click', function () {
                            $YTPlayer.YTPTogglePlay(), YTPlayer.opt.goFullScreenOnPlay &&
                            $YTPlayer.YTPFullscreen();
                        }).css({ cursor: 'pointer' });
                }
                let playerBox = jQuery('<div/>').
                    attr('id', YTPlayer.playerID).
                    addClass('playerBox');
                if (playerBox.css({
                    position: 'absolute',
                    zIndex: 0,
                    width: '100%',
                    height: '100%',
                    top: 0,
                    left: 0,
                    overflow: 'hidden',
                    opacity: 1,
                }), YTPlayer.wrapper.append(playerBox), playerBox.after(
                    YTPlayer.overlay), YTPlayer.isPlayer &&
                (YTPlayer.inlineWrapper = jQuery('<div/>').
                    addClass('inline-YTPlayer'), YTPlayer.inlineWrapper.css({
                    position: 'relative',
                    maxWidth: YTPlayer.opt.containment.css('width'),
                }), YTPlayer.opt.containment.css({
                    position: 'relative',
                    paddingBottom: '56.25%',
                    overflow: 'hidden',
                    height: 0,
                }), YTPlayer.opt.containment.wrap(
                    YTPlayer.inlineWrapper)), YTPlayer.opt.containment.children().
                    not('script, style').
                    each(function () {
                        'static' === jQuery(this).css('position') &&
                        jQuery(this).css('position', 'relative');
                    }), YTPlayer.isBackground
                    ? (jQuery('body').
                        css({ boxSizing: 'border-box' }), YTPlayer.wrapper.css(
                        { position: 'fixed', top: 0, left: 0, zIndex: 0 }))
                    : 'static' === YTPlayer.opt.containment.css('position') &&
                    (YTPlayer.opt.containment.css(
                        { position: 'relative' }), $YTPlayer.show()), YTPlayer.opt.containment.prepend(
                    YTPlayer.wrapper), YTPlayer.isBackground ||
                YTPlayer.overlay.on('mouseenter', function () {
                    YTPlayer.controlBar && YTPlayer.controlBar.length &&
                    YTPlayer.controlBar.addClass('visible');
                }).
                    on('mouseleave', function () {
                        YTPlayer.controlBar && YTPlayer.controlBar.length &&
                        YTPlayer.controlBar.removeClass('visible');
                    }), jQuery.mbBrowser.mobile &&
                !YTPlayer.opt.useOnMobile) return YTPlayer.opt.coverImage &&
                (YTPlayer.wrapper.css({
                    backgroundImage: 'url(' + YTPlayer.opt.coverImage + ')',
                    backgroundPosition: 'center center',
                    backgroundSize: 'cover',
                    backgroundRepeat: 'no-repeat',
                    opacity: 1,
                }), YTPlayer.wrapper.css({ opacity: 1 })), $YTPlayer;
                jQuery.mbBrowser.mobile && YTPlayer.opt.autoPlay &&
                YTPlayer.opt.useOnMobile && jQuery('body').
                    one('touchstart',
                        function () {YTPlayer.player.playVideo();}), jQuery(
                    document).
                    one('YTAPIReady', function () {
                        $YTPlayer.trigger(
                            'YTAPIReady_' + YTPlayer.id), ytp.YTAPIReady = !0;
                    }), YTPlayer.isOnScreen = jQuery.mbYTPlayer.isOnScreen(
                    YTPlayer, YTPlayer.opt.onScreenPercentage), $YTPlayer.one(
                    'YTAPIReady_' + YTPlayer.id, function () {
                        let e = this, r = jQuery(e);
                        e.isBackground && ytp.backgroundIsInited || e.isInit ||
                        (e.isBackground &&
                        (ytp.backgroundIsInited = !0), e.opt.autoPlay = void 0 ===
                        e.opt.autoPlay
                            ? !!e.isBackground
                            : e.opt.autoPlay, e.opt.vol = e.opt.vol
                            ? e.opt.vol
                            : 100, jQuery.mbYTPlayer.getDataFromAPI(e), jQuery(
                            e).on('YTPChanged', function (t) {
                            if (e.isInit) return;
                            e.isInit = !0;
                            let a = {
                                modestbranding: 1,
                                autoplay: 0,
                                controls: 0,
                                showinfo: 0,
                                rel: 0,
                                enablejsapi: 1,
                                version: 3,
                                playerapiid: e.playerID,
                                origin: '*',
                                allowfullscreen: !0,
                                wmode: 'transparent',
                                iv_load_policy: e.opt.showAnnotations,
                                cc_load_policy: e.opt.cc_load_policy,
                                playsinline: jQuery.mbBrowser.mobile &&
                                !e.isPlayer ? 1 : 0,
                                html5: document.createElement(
                                    'video').canPlayType ? 1 : 0,
                            };
                            new YT.Player(e.playerID, {
                                host: e.opt.useNoCookie
                                    ? 'https://www.youtube-nocookie.com'
                                    : 'https://www.youtube.com',
                                playerVars: a,
                                events: {
                                    onReady: function (t) {
                                        e.player = t.target, e.player.loadVideoById(
                                            {
                                                videoId: e.videoID.toString(),
                                                suggestedQuality: e.opt.quality,
                                            }), r.trigger(
                                            'YTPlayerIsReady_' + e.id);
                                    },
                                    onStateChange: function (r) {
                                        if ('function' !=
                                            typeof r.target.getPlayerState) return;
                                        let t, a = r.target.getPlayerState();
                                        if (e.preventTrigger ||
                                            e.isStarting) return void (e.preventTrigger = !1);
                                        switch (e.state = a, r.data ===
                                        YT.PlayerState.PLAYING &&
                                        r.target.setPlaybackQuality(
                                            e.opt.quality), a) {
                                            case-1:
                                                t = 'YTPUnstarted';
                                                break;
                                            case 0:
                                                t = 'YTPRealEnd';
                                                break;
                                            case 1:
                                                t = 'YTPPlay', e.controlBar.length &&
                                                e.controlBar.find(
                                                    '.mb_YTPPlayPause').
                                                    html(
                                                        jQuery.mbYTPlayer.controls.pause), e.isPlayer &&
                                                e.inlinePlayButton.hide(), jQuery(
                                                    document).
                                                    off('mousedown.YTPstart');
                                                break;
                                            case 2:
                                                t = 'YTPPause', e.controlBar.length &&
                                                e.controlBar.find(
                                                    '.mb_YTPPlayPause').
                                                    html(
                                                        jQuery.mbYTPlayer.controls.play), e.isPlayer &&
                                                e.inlinePlayButton.show();
                                                break;
                                            case 3:
                                                e.player.setPlaybackQuality(
                                                    e.opt.quality), t = 'YTPBuffering', e.controlBar.length &&
                                                e.controlBar.find(
                                                    '.mb_YTPPlayPause').
                                                    html(
                                                        jQuery.mbYTPlayer.controls.play);
                                                break;
                                            case 5:
                                                t = 'YTPCued';
                                        }
                                        let o = jQuery.Event(t);
                                        o.time = e.currentTime, jQuery(e).
                                            trigger(o);
                                    },
                                    onPlaybackQualityChange: function (r) {
                                        let t = r.target.getPlaybackQuality(),
                                            a = jQuery.Event(
                                                'YTPQualityChange');
                                        a.quality = t, jQuery(e).trigger(a);
                                    },
                                    onError: function (t) {
                                        switch ('function' ==
                                        typeof e.opt.onError &&
                                        e.opt.onError(r, t), console.debug(
                                            'error:', t), t.data) {
                                            case 2:
                                                console.error(
                                                    'video ID:: ' + e.videoID +
                                                    ': The request contains an invalid parameter value. For example, this error occurs if you specify a video ID that does not have 11 characters, or if the video ID contains invalid characters, such as exclamation points or asterisks.');
                                                break;
                                            case 5:
                                                console.error(
                                                    'video ID:: ' + e.videoID +
                                                    ': The requested content cannot be played in an HTML5 player or another error related to the HTML5 player has occurred.');
                                                break;
                                            case 100:
                                                console.error(
                                                    'video ID:: ' + e.videoID +
                                                    ': The video requested was not found. This error occurs when a video has been removed (for any reason) or has been marked as private.');
                                                break;
                                            case 101:
                                            case 150:
                                                console.error(
                                                    'video ID:: ' + e.videoID +
                                                    ': The video doesn\'t exist or The owner does not allow it to be played in embedded players.');
                                        }
                                        e.isList && jQuery(e).YTPPlayNext();
                                    },
                                },
                            }), r.on('YTPlayerIsReady_' + e.id, function () {
                                if (e.isReady) return this;
                                e.playerEl = e.player.getIframe(), jQuery(
                                    e.playerEl).
                                    unselectable(), r.optimizeDisplay(), jQuery(
                                    window).
                                    off('resize.YTP_' + e.id).
                                    on('resize.YTP_' + e.id,
                                        function () {r.optimizeDisplay();}), jQuery(
                                    window).
                                    off('orientationchange.YTP_' + e.id).
                                    on('orientationchange.YTP_' + e.id,
                                        function () {r.optimizeDisplay();}), e.opt.remember_last_time &&
                                jQuery(window).
                                    on('unload.YTP_' + e.id, function () {
                                        let r = e.player.getCurrentTime();
                                        jQuery.mbCookie.set(
                                            'YTPlayer_start_from' + e.videoID,
                                            r, 0);
                                    }), r.YTPCheckForState();
                            });
                        }));
                    }), $YTPlayer.off(
                    'YTPTime.mask'), jQuery.mbYTPlayer.applyMask(
                    YTPlayer), console.timeEnd(YTPTimerLabels.init), setTimeout(
                    function () {
                        ytp.YTAPIReady || 'object' != typeof window.YT ||
                        (jQuery(document).
                            trigger(
                                'YTAPIReady'), ytp.YTAPIReady = !0, console.error(
                            'YTPlayer: More then a call to the YT API has been detected'));
                    }, YTPlayer.opt.delayAtStart);
            });
        },
        isOnScreen: function (e, r) {
            r = r || 10;
            let t = e.wrapper, a = jQuery(window).scrollTop(),
                o = a + jQuery(window).height(), n = t.height() * r / 100,
                i = t.offset().top + n;
            return t.offset().top + (t.height() - n) <= o && i >= a;
        },
        getDataFromAPI: function (e) {
            e.videoData = jQuery.mbStorage.get(
                'YTPlayer_data_' + e.videoID), e.videoData
                ? (setTimeout(function () {
                    e.dataReceived = !0;
                    let r = jQuery.Event('YTPChanged');
                    r.time = e.currentTime, r.videoId = e.videoID, r.opt = e.opt, jQuery(
                        e).trigger(r);
                    let t = jQuery.Event('YTPData');
                    t.prop = {};
                    for (let r in e.videoData) e.videoData.hasOwnProperty(r) &&
                    (t.prop[r] = e.videoData[r]);
                    jQuery(e).trigger(t);
                }, e.opt.fadeOnStartTime), e.hasData = !0)
                : jQuery.mbYTPlayer.apiKey ? jQuery.getJSON(
                    'https://www.googleapis.com/youtube/v3/videos?id=' +
                    e.videoID + '&key=' + jQuery.mbYTPlayer.apiKey +
                    '&part=snippet', function (r) {
                        e.dataReceived = !0;
                        let t = jQuery.Event('YTPChanged');
                        t.time = e.currentTime, t.videoId = e.videoID, jQuery(
                            e).trigger(t), r.items[0]
                            ? (!function (r) {
                                e.videoData = {}, e.videoData.id = e.videoID, e.videoData.channelTitle = r.channelTitle, e.videoData.title = r.title, e.videoData.description = r.description.length <
                                400 ? r.description : r.description.substring(0,
                                    400) +
                                    ' ...', e.videoData.thumb_max = r.thumbnails.maxres
                                    ? r.thumbnails.maxres.url
                                    : null, e.videoData.thumb_high = r.thumbnails.high
                                    ? r.thumbnails.high.url
                                    : null, e.videoData.thumb_medium = r.thumbnails.medium
                                    ? r.thumbnails.medium.url
                                    : null, jQuery.mbStorage.set(
                                    'YTPlayer_data_' + e.videoID, e.videoData);
                            }(r.items[0].snippet), e.hasData = !0)
                            : (e.videoData = {}, e.hasData = !1);
                        let a = jQuery.Event('YTPData');
                        a.prop = {};
                        for (let r in e.videoData) a.prop[r] = e.videoData[r];
                        jQuery(e).trigger(a);
                    }).
                    fail(function (r) {
                        console.error('YT data error:: ', r), e.hasData = !1;
                        let t = jQuery.Event('YTPChanged');
                        t.time = e.currentTime, t.videoId = e.videoID, jQuery(
                            e).trigger(t);
                    }) : (setTimeout(function () {
                    let r = jQuery.Event('YTPChanged');
                    r.time = e.currentTime, r.videoId = e.videoID, jQuery(e).
                        trigger(r);
                }, 10), e.videoData = null), e.opt.ratio = 'auto' == e.opt.ratio
                ? 16 / 9
                : e.opt.ratio, e.isPlayer && !e.opt.autoPlay &&
            (e.loading = jQuery('<div/>').
                addClass('loading').
                html('Loading').
                hide(), jQuery(e).append(e.loading), e.loading.fadeIn());
        },
        removeStoredData: function () {jQuery.mbStorage.remove();},
        getVideoData: function () {return this.get(0).videoData;},
        getVideoID: function () {return this.get(0).videoID || !1;},
        getPlaylistID: function () {return this.get(0).playlistID || !1;},
        setVideoQuality: function (e) {
            let r = this.get(0), t = r.player.getCurrentTime();
            return jQuery(r).
                YTPPause(), r.opt.quality = e, r.player.setPlaybackQuality(
                e), r.player.seekTo(t), jQuery(r).YTPPlay(), this;
        },
        getVideoQuality: function () {
            return this.get(0).
                player.
                getPlaybackQuality();
        },
        playlist: function (e, r, t) {
            let a = this.get(0);
            return a.isList = !0, r && (e = jQuery.shuffle(e)), a.videoID ||
            (a.videos = e, a.videoCounter = 1, a.videoLength = e.length, jQuery(
                a).data('property', e[0]), jQuery(a).YTPlayer()), 'function' ==
            typeof t && jQuery(a).on('YTPChanged', function () {t(a);}), jQuery(
                a).on('YTPEnd', function () {jQuery(a).YTPPlayNext();}), this;
        },
        playNext: function () {
            let e = this.get(0);
            return e.videoCounter++, e.videoCounter > e.videoLength &&
            (e.videoCounter = 1), jQuery(e).YTPPlayIndex(e.videoCounter), this;
        },
        playPrev: function () {
            let e = this.get(0);
            return e.videoCounter--, e.videoCounter <= 0 &&
            (e.videoCounter = e.videoLength), jQuery(e).
                YTPPlayIndex(e.videoCounter), this;
        },
        playIndex: function (e) {
            let r = this.get(0);
            r.checkForStartAt &&
            (clearInterval(r.checkForStartAt), clearInterval(
                r.getState)), r.videoCounter = e, r.videoCounter >=
            r.videoLength && (r.videoCounter = r.videoLength);
            let t = r.videos[r.videoCounter - 1];
            return jQuery(r).YTPChangeVideo(t), this;
        },
        changeVideo: function (e) {
            let r = this, t = r.get(0);
            t.opt.startAt = 0, t.opt.stopAt = 0, t.opt.mask = !1, t.opt.mute = !0, t.opt.autoPlay = !0, t.opt.addFilters = !1, t.opt.coverImage = !1, t.hasData = !1, t.hasChanged = !0, t.player.loopTime = void 0, e &&
            jQuery.extend(t.opt, e), t.videoID = getYTPVideoID(
                t.opt.videoURL).videoID, t.opt.loop && 'boolean' ==
            typeof t.opt.loop && (t.opt.loop = 9999), t.wrapper.css(
                { background: 'none' }), jQuery(t.playerEl).
                CSSAnimate({ opacity: 0 }, t.opt.fadeOnStartTime, function () {
                    jQuery.mbYTPlayer.getDataFromAPI(t), r.YTPGetPlayer().
                        loadVideoById({
                            videoId: t.videoID,
                            suggestedQuality: t.opt.quality,
                        }), r.YTPPause(), r.optimizeDisplay(), t.checkForStartAt &&
                    (clearInterval(t.checkForStartAt), clearInterval(
                        t.getState)), r.YTPCheckForState();
                });
            let a = jQuery.Event('YTPChangeVideo');
            return a.time = t.currentTime, jQuery(t).
                trigger(a), jQuery.mbYTPlayer.applyMask(t), this;
        },
        getPlayer: function () {
            let e = this.get(0);
            return e.isReady ? e.player : null;
        },
        playerDestroy: function () {
            let e = this.get(0);
            return e.isReady
                ? (ytp.YTAPIReady = !0, ytp.backgroundIsInited = !1, e.isInit = !1, e.videoID = null, e.isReady = !1, e.wrapper.remove(), jQuery(
                    '#controlBar_' + e.id).remove(), clearInterval(
                    e.checkForStartAt), clearInterval(e.getState), this)
                : this;
        },
        fullscreen: function (real) {
            let YTPlayer = this.get(0);
            void 0 === real && (real = eval(YTPlayer.opt.realFullscreen));
            let controls = jQuery('#controlBar_' + YTPlayer.id),
                fullScreenBtn = controls.find('.mb_OnlyYT'),
                videoWrapper = YTPlayer.isPlayer
                    ? YTPlayer.opt.containment
                    : YTPlayer.wrapper;
            if (real) {
                let e = jQuery.mbBrowser.mozilla
                    ? 'mozfullscreenchange'
                    : jQuery.mbBrowser.webkit
                        ? 'webkitfullscreenchange'
                        : 'fullscreenchange';
                jQuery(document).
                    off(e).
                    on(e, function () {
                        RunPrefixMethod(document, 'IsFullScreen') ||
                        RunPrefixMethod(document, 'FullScreen')
                            ? jQuery(YTPlayer).trigger('YTPFullScreenStart')
                            : (YTPlayer.isAlone = !1, fullScreenBtn.html(
                            jQuery.mbYTPlayer.controls.onlyYT), jQuery(
                            YTPlayer).
                                YTPSetVideoQuality(
                                    YTPlayer.opt.quality), videoWrapper.removeClass(
                            'YTPFullscreen'), videoWrapper.CSSAnimate(
                            { opacity: YTPlayer.opt.opacity },
                            YTPlayer.opt.fadeOnStartTime), videoWrapper.css(
                            { zIndex: 0 }), YTPlayer.isBackground ? jQuery(
                            'body').after(controls) : YTPlayer.wrapper.before(
                            controls), jQuery(window).resize(), jQuery(
                            YTPlayer).trigger('YTPFullScreenEnd'));
                    });
            }
            if (YTPlayer.isAlone) jQuery(document).
                off('mousemove.YTPlayer'), clearTimeout(
                YTPlayer.hideCursor), YTPlayer.overlay.css(
                { cursor: 'auto' }), real
                ? cancelFullscreen()
                : (videoWrapper.CSSAnimate({ opacity: YTPlayer.opt.opacity },
                    YTPlayer.opt.fadeOnStartTime), videoWrapper.css(
                    { zIndex: 0 })), fullScreenBtn.html(
                jQuery.mbYTPlayer.controls.onlyYT), YTPlayer.isAlone = !1; else {
                function hideMouse () {
                    YTPlayer.overlay.css({ cursor: 'none' });
                }

                jQuery(document).
                    on('mousemove.YTPlayer', function (e) {
                        YTPlayer.overlay.css({ cursor: 'auto' }), clearTimeout(
                            YTPlayer.hideCursor), jQuery(e.target).
                            parents().
                            is('.mb_YTPBar') ||
                        (YTPlayer.hideCursor = setTimeout(hideMouse, 3e3));
                    }), hideMouse(), real ? (videoWrapper.css(
                    { opacity: 0 }), videoWrapper.addClass(
                    'YTPFullscreen'), launchFullscreen(
                    videoWrapper.get(0)), setTimeout(function () {
                    videoWrapper.CSSAnimate({ opacity: 1 },
                        2 * YTPlayer.opt.fadeOnStartTime), videoWrapper.append(
                        controls), jQuery(YTPlayer).
                        optimizeDisplay(), YTPlayer.player.seekTo(
                        YTPlayer.player.getCurrentTime() + .1, !0);
                }, YTPlayer.opt.fadeOnStartTime)) : videoWrapper.css(
                    { zIndex: 1e4 }).
                    CSSAnimate({ opacity: 1 },
                        2 * YTPlayer.opt.fadeOnStartTime), fullScreenBtn.html(
                    jQuery.mbYTPlayer.controls.showSite), YTPlayer.isAlone = !0;
            }

            function RunPrefixMethod (e, r) {
                let t, a, o = ['webkit', 'moz', 'ms', 'o', ''], n = 0;
                for (; n < o.length && !e[t];) {
                    if (t = r, '' === o[n] &&
                    (t = t.substr(0, 1).toLowerCase() +
                        t.substr(1)), 'undefined' != (a = typeof e[t = o[n] +
                        t])) return o = [o[n]], 'function' == a
                        ? e[t]()
                        : e[t];
                    n++;
                }
            }

            function launchFullscreen (e) {
                RunPrefixMethod(e, 'RequestFullScreen');
            }

            function cancelFullscreen () {
                (RunPrefixMethod(document, 'FullScreen') ||
                    RunPrefixMethod(document, 'IsFullScreen')) &&
                RunPrefixMethod(document, 'CancelFullScreen');
            }

            return this;
        },
        toggleLoops: function () {
            let e = this.get(0), r = e.opt;
            return 1 == r.loop ? r.loop = 0 : (r.startAt ? e.player.seekTo(
                r.startAt) : e.player.playVideo(), r.loop = 1), this;
        },
        play: function () {
            let e = this.get(0), r = jQuery(e);
            return e.isReady
                ? (setTimeout(function () {r.YTPSetAbundance(e.opt.abundance);},
                    300), e.player.playVideo(), jQuery(e.playerEl).
                    css({ opacity: 1 }), e.wrapper.css(
                    { backgroundImage: 'none' }), e.wrapper.CSSAnimate(
                    { opacity: e.isAlone ? 1 : e.opt.opacity },
                    e.opt.fadeOnStartTime), jQuery('#controlBar_' + e.id).
                    find('.mb_YTPPlayPause').
                    html(jQuery.mbYTPlayer.controls.pause), e.state = 1, this)
                : this;
        },
        togglePlay: function (e) {
            let r = this.get(0);
            return r.isReady
                ? (1 === r.state
                    ? this.YTPPause()
                    : this.YTPPlay(), 'function' == typeof e &&
                e(r.state), this)
                : this;
        },
        stop: function () {
            let e = this.get(0);
            return e.isReady
                ? (jQuery('#controlBar_' + e.id).
                    find('.mb_YTPPlayPause').
                    html(
                        jQuery.mbYTPlayer.controls.play), e.player.stopVideo(), this)
                : this;
        },
        pause: function () {
            let e = this.get(0);
            return e.isReady
                ? (e.opt.abundance < .2 && this.YTPSetAbundance(
                    .2), e.player.pauseVideo(), e.state = 2, this)
                : this;
        },
        seekTo: function (e) {
            let r = this.get(0);
            return r.isReady ? (r.player.seekTo(e, !0), this) : this;
        },
        getPlaybackRate: function () {
            let e = this.get(0);
            return e.isReady ? e.player.getPlaybackRate() : this;
        },
        setPlaybackRate: function (e) {
            let r = this.get(0);
            return r.isReady ? (r.player.setPlaybackRate(e), this) : this;
        },
        setVolume: function (e) {
            let r = this.get(0);
            return r.isReady
                ? (r.opt.vol = e, this.YTPUnmute(), r.player.setVolume(
                    r.opt.vol), r.volumeBar && r.volumeBar.length &&
                r.volumeBar.updateSliderVal(e), this)
                : this;
        },
        getVolume: function () {
            let e = this.get(0);
            return e.isReady ? e.player.getVolume() : this;
        },
        toggleVolume: function () {
            let e = this.get(0);
            return e.isReady ? (e.isMute
                ? (jQuery.mbBrowser.mobile ||
                this.YTPSetVolume(e.opt.vol), this.YTPUnmute())
                : this.YTPMute(), this) : this;
        },
        mute: function () {
            let e = this.get(0);
            if (!e.isReady) return this;
            if (e.isMute) return this;
            e.player.mute(), e.isMute = !0, e.player.setVolume(
                0), e.volumeBar && e.volumeBar.length && e.volumeBar.width() >
            10 && e.volumeBar.updateSliderVal(0), jQuery('#controlBar_' + e.id).
                find('.mb_YTPMuteUnmute').
                html(jQuery.mbYTPlayer.controls.unmute), jQuery(e).
                addClass('isMuted'), e.volumeBar && e.volumeBar.length &&
            e.volumeBar.addClass('muted');
            let r = jQuery.Event('YTPMuted');
            return r.time = e.currentTime, e.preventTrigger ||
            jQuery(e).trigger(r), this;
        },
        unmute: function () {
            let e = this.get(0);
            if (!e.isReady) return this;
            if (!e.isMute) return this;
            e.player.unMute(), e.isMute = !1, jQuery(e).
                YTPSetVolume(e.opt.vol), e.volumeBar && e.volumeBar.length &&
            e.volumeBar.updateSliderVal(
                e.opt.vol > 10 ? e.opt.vol : 10), jQuery('#controlBar_' + e.id).
                find('.mb_YTPMuteUnmute').
                html(jQuery.mbYTPlayer.controls.mute), jQuery(e).
                removeClass('isMuted'), e.volumeBar && e.volumeBar.length &&
            e.volumeBar.removeClass('muted');
            let r = jQuery.Event('YTPUnmuted');
            return r.time = e.currentTime, e.preventTrigger ||
            jQuery(e).trigger(r), this;
        },
        applyFilter: function (e, r) {
            let t = this.get(0);
            if (!t.isReady) return this;
            t.filters[e].value = r, t.filtersEnabled && this.YTPEnableFilters();
        },
        applyFilters: function (e) {
            let r = this, t = r.get(0);
            if (!t.isReady) return jQuery(t).
                on('YTPReady', function () {r.YTPApplyFilters(e);}), this;
            for (let t in e) r.YTPApplyFilter(t, e[t]);
            r.trigger('YTPFiltersApplied');
        },
        toggleFilter: function (e, r) {
            let t = this.get(0);
            return t.isReady ? (t.filters[e].value
                ? t.filters[e].value = 0
                : t.filters[e].value = r, t.filtersEnabled &&
            jQuery(t).YTPEnableFilters(), this) : this;
        },
        toggleFilters: function (e) {
            let r = this.get(0);
            return r.isReady ? (r.filtersEnabled
                ? (jQuery(r).
                    trigger('YTPDisableFilters'), jQuery(r).YTPDisableFilters())
                : (jQuery(r).YTPEnableFilters(), jQuery(r).
                    trigger('YTPEnableFilters')), 'function' == typeof e &&
            e(r.filtersEnabled), this) : this;
        },
        disableFilters: function () {
            let e = this.get(0);
            if (!e.isReady) return this;
            let r = jQuery(e.playerEl);
            return r.css('-webkit-filter', ''), r.css('filter',
                ''), e.filtersEnabled = !1, this;
        },
        enableFilters: function () {
            let e = this.get(0);
            if (!e.isReady) return this;
            let r = jQuery(e.playerEl), t = '';
            for (let r in e.filters) e.filters[r].value &&
            (t += r.replace('_', '-') + '(' + e.filters[r].value +
                e.filters[r].unit + ') ');
            return r.css('-webkit-filter', t), r.css('filter',
                t), e.filtersEnabled = !0, this;
        },
        removeFilter: function (e, r) {
            let t = this, a = t.get(0);
            if (!a.isReady) return this;
            if ('function' == typeof e &&
            (r = e, e = null), e) t.YTPApplyFilter(e, 0), 'function' ==
            typeof r && r(e); else {
                for (let e in a.filters) a.filters.hasOwnProperty(e) &&
                (t.YTPApplyFilter(e, 0), 'function' == typeof r && r(e));
                a.filters = jQuery.extend(!0, {},
                    jQuery.mbYTPlayer.defaultFilters);
            }
            let o = jQuery.Event('YTPFiltersApplied');
            return t.trigger(o), this;
        },
        getFilters: function () {
            let e = this.get(0);
            return e.isReady ? e.filters : this;
        },
        addMask: function (e) {
            let r = this.get(0);
            e || (e = r.actualMask);
            let t = jQuery('<img/>').
                attr('src', e).
                on('load', function () {
                    r.overlay.CSSAnimate({ opacity: 0 }, r.opt.fadeOnStartTime,
                        function () {
                            r.hasMask = !0, t.remove(), r.overlay.css({
                                backgroundImage: 'url(' + e + ')',
                                backgroundRepeat: 'no-repeat',
                                backgroundPosition: 'center center',
                                backgroundSize: 'cover',
                            }), r.overlay.CSSAnimate({ opacity: 1 },
                                r.opt.fadeOnStartTime);
                        });
                });
            return this;
        },
        removeMask: function () {
            let e = this.get(0);
            return e.overlay.CSSAnimate({ opacity: 0 }, e.opt.fadeOnStartTime,
                function () {
                    e.hasMask = !1, e.overlay.css({
                        backgroundImage: '',
                        backgroundRepeat: '',
                        backgroundPosition: '',
                        backgroundSize: '',
                    }), e.overlay.CSSAnimate({ opacity: 1 },
                        e.opt.fadeOnStartTime);
                }), this;
        },
        applyMask: function (e) {
            let r = jQuery(e);
            if (r.off('YTPTime.mask'), e.opt.mask) if ('string' ==
                typeof e.opt.mask) r.YTPAddMask(
                e.opt.mask), e.actualMask = e.opt.mask; else if ('object' ==
                typeof e.opt.mask) {
                for (let r in e.opt.mask) e.opt.mask[r] &&
                (img = jQuery('<img/>').attr('src', e.opt.mask[r]));
                e.opt.mask[0] && r.YTPAddMask(e.opt.mask[0]), r.on(
                    'YTPTime.mask', function (t) {
                        for (let a in e.opt.mask) t.time === a && (e.opt.mask[a]
                            ? (r.YTPAddMask(
                                e.opt.mask[a]), e.actualMask = e.opt.mask[a])
                            : r.YTPRemoveMask());
                    });
            }
        },
        toggleMask: function () {
            let e = this.get(0), r = jQuery(e);
            return e.hasMask ? r.YTPRemoveMask() : r.YTPAddMask(), this;
        },
        manageProgress: function () {
            let e = this.get(0), r = jQuery('#controlBar_' + e.id),
                t = r.find('.mb_YTPProgress'), a = r.find('.mb_YTPLoaded'),
                o = r.find('.mb_YTPseekbar'), n = t.outerWidth(),
                i = Math.floor(e.player.getCurrentTime()),
                l = Math.floor(e.player.getDuration()), s = i * n / l,
                u = 100 * e.player.getVideoLoadedFraction();
            return a.css({ left: 0, width: u + '%' }), o.css(
                { left: 0, width: s }), { totalTime: l, currentTime: i };
        },
        buildControls: function (YTPlayer) {
            if (jQuery('#controlBar_' + YTPlayer.id).
                remove(), !YTPlayer.opt.showControls) return void (YTPlayer.controlBar = !1);
            if (YTPlayer.opt.showYTLogo = YTPlayer.opt.showYTLogo ||
                YTPlayer.opt.printUrl, jQuery(
                '#controlBar_' + YTPlayer.id).length) return;
            YTPlayer.controlBar = jQuery('<div/>').
                attr('id', 'controlBar_' + YTPlayer.id).
                addClass('mb_YTPBar').
                css({
                    whiteSpace: 'noWrap',
                    position: YTPlayer.isBackground ? 'fixed' : 'absolute',
                    zIndex: YTPlayer.isBackground ? 1e4 : 1e3,
                }).
                hide().
                on('click', function (e) {e.stopPropagation();});
            let buttonBar = jQuery('<div/>').addClass('buttonBar'),
                playpause = jQuery(
                    '<span>' + jQuery.mbYTPlayer.controls.play + '</span>').
                    addClass('mb_YTPPlayPause ytpicon').
                    on('click', function (e) {
                        e.stopPropagation(), jQuery(YTPlayer).
                            YTPTogglePlay();
                    }), MuteUnmute = jQuery(
                '<span>' + jQuery.mbYTPlayer.controls.mute + '</span>').
                    addClass('mb_YTPMuteUnmute ytpicon').
                    on('click', function (e) {
                        e.stopPropagation(), jQuery(YTPlayer).
                            YTPToggleVolume();
                    }), volumeBar = jQuery('<div/>').
                    addClass('mb_YTPVolumeBar').
                    css({ display: 'inline-block' });
            YTPlayer.volumeBar = volumeBar;
            let idx = jQuery('<span/>').addClass('mb_YTPTime'),
                vURL = YTPlayer.opt.videoURL ? YTPlayer.opt.videoURL : '';
            vURL.indexOf('http') < 0 &&
            (vURL = 'https://www.youtube.com/watch?v=' + YTPlayer.opt.videoURL);
            let movieUrl = jQuery('<span/>').
                    html(jQuery.mbYTPlayer.controls.ytLogo).
                    addClass('mb_YTPUrl ytpicon').
                    attr('title', 'view on YouTube').
                    on('click', function () {window.open(vURL, 'viewOnYT');}),
                onlyVideo = jQuery('<span/>').
                    html(jQuery.mbYTPlayer.controls.onlyYT).
                    addClass('mb_OnlyYT ytpicon').
                    on('click', function (e) {
                        e.stopPropagation(), jQuery(YTPlayer).
                            YTPFullscreen(YTPlayer.opt.realFullscreen);
                    }), progressBar = jQuery('<div/>').
                    addClass('mb_YTPProgress').
                    css('position', 'absolute').
                    on('click', function (e) {
                        e.stopPropagation(), timeBar.css({
                            width: e.clientX - timeBar.offset().left,
                        }), YTPlayer.timeW = e.clientX -
                            timeBar.offset().left, YTPlayer.controlBar.find(
                            '.mb_YTPLoaded').css({ width: 0 });
                        let r = Math.floor(YTPlayer.player.getDuration());
                        YTPlayer.goto = timeBar.outerWidth() * r /
                            progressBar.outerWidth(), YTPlayer.player.seekTo(
                            parseFloat(YTPlayer.goto),
                            !0), YTPlayer.controlBar.find('.mb_YTPLoaded').
                            css({ width: 0 });
                    }), loadedBar = jQuery('<div/>').
                    addClass('mb_YTPLoaded').
                    css('position', 'absolute'), timeBar = jQuery('<div/>').
                    addClass('mb_YTPseekbar').
                    css('position', 'absolute');
            progressBar.append(loadedBar).append(timeBar), buttonBar.append(
                playpause).
                append(MuteUnmute).
                append(volumeBar).
                append(idx), YTPlayer.opt.showYTLogo &&
            buttonBar.append(movieUrl), (YTPlayer.isBackground ||
                eval(YTPlayer.opt.realFullscreen) && !YTPlayer.isBackground) &&
            buttonBar.append(onlyVideo), YTPlayer.controlBar.append(buttonBar).
                append(progressBar), YTPlayer.isBackground ? jQuery('body').
                after(YTPlayer.controlBar) : (YTPlayer.controlBar.addClass(
                'inlinePlayer'), YTPlayer.wrapper.before(
                YTPlayer.controlBar)), volumeBar.simpleSlider({
                initialval: YTPlayer.opt.vol,
                scale: 100,
                orientation: 'h',
                callback: function (e) {
                    0 == e.value ? jQuery(YTPlayer).
                        YTPMute() : jQuery(YTPlayer).
                        YTPUnmute(), YTPlayer.player.setVolume(
                        e.value), YTPlayer.isMute ||
                    (YTPlayer.opt.vol = e.value);
                },
            });
        },
        changeCoverImage: function (e) {
            let r = this.get(0);
            if (r.opt.coverImage || r.orig_containment_background) {
                let t = e || (r.opt.coverImage ? 'url(' + r.opt.coverImage +
                    ') center center' : r.orig_containment_background);
                t && r.opt.containment.css({
                    background: t,
                    backgroundSize: 'cover',
                    backgroundRepeat: 'no-repeat',
                    backgroundAttachment: 'fixed',
                });
            }
            return this;
        },
        checkForState: function () {
            let YTPlayer = this.get(0), $YTPlayer = jQuery(YTPlayer);
            clearInterval(YTPlayer.getState);
            let interval = 100;
            if (!jQuery.contains(document,
                YTPlayer)) return $YTPlayer.YTPPlayerDestroy(), clearInterval(
                YTPlayer.getState), void clearInterval(
                YTPlayer.checkForStartAt);
            jQuery.mbYTPlayer.checkForStart(
                YTPlayer), YTPlayer.getState = setInterval(function () {
                let $YTPlayer = jQuery(YTPlayer);
                if (!YTPlayer.isReady) return;
                let prog = jQuery(YTPlayer).YTPManageProgress(),
                    stopAt = YTPlayer.opt.stopAt > YTPlayer.opt.startAt
                        ? YTPlayer.opt.stopAt
                        : 0;
                if (stopAt = stopAt < YTPlayer.player.getDuration()
                    ? stopAt
                    : 0, YTPlayer.currentTime != prog.currentTime) {
                    let e = jQuery.Event('YTPTime');
                    e.time = YTPlayer.currentTime, jQuery(YTPlayer).trigger(e);
                }
                if (YTPlayer.currentTime = prog.currentTime, YTPlayer.totalTime = YTPlayer.player.getDuration(), 0 ==
                YTPlayer.player.getVolume()
                    ? $YTPlayer.addClass('isMuted')
                    : $YTPlayer.removeClass(
                        'isMuted'), YTPlayer.opt.showControls && (prog.totalTime
                    ? YTPlayer.controlBar.find('.mb_YTPTime').
                        html(jQuery.mbYTPlayer.formatTime(prog.currentTime) +
                            ' / ' +
                            jQuery.mbYTPlayer.formatTime(prog.totalTime))
                    : YTPlayer.controlBar.find('.mb_YTPTime').
                        html('-- : -- / -- : --')), eval(
                    YTPlayer.opt.stopMovieOnBlur) && (document.hasFocus()
                    ? document.hasFocus() && !YTPlayer.hasFocus && -1 !=
                    YTPlayer.state && 0 != YTPlayer.state &&
                    (YTPlayer.hasFocus = !0, YTPlayer.preventTrigger = !0, $YTPlayer.YTPPlay())
                    : 1 == YTPlayer.state &&
                    (YTPlayer.hasFocus = !1, YTPlayer.preventTrigger = !0, $YTPlayer.YTPPause())), YTPlayer.opt.playOnlyIfVisible) {
                    let e = jQuery.mbYTPlayer.isOnScreen(YTPlayer,
                        YTPlayer.opt.onScreenPercentage);
                    e || 1 != YTPlayer.state
                        ? e && !YTPlayer.isOnScreen &&
                        (YTPlayer.isOnScreen = !0, YTPlayer.player.playVideo())
                        : (YTPlayer.isOnScreen = !1, $YTPlayer.YTPPause());
                }
                if (YTPlayer.controlBar.length &&
                YTPlayer.controlBar.outerWidth() <= 400 && !YTPlayer.isCompact
                    ? (YTPlayer.controlBar.addClass(
                        'compact'), YTPlayer.isCompact = !0, !YTPlayer.isMute &&
                    YTPlayer.volumeBar &&
                    YTPlayer.volumeBar.updateSliderVal(YTPlayer.opt.vol))
                    : YTPlayer.controlBar.length &&
                    YTPlayer.controlBar.outerWidth() > 400 &&
                    YTPlayer.isCompact && (YTPlayer.controlBar.removeClass(
                        'compact'), YTPlayer.isCompact = !1, !YTPlayer.isMute &&
                    YTPlayer.volumeBar && YTPlayer.volumeBar.updateSliderVal(
                        YTPlayer.opt.vol)), YTPlayer.player.getPlayerState() >
                0 && (parseFloat(YTPlayer.player.getDuration() -
                    YTPlayer.opt.fadeOnStartTime / 1e3) <
                    YTPlayer.player.getCurrentTime() || stopAt > 0 &&
                    parseFloat(YTPlayer.player.getCurrentTime()) >= stopAt)) {
                    if (YTPlayer.isEnded) return;
                    if (YTPlayer.isEnded = !0, setTimeout(
                        function () {YTPlayer.isEnded = !1;},
                        1e3), YTPlayer.isList) {
                        if (!YTPlayer.opt.loop || YTPlayer.opt.loop > 0 &&
                            YTPlayer.player.loopTime === YTPlayer.opt.loop -
                            1) {
                            YTPlayer.player.loopTime = void 0, clearInterval(
                                YTPlayer.getState);
                            let e = jQuery.Event('YTPEnd');
                            return e.time = YTPlayer.currentTime, void jQuery(
                                YTPlayer).trigger(e);
                        }
                    } else if (!YTPlayer.opt.loop || YTPlayer.opt.loop > 0 &&
                        YTPlayer.player.loopTime === YTPlayer.opt.loop -
                        1) return YTPlayer.player.loopTime = void 0, YTPlayer.state = 2, $YTPlayer.changeCoverImage(
                        YTPlayer), jQuery(YTPlayer).
                        YTPPause(), void YTPlayer.wrapper.CSSAnimate(
                        { opacity: 0 }, YTPlayer.opt.fadeOnStartTime,
                        function () {
                            YTPlayer.controlBar.length &&
                            YTPlayer.controlBar.find('.mb_YTPPlayPause').
                                html(
                                    jQuery.mbYTPlayer.controls.play), $YTPlayer.changeCoverImage();
                            let e = jQuery.Event('YTPEnd');
                            e.time = YTPlayer.currentTime, jQuery(YTPlayer).
                                trigger(e), YTPlayer.player.seekTo(
                                YTPlayer.opt.startAt, !0);
                        });
                    YTPlayer.player.loopTime = YTPlayer.player.loopTime
                        ? ++YTPlayer.player.loopTime
                        : 1, YTPlayer.opt.startAt = YTPlayer.opt.startAt ||
                        1, YTPlayer.preventTrigger = !0, YTPlayer.state = 2, YTPlayer.player.seekTo(
                        YTPlayer.opt.startAt, !0);
                }
            }, interval);
        },
        checkForStart: function (YTPlayer) {
            let $YTPlayer = jQuery(YTPlayer);
            if (!jQuery.contains(document,
                YTPlayer)) return void $YTPlayer.YTPPlayerDestroy();
            if (jQuery.mbYTPlayer.buildControls(
                YTPlayer), YTPlayer.overlay) if (YTPlayer.opt.addRaster) {
                let e = 'dot' == YTPlayer.opt.addRaster
                    ? 'raster-dot'
                    : 'raster';
                YTPlayer.overlay.addClass(
                    YTPlayer.isRetina ? e + ' retina' : e);
            } else YTPlayer.overlay.removeClass(function (e, r) {
                let t = r.split(' '), a = [];
                return jQuery.each(t, function (e, r) {
                    /raster.*/.test(r) && a.push(r);
                }), a.push('retina'), a.join(' ');
            });
            YTPlayer.preventTrigger = !0, YTPlayer.state = 2, YTPlayer.preventTrigger = !0, YTPlayer.player.mute(), YTPlayer.player.playVideo(), YTPlayer.isStarting = !0;
            let startAt = YTPlayer.start_from_last
                ? YTPlayer.start_from_last
                : YTPlayer.opt.startAt ? YTPlayer.opt.startAt : 1;
            return YTPlayer.preventTrigger = !0, YTPlayer.checkForStartAt = setInterval(
                function () {
                    YTPlayer.player.mute(), YTPlayer.player.seekTo(startAt, !0);
                    let canPlayVideo = YTPlayer.player.getVideoLoadedFraction() >=
                        startAt / YTPlayer.player.getDuration();
                    if (jQuery.mbBrowser.mobile &&
                    (canPlayVideo = !0), YTPlayer.player.getDuration() > 0 &&
                    YTPlayer.player.getCurrentTime() >= startAt &&
                    canPlayVideo) {
                        YTPlayer.start_from_last = null, YTPlayer.preventTrigger = !0, $YTPlayer.YTPPause(), clearInterval(
                            YTPlayer.checkForStartAt), 'function' ==
                        typeof YTPlayer.opt.onReady && YTPlayer.opt.onReady(
                            YTPlayer), YTPlayer.isReady = !0, $YTPlayer.YTPRemoveFilter(), YTPlayer.opt.addFilters
                            ? $YTPlayer.YTPApplyFilters(YTPlayer.opt.addFilters)
                            : $YTPlayer.YTPApplyFilters(), $YTPlayer.YTPEnableFilters();
                        let YTPready = jQuery.Event('YTPReady');
                        if (YTPready.time = YTPlayer.currentTime, $YTPlayer.trigger(
                            YTPready), YTPlayer.state = 2, YTPlayer.opt.mute
                            ? $YTPlayer.YTPMute()
                            : YTPlayer.opt.autoPlay
                                ? (console.debug(
                                    'We muted the audio to make the video \'auto-play\' according with the latest vendor policy. The audio will unmute at the first user interaction with the page'), YTPlayer.player.mute(), YTPlayer.forcedMuted = !0, jQuery(
                                    document).
                                    on('mousedown.YTPstartAudio', function () {
                                        YTPlayer.forcedMuted && (console.debug(
                                            'AAAAAAA'), YTPlayer.player.unMute(), YTPlayer.forcedMuted = !1, jQuery(
                                            document).
                                            off('mousedown.YTPstartAudio'));
                                    }), jQuery(window).
                                    on('scroll',
                                        function () {console.debug('AAAAA');}))
                                : YTPlayer.player.unMute(), 'undefined' !=
                        typeof _gaq && eval(YTPlayer.opt.gaTrack) ? _gaq.push([
                            '_trackEvent',
                            'YTPlayer',
                            'Play',
                            YTPlayer.hasData
                                ? YTPlayer.videoData.title
                                : YTPlayer.videoID.toString()]) : 'undefined' !=
                            typeof ga && eval(YTPlayer.opt.gaTrack) &&
                            ga('send', 'event', 'YTPlayer', 'play',
                                YTPlayer.hasData
                                    ? YTPlayer.videoData.title
                                    : YTPlayer.videoID.toString()), YTPlayer.opt.autoPlay) {
                            let e = jQuery.Event('YTPStart');
                            e.time = YTPlayer.currentTime, jQuery(YTPlayer).
                                trigger(e), YTPlayer.isStarting = !1, 'mac' ===
                            jQuery.mbBrowser.os.name &&
                            jQuery.mbBrowser.safari && jQuery('body').
                                one('mousedown.YTPstart',
                                    function () {$YTPlayer.YTPPlay();}), $YTPlayer.YTPPlay(), console.timeEnd(
                                YTPTimerLabels.startPlaying);
                        } else YTPlayer.preventTrigger = !0, $YTPlayer.YTPPause(), YTPlayer.start_from_last &&
                        YTPlayer.player.seekTo(startAt, !0), setTimeout(
                            function () {
                                YTPlayer.preventTrigger = !0, $YTPlayer.YTPPause(), YTPlayer.isPlayer ||
                                (YTPlayer.opt.coverImage
                                    ? (YTPlayer.wrapper.css(
                                        { opacity: 0 }), setTimeout(
                                        function () {$YTPlayer.changeCoverImage();},
                                        YTPlayer.opt.fadeOnStartTime))
                                    : (jQuery(YTPlayer.playerEl).
                                        CSSAnimate({ opacity: 1 },
                                            YTPlayer.opt.fadeOnStartTime), YTPlayer.wrapper.CSSAnimate(
                                        {
                                            opacity: YTPlayer.isAlone
                                                ? 1
                                                : YTPlayer.opt.opacity,
                                        },
                                        YTPlayer.opt.fadeOnStartTime))), YTPlayer.isStarting = !1;
                            }, 500), YTPlayer.controlBar.length &&
                        YTPlayer.controlBar.find('.mb_YTPPlayPause').
                            html(jQuery.mbYTPlayer.controls.play);
                        YTPlayer.isPlayer && !YTPlayer.opt.autoPlay &&
                        YTPlayer.loading && YTPlayer.loading.length &&
                        (YTPlayer.loading.html('Ready'), setTimeout(
                            function () {YTPlayer.loading.fadeOut();},
                            100)), YTPlayer.controlBar &&
                        YTPlayer.controlBar.length &&
                        YTPlayer.controlBar.slideDown(1e3);
                    }
                    'mac' === jQuery.mbBrowser.os.name &&
                    jQuery.mbBrowser.safari &&
                    (YTPlayer.player.playVideo(), startAt >= 0 &&
                    YTPlayer.player.seekTo(startAt, !0));
                }, 100), $YTPlayer;
        },
        getTime: function () {
            let e = this.get(0);
            return jQuery.mbYTPlayer.formatTime(e.currentTime);
        },
        getTotalTime: function () {
            let e = this.get(0);
            return jQuery.mbYTPlayer.formatTime(e.totalTime);
        },
        formatTime: function (e) {
            let r = Math.floor(e / 60), t = Math.floor(e - 60 * r);
            return (r <= 9 ? '0' + r : r) + ' : ' + (t <= 9 ? '0' + t : t);
        },
        setAnchor: function (e) {this.optimizeDisplay(e);},
        getAnchor: function () {return this.get(0).opt.anchor;},
        setAbundance: function (e, r) {
            let t = this.get(0);
            return r && (t.opt.abundance = e), this.optimizeDisplay(
                t.opt.anchor, e), this;
        },
        getAbundance: function () {return this.get(0).opt.abundance;},
        setOption: function (e, r) {return this.get(0).opt[e] = r, this;},
    }, jQuery.fn.optimizeDisplay = function (anchor, abundanceX) {
        let YTPlayer = this.get(0), vid = {}, el = YTPlayer.wrapper,
            iframe = jQuery(YTPlayer.playerEl);
        YTPlayer.opt.anchor = anchor ||
            YTPlayer.opt.anchor, YTPlayer.opt.anchor = 'undefined ' !=
        typeof YTPlayer.opt.anchor ? YTPlayer.opt.anchor : 'center,center';
        let YTPAlign = YTPlayer.opt.anchor.split(','),
            ab = abundanceX || YTPlayer.opt.abundance;
        if (YTPlayer.opt.optimizeDisplay) {
            let abundance = el.height() * ab, win = {};
            win.width = el.outerWidth(), win.height = el.outerHeight() +
                abundance, YTPlayer.opt.ratio = 'auto' === YTPlayer.opt.ratio
                ? 16 / 9
                : YTPlayer.opt.ratio, YTPlayer.opt.ratio = eval(
                YTPlayer.opt.ratio), vid.width = win.width +
                abundance, vid.height = Math.ceil(
                vid.width / YTPlayer.opt.ratio), vid.marginTop = Math.ceil(
                -(vid.height - win.height + abundance) /
                2), vid.marginLeft = -abundance / 2;
            let lowest = vid.height < win.height;
            lowest &&
            (vid.height = win.height + abundance, vid.width = Math.ceil(
                vid.height * YTPlayer.opt.ratio), vid.marginTop = -abundance /
                2, vid.marginLeft = Math.ceil(-(vid.width - win.width) / 2));
            for (let e in YTPAlign) if (YTPAlign.hasOwnProperty(e)) {
                let r = YTPAlign[e].replace(/ /g, '');
                switch (r) {
                    case'top':
                        vid.marginTop = -abundance;
                        break;
                    case'bottom':
                        vid.marginTop = Math.ceil(
                            -(vid.height - win.height) - abundance / 2);
                        break;
                    case'left':
                        vid.marginLeft = -abundance;
                        break;
                    case'right':
                        vid.marginLeft = Math.ceil(
                            -(vid.width - win.width) + abundance / 2);
                }
            }
        } else vid.width = '100%', vid.height = '100%', vid.marginTop = 0, vid.marginLeft = 0;
        iframe.css({
            width: vid.width,
            height: vid.height,
            marginTop: vid.marginTop,
            marginLeft: vid.marginLeft,
            maxWidth: 'initial',
        });
    }, jQuery.shuffle = function (e) {
        let r = e.slice(), t = r.length, a = t;
        for (; a--;) {
            let e = parseInt(Math.random() * t), o = r[a];
            r[a] = r[e], r[e] = o;
        }
        return r;
    }, jQuery.fn.unselectable = function () {
        return this.each(function () {
            jQuery(this).
                css({
                    '-moz-user-select': 'none',
                    '-webkit-user-select': 'none',
                    'user-select': 'none',
                }).
                attr('unselectable', 'on');
        });
    }, jQuery.fn.YTPlayer = jQuery.mbYTPlayer.buildPlayer, jQuery.fn.mb_YTPlayer = jQuery.mbYTPlayer.buildPlayer, jQuery.fn.YTPCheckForState = jQuery.mbYTPlayer.checkForState, jQuery.fn.YTPGetPlayer = jQuery.mbYTPlayer.getPlayer, jQuery.fn.YTPGetVideoID = jQuery.mbYTPlayer.getVideoID, jQuery.fn.YTPGetPlaylistID = jQuery.mbYTPlayer.getPlaylistID, jQuery.fn.YTPChangeVideo = jQuery.fn.YTPChangeMovie = jQuery.mbYTPlayer.changeVideo, jQuery.fn.YTPPlayerDestroy = jQuery.mbYTPlayer.playerDestroy, jQuery.fn.YTPPlay = jQuery.mbYTPlayer.play, jQuery.fn.YTPTogglePlay = jQuery.mbYTPlayer.togglePlay, jQuery.fn.YTPStop = jQuery.mbYTPlayer.stop, jQuery.fn.YTPPause = jQuery.mbYTPlayer.pause, jQuery.fn.YTPSeekTo = jQuery.mbYTPlayer.seekTo, jQuery.fn.YTPGetPlaybackRate = jQuery.mbYTPlayer.getPlaybackRate, jQuery.fn.YTPSetPlaybackRate = jQuery.mbYTPlayer.setPlaybackRate, jQuery.fn.changeCoverImage = jQuery.mbYTPlayer.changeCoverImage, jQuery.fn.YTPlaylist = jQuery.mbYTPlayer.playlist, jQuery.fn.YTPPlayNext = jQuery.mbYTPlayer.playNext, jQuery.fn.YTPPlayPrev = jQuery.mbYTPlayer.playPrev, jQuery.fn.YTPPlayIndex = jQuery.mbYTPlayer.playIndex, jQuery.fn.YTPMute = jQuery.mbYTPlayer.mute, jQuery.fn.YTPUnmute = jQuery.mbYTPlayer.unmute, jQuery.fn.YTPToggleVolume = jQuery.mbYTPlayer.toggleVolume, jQuery.fn.YTPSetVolume = jQuery.mbYTPlayer.setVolume, jQuery.fn.YTPGetVolume = jQuery.mbYTPlayer.getVolume, jQuery.fn.YTPGetVideoData = jQuery.mbYTPlayer.getVideoData, jQuery.fn.YTPFullscreen = jQuery.mbYTPlayer.fullscreen, jQuery.fn.YTPToggleLoops = jQuery.mbYTPlayer.toggleLoops, jQuery.fn.YTPManageProgress = jQuery.mbYTPlayer.manageProgress, jQuery.fn.YTPSetVideoQuality = jQuery.mbYTPlayer.setVideoQuality, jQuery.fn.YTPGetVideoQuality = jQuery.mbYTPlayer.getVideoQuality, jQuery.fn.YTPApplyFilter = jQuery.mbYTPlayer.applyFilter, jQuery.fn.YTPApplyFilters = jQuery.mbYTPlayer.applyFilters, jQuery.fn.YTPToggleFilter = jQuery.mbYTPlayer.toggleFilter, jQuery.fn.YTPToggleFilters = jQuery.mbYTPlayer.toggleFilters, jQuery.fn.YTPRemoveFilter = jQuery.mbYTPlayer.removeFilter, jQuery.fn.YTPDisableFilters = jQuery.mbYTPlayer.disableFilters, jQuery.fn.YTPEnableFilters = jQuery.mbYTPlayer.enableFilters, jQuery.fn.YTPGetFilters = jQuery.mbYTPlayer.getFilters, jQuery.fn.YTPGetTime = jQuery.mbYTPlayer.getTime, jQuery.fn.YTPGetTotalTime = jQuery.mbYTPlayer.getTotalTime, jQuery.fn.YTPAddMask = jQuery.mbYTPlayer.addMask, jQuery.fn.YTPRemoveMask = jQuery.mbYTPlayer.removeMask, jQuery.fn.YTPToggleMask = jQuery.mbYTPlayer.toggleMask, jQuery.fn.YTPGetAbundance = jQuery.mbYTPlayer.getAbundance, jQuery.fn.YTPSetAbundance = jQuery.mbYTPlayer.setAbundance, jQuery.fn.YTPSetAnchor = jQuery.mbYTPlayer.setAnchor, jQuery.fn.YTPGetAnchor = jQuery.mbYTPlayer.getAnchor, jQuery.fn.YTPSetOption = jQuery.mbYTPlayer.setOption;
}(jQuery, ytp);
var nAgt = navigator.userAgent;

function isTouchSupported () {
    var e = nAgt.msMaxTouchPoints,
        r = 'ontouchstart' in document.createElement('div');
    return !(!e && !r);
}

jQuery.browser = jQuery.browser ||
    {}, jQuery.browser.mozilla = !1, jQuery.browser.webkit = !1, jQuery.browser.opera = !1, jQuery.browser.safari = !1, jQuery.browser.chrome = !1, jQuery.browser.androidStock = !1, jQuery.browser.msie = !1, jQuery.browser.edge = !1, jQuery.browser.ua = nAgt;
var getOS = function () {
    var e = {
        version: 'Unknown version',
        name: 'Unknown OS',
    };
    return -1 != navigator.appVersion.indexOf('Win') &&
    (e.name = 'Windows'), -1 != navigator.appVersion.indexOf('Mac') && 0 >
    navigator.appVersion.indexOf('Mobile') && (e.name = 'Mac'), -1 !=
    navigator.appVersion.indexOf('Linux') &&
    (e.name = 'Linux'), /Mac OS X/.test(nAgt) && !/Mobile/.test(nAgt) &&
    (e.version = /Mac OS X ([\._\d]+)/.exec(
        nAgt)[1], e.version = e.version.replace(/_/g, '.').
        substring(0, 5)), /Windows/.test(nAgt) &&
    (e.version = 'Unknown.Unknown'), /Windows NT 5.1/.test(nAgt) &&
    (e.version = '5.1'), /Windows NT 6.0/.test(nAgt) &&
    (e.version = '6.0'), /Windows NT 6.1/.test(nAgt) &&
    (e.version = '6.1'), /Windows NT 6.2/.test(nAgt) &&
    (e.version = '6.2'), /Windows NT 10.0/.test(nAgt) &&
    (e.version = '10.0'), /Linux/.test(nAgt) && /Linux/.test(nAgt) &&
    (e.version = 'Unknown.Unknown'), e.name = e.name.toLowerCase(), e.major_version = 'Unknown', e.minor_version = 'Unknown', 'Unknown.Unknown' !=
    e.version && (e.major_version = parseFloat(
        e.version.split('.')[0]), e.minor_version = parseFloat(
        e.version.split('.')[1])), e;
}, nameOffset, verOffset, ix;
if (jQuery.browser.os = getOS(), jQuery.browser.hasTouch = isTouchSupported(), jQuery.browser.name = navigator.appName, jQuery.browser.fullVersion = '' +
    parseFloat(navigator.appVersion), jQuery.browser.majorVersion = parseInt(
    navigator.appVersion, 10), -1 != (verOffset = nAgt.indexOf(
    'Opera'))) jQuery.browser.opera = !0, jQuery.browser.name = 'Opera', jQuery.browser.fullVersion = nAgt.substring(
    verOffset + 6), -1 != (verOffset = nAgt.indexOf('Version')) &&
(jQuery.browser.fullVersion = nAgt.substring(verOffset + 8)); else if (-1 !=
    (verOffset = nAgt.indexOf(
        'OPR'))) jQuery.browser.opera = !0, jQuery.browser.name = 'Opera', jQuery.browser.fullVersion = nAgt.substring(
    verOffset + 4); else if (-1 != (verOffset = nAgt.indexOf(
    'MSIE'))) jQuery.browser.msie = !0, jQuery.browser.name = 'Microsoft Internet Explorer', jQuery.browser.fullVersion = nAgt.substring(
    verOffset + 5); else if (-1 != nAgt.indexOf('Trident')) {
    jQuery.browser.msie = !0, jQuery.browser.name = 'Microsoft Internet Explorer';
    var start = nAgt.indexOf('rv:') + 3, end = start + 4;
    jQuery.browser.fullVersion = nAgt.substring(start, end);
} else -1 != (verOffset = nAgt.indexOf('Edge'))
    ? (jQuery.browser.edge = !0, jQuery.browser.name = 'Microsoft Edge', jQuery.browser.fullVersion = nAgt.substring(
        verOffset + 5))
    : -1 != (verOffset = nAgt.indexOf('Chrome'))
        ? (jQuery.browser.webkit = !0, jQuery.browser.chrome = !0, jQuery.browser.name = 'Chrome', jQuery.browser.fullVersion = nAgt.substring(
            verOffset + 7))
        : -1 < nAgt.indexOf('mozilla/5.0') && -1 < nAgt.indexOf('android ') &&
        -1 < nAgt.indexOf('applewebkit') && !(-1 < nAgt.indexOf('chrome'))
            ? (verOffset = nAgt.indexOf(
                'Chrome'), jQuery.browser.webkit = !0, jQuery.browser.androidStock = !0, jQuery.browser.name = 'androidStock', jQuery.browser.fullVersion = nAgt.substring(
                verOffset + 7))
            : -1 != (verOffset = nAgt.indexOf('Safari'))
                ? (jQuery.browser.webkit = !0, jQuery.browser.safari = !0, jQuery.browser.name = 'Safari', jQuery.browser.fullVersion = nAgt.substring(
                    verOffset + 7), -1 !=
                (verOffset = nAgt.indexOf('Version')) &&
                (jQuery.browser.fullVersion = nAgt.substring(verOffset + 8)))
                : -1 != (verOffset = nAgt.indexOf('AppleWebkit'))
                    ? (jQuery.browser.webkit = !0, jQuery.browser.safari = !0, jQuery.browser.name = 'Safari', jQuery.browser.fullVersion = nAgt.substring(
                        verOffset + 7), -1 !=
                    (verOffset = nAgt.indexOf('Version')) &&
                    (jQuery.browser.fullVersion = nAgt.substring(
                        verOffset + 8)))
                    : -1 != (verOffset = nAgt.indexOf('Firefox'))
                        ? (jQuery.browser.mozilla = !0, jQuery.browser.name = 'Firefox', jQuery.browser.fullVersion = nAgt.substring(
                            verOffset + 8))
                        : (nameOffset = nAgt.lastIndexOf(' ') + 1) <
                        (verOffset = nAgt.lastIndexOf('/')) &&
                        (jQuery.browser.name = nAgt.substring(nameOffset,
                            verOffset), jQuery.browser.fullVersion = nAgt.substring(
                            verOffset + 1), jQuery.browser.name.toLowerCase() ==
                        jQuery.browser.name.toUpperCase() &&
                        (jQuery.browser.name = navigator.appName));

function uncamel (e) {
    return e.replace(/([A-Z])/g, function (e) {return '-' + e.toLowerCase();});
}

function setUnit (e, r) {
    return 'string' != typeof e || e.match(/^[\-0-9\.]+jQuery/)
        ? '' + e + r
        : e;
}

function setFilter (e, r, t) {
    var a = uncamel(r), o = jQuery.browser.mozilla ? '' : jQuery.CSS.sfx;
    e[o + 'filter'] = e[o + 'filter'] || '', t = setUnit(
        t > jQuery.CSS.filters[r].max ? jQuery.CSS.filters[r].max : t,
        jQuery.CSS.filters[r].unit), e[o + 'filter'] += a + '(' + t +
        ') ', delete e[r];
}

-1 != (ix = jQuery.browser.fullVersion.indexOf(';')) &&
(jQuery.browser.fullVersion = jQuery.browser.fullVersion.substring(0,
    ix)), -1 != (ix = jQuery.browser.fullVersion.indexOf(' ')) &&
(jQuery.browser.fullVersion = jQuery.browser.fullVersion.substring(0,
    ix)), jQuery.browser.majorVersion = parseInt(
    '' + jQuery.browser.fullVersion, 10), isNaN(jQuery.browser.majorVersion) &&
(jQuery.browser.fullVersion = '' +
    parseFloat(navigator.appVersion), jQuery.browser.majorVersion = parseInt(
    navigator.appVersion,
    10)), jQuery.browser.version = jQuery.browser.majorVersion, jQuery.browser.android = /Android/i.test(
    nAgt), jQuery.browser.blackberry = /BlackBerry|BB|PlayBook/i.test(
    nAgt), jQuery.browser.ios = /iPhone|iPad|iPod|webOS/i.test(
    nAgt), jQuery.browser.operaMobile = /Opera Mini/i.test(
    nAgt), jQuery.browser.windowsMobile = /IEMobile|Windows Phone/i.test(
    nAgt), jQuery.browser.kindle = /Kindle|Silk/i.test(
    nAgt), jQuery.browser.mobile = jQuery.browser.android ||
    jQuery.browser.blackberry || jQuery.browser.ios ||
    jQuery.browser.windowsMobile || jQuery.browser.operaMobile ||
    jQuery.browser.kindle, jQuery.isMobile = jQuery.browser.mobile, jQuery.isTablet = jQuery.browser.mobile &&
    765 <
    jQuery(window).width(), jQuery.isAndroidDefault = jQuery.browser.android &&
    !/chrome/i.test(
        nAgt), jQuery.mbBrowser = jQuery.browser, jQuery.browser.versionCompare = function (
    e, r) {
    if ('stringstring' != typeof e + typeof r) return !1;
    for (var t = e.split('.'), a = r.split('.'), o = 0, n = Math.max(t.length,
        a.length); o < n; o++) {
        if (t[o] && !a[o] && 0 < parseInt(t[o]) || parseInt(t[o]) >
            parseInt(a[o])) return 1;
        if (a[o] && !t[o] && 0 < parseInt(a[o]) || parseInt(t[o]) <
            parseInt(a[o])) return -1;
    }
    return 0;
}, jQuery.support.CSStransition = function () {
    var e = (document.body || document.documentElement).style;
    return void 0 !== e.transition || void 0 !== e.WebkitTransition ||
        void 0 !== e.MozTransition || void 0 !== e.MsTransition || void 0 !==
        e.OTransition;
}(), jQuery.CSS = {
    name: 'mb.CSSAnimate',
    author: 'Matteo Bicocchi',
    version: '2.0.0',
    transitionEnd: 'transitionEnd',
    sfx: '',
    filters: {
        blur: { min: 0, max: 100, unit: 'px' },
        brightness: { min: 0, max: 400, unit: '%' },
        contrast: { min: 0, max: 400, unit: '%' },
        grayscale: { min: 0, max: 100, unit: '%' },
        hueRotate: { min: 0, max: 360, unit: 'deg' },
        invert: { min: 0, max: 100, unit: '%' },
        saturate: { min: 0, max: 400, unit: '%' },
        sepia: { min: 0, max: 100, unit: '%' },
    },
    normalizeCss: function (e) {
        var r = jQuery.extend(!0, {}, e);
        for (var t in jQuery.browser.webkit || jQuery.browser.opera
            ? jQuery.CSS.sfx = '-webkit-'
            : jQuery.browser.mozilla
                ? jQuery.CSS.sfx = '-moz-'
                : jQuery.browser.msie &&
                (jQuery.CSS.sfx = '-ms-'), jQuery.CSS.sfx = '', r) {
            if ('transform' === t && (r[jQuery.CSS.sfx +
            'transform'] = r[t], delete r[t]), 'transform-origin' === t &&
            (r[jQuery.CSS.sfx +
            'transform-origin'] = e[t], delete r[t]), 'filter' !== t ||
            jQuery.browser.mozilla ||
            (r[jQuery.CSS.sfx + 'filter'] = e[t], delete r[t]), 'blur' === t &&
            setFilter(r, 'blur', e[t]), 'brightness' === t &&
            setFilter(r, 'brightness', e[t]), 'contrast' === t &&
            setFilter(r, 'contrast', e[t]), 'grayscale' === t &&
            setFilter(r, 'grayscale', e[t]), 'hueRotate' === t &&
            setFilter(r, 'hueRotate', e[t]), 'invert' === t &&
            setFilter(r, 'invert', e[t]), 'saturate' === t &&
            setFilter(r, 'saturate', e[t]), 'sepia' === t &&
            setFilter(r, 'sepia', e[t]), 'x' === t) {
                var a = jQuery.CSS.sfx + 'transform';
                r[a] = r[a] || '', r[a] += ' translateX(' +
                    setUnit(e[t], 'px') + ')', delete r[t];
            }
            'y' === t && (r[a = jQuery.CSS.sfx + 'transform'] = r[a] ||
                '', r[a] += ' translateY(' + setUnit(e[t], 'px') +
                ')', delete r[t]), 'z' === t &&
            (r[a = jQuery.CSS.sfx + 'transform'] = r[a] ||
                '', r[a] += ' translateZ(' + setUnit(e[t], 'px') +
                ')', delete r[t]), 'rotate' === t &&
            (r[a = jQuery.CSS.sfx + 'transform'] = r[a] ||
                '', r[a] += ' rotate(' + setUnit(e[t], 'deg') +
                ')', delete r[t]), 'rotateX' === t &&
            (r[a = jQuery.CSS.sfx + 'transform'] = r[a] ||
                '', r[a] += ' rotateX(' + setUnit(e[t], 'deg') +
                ')', delete r[t]), 'rotateY' === t &&
            (r[a = jQuery.CSS.sfx + 'transform'] = r[a] ||
                '', r[a] += ' rotateY(' + setUnit(e[t], 'deg') +
                ')', delete r[t]), 'rotateZ' === t &&
            (r[a = jQuery.CSS.sfx + 'transform'] = r[a] ||
                '', r[a] += ' rotateZ(' + setUnit(e[t], 'deg') +
                ')', delete r[t]), 'scale' === t &&
            (r[a = jQuery.CSS.sfx + 'transform'] = r[a] ||
                '', r[a] += ' scale(' + setUnit(e[t], '') +
                ')', delete r[t]), 'scaleX' === t &&
            (r[a = jQuery.CSS.sfx + 'transform'] = r[a] ||
                '', r[a] += ' scaleX(' + setUnit(e[t], '') +
                ')', delete r[t]), 'scaleY' === t &&
            (r[a = jQuery.CSS.sfx + 'transform'] = r[a] ||
                '', r[a] += ' scaleY(' + setUnit(e[t], '') +
                ')', delete r[t]), 'scaleZ' === t &&
            (r[a = jQuery.CSS.sfx + 'transform'] = r[a] ||
                '', r[a] += ' scaleZ(' + setUnit(e[t], '') +
                ')', delete r[t]), 'skew' === t &&
            (r[a = jQuery.CSS.sfx + 'transform'] = r[a] ||
                '', r[a] += ' skew(' + setUnit(e[t], 'deg') +
                ')', delete r[t]), 'skewX' === t &&
            (r[a = jQuery.CSS.sfx + 'transform'] = r[a] ||
                '', r[a] += ' skewX(' + setUnit(e[t], 'deg') +
                ')', delete r[t]), 'skewY' === t &&
            (r[a = jQuery.CSS.sfx + 'transform'] = r[a] ||
                '', r[a] += ' skewY(' + setUnit(e[t], 'deg') +
                ')', delete r[t]), 'perspective' === t &&
            (r[a = jQuery.CSS.sfx + 'transform'] = r[a] ||
                '', r[a] += ' perspective(' + setUnit(e[t], 'px') +
                ')', delete r[t]);
        }
        return r;
    },
    getProp: function (e) {
        var r, t = [];
        for (r in e) 0 > t.indexOf(r) && t.push(uncamel(r));
        return t.join(',');
    },
    animate: function (e, r, t, a, o) {
        return this.each(function () {
            function n () {
                i.called = !0, i.CSSAIsRunning = !1, l.off(
                    jQuery.CSS.transitionEnd + '.' + i.id), clearTimeout(
                    i.timeout), l.css(jQuery.CSS.sfx + 'transition',
                    ''), 'function' == typeof o && o.apply(i), 'function' ==
                typeof i.CSSqueue && (i.CSSqueue(), i.CSSqueue = null);
            }

            var i = this, l = jQuery(this);
            i.id = i.id || 'CSSA_' + (new Date).getTime();
            var s = s || { type: 'noEvent' };
            if (i.CSSAIsRunning && i.eventType == s.type &&
                !jQuery.browser.msie && 9 >=
                jQuery.browser.version) i.CSSqueue = function () {
                l.CSSAnimate(e, r, t, a, o);
            }; else if (i.CSSqueue = null, i.eventType = s.type, 0 !==
            l.length && e) {
                if (e = jQuery.normalizeCss(
                    e), i.CSSAIsRunning = !0, 'function' == typeof r &&
                (o = r, r = jQuery.fx.speeds._default), 'function' ==
                typeof t && (a = t, t = 0), 'string' == typeof t &&
                (o = t, t = 0), 'function' == typeof a &&
                (o = a, a = 'cubic-bezier(0.65,0.03,0.36,0.72)'), 'string' ==
                typeof r) for (var u in jQuery.fx.speeds) {
                    if (r == u) {
                        r = jQuery.fx.speeds[u];
                        break;
                    }
                    r = jQuery.fx.speeds._default;
                }
                if (r || (r = jQuery.fx.speeds._default), 'string' ==
                typeof o && (a = o, o = null), jQuery.support.CSStransition) {
                    var y = {
                        default: 'ease',
                        in: 'ease-in',
                        out: 'ease-out',
                        'in-out': 'ease-in-out',
                        snap: 'cubic-bezier(0,1,.5,1)',
                        easeOutCubic: 'cubic-bezier(.215,.61,.355,1)',
                        easeInOutCubic: 'cubic-bezier(.645,.045,.355,1)',
                        easeInCirc: 'cubic-bezier(.6,.04,.98,.335)',
                        easeOutCirc: 'cubic-bezier(.075,.82,.165,1)',
                        easeInOutCirc: 'cubic-bezier(.785,.135,.15,.86)',
                        easeInExpo: 'cubic-bezier(.95,.05,.795,.035)',
                        easeOutExpo: 'cubic-bezier(.19,1,.22,1)',
                        easeInOutExpo: 'cubic-bezier(1,0,0,1)',
                        easeInQuad: 'cubic-bezier(.55,.085,.68,.53)',
                        easeOutQuad: 'cubic-bezier(.25,.46,.45,.94)',
                        easeInOutQuad: 'cubic-bezier(.455,.03,.515,.955)',
                        easeInQuart: 'cubic-bezier(.895,.03,.685,.22)',
                        easeOutQuart: 'cubic-bezier(.165,.84,.44,1)',
                        easeInOutQuart: 'cubic-bezier(.77,0,.175,1)',
                        easeInQuint: 'cubic-bezier(.755,.05,.855,.06)',
                        easeOutQuint: 'cubic-bezier(.23,1,.32,1)',
                        easeInOutQuint: 'cubic-bezier(.86,0,.07,1)',
                        easeInSine: 'cubic-bezier(.47,0,.745,.715)',
                        easeOutSine: 'cubic-bezier(.39,.575,.565,1)',
                        easeInOutSine: 'cubic-bezier(.445,.05,.55,.95)',
                        easeInBack: 'cubic-bezier(.6,-.28,.735,.045)',
                        easeOutBack: 'cubic-bezier(.175, .885,.32,1.275)',
                        easeInOutBack: 'cubic-bezier(.68,-.55,.265,1.55)',
                    };
                    y[a] && (a = y[a]), l.off(jQuery.CSS.transitionEnd + '.' +
                        i.id), y = jQuery.CSS.getProp(e);
                    var d = {};
                    jQuery.extend(d, e), d[jQuery.CSS.sfx +
                    'transition-property'] = y, d[jQuery.CSS.sfx +
                    'transition-duration'] = r + 'ms', d[jQuery.CSS.sfx +
                    'transition-delay'] = t + 'ms', d[jQuery.CSS.sfx +
                    'transition-timing-function'] = a, setTimeout(function () {
                        l.one(jQuery.CSS.transitionEnd + '.' + i.id, n), l.css(
                            d);
                    }, 1), i.timeout = setTimeout(function () {
                        i.called || !o
                            ? (i.called = !1, i.CSSAIsRunning = !1)
                            : (l.css(jQuery.CSS.sfx + 'transition',
                            ''), o.apply(i), i.CSSAIsRunning = !1, 'function' ==
                            typeof i.CSSqueue && (i.CSSqueue(), i.CSSqueue = null));
                    }, r + t + 10);
                } else {
                    for (y in e) 'transform' === y && delete e[y], 'filter' ===
                    y && delete e[y], 'transform-origin' === y &&
                    delete e[y], 'auto' === e[y] && delete e[y], 'x' === y &&
                    (s = e[y], e[u = 'left'] = s, delete e[y]), 'y' === y &&
                    (s = e[y], e[u = 'top'] = s, delete e[y]), '-ms-transform' !==
                    y && '-ms-filter' !== y || delete e[y];
                    l.delay(t).animate(e, r, o);
                }
            }
        });
    },
}, jQuery.fn.CSSAnimate = jQuery.CSS.animate, jQuery.normalizeCss = jQuery.CSS.normalizeCss, jQuery.fn.css3 = function (e) {
    return this.each(function () {
        var r = jQuery(this), t = jQuery.normalizeCss(e);
        r.css(t);
    });
}, function (e) {
    e.simpleSlider = {
        defaults: {
            initialval: 0,
            maxval: 100,
            orientation: 'h',
            readonly: !1,
            callback: !1,
        },
        events: {
            start: e.browser.mobile ? 'touchstart' : 'mousedown',
            end: e.browser.mobile ? 'touchend' : 'mouseup',
            move: e.browser.mobile ? 'touchmove' : 'mousemove',
        },
        init: function (r) {
            return this.each(function () {
                var t = this, a = e(t);
                a.addClass('simpleSlider'), t.opt = {}, e.extend(t.opt,
                    e.simpleSlider.defaults, r), e.extend(t.opt, a.data());
                var o = 'h' === t.opt.orientation ? 'horizontal' : 'vertical';
                o = e('<div/>').addClass('level').addClass(o), a.prepend(
                    o), t.level = o, a.css({ cursor: 'default' }), 'auto' ==
                t.opt.maxval && (t.opt.maxval = e(t).
                    outerWidth()), a.updateSliderVal(), t.opt.readonly ||
                (a.on(e.simpleSlider.events.start, function (r) {
                    e.browser.mobile &&
                    (r = r.changedTouches[0]), t.canSlide = !0, a.updateSliderVal(
                        r), 'h' === t.opt.orientation ? a.css(
                        { cursor: 'col-resize' }) : a.css(
                        { cursor: 'row-resize' }), t.lastVal = t.val, e.browser.mobile ||
                    (r.preventDefault(), r.stopPropagation());
                }), e(document).
                    on(e.simpleSlider.events.move, function (r) {
                        e.browser.mobile &&
                        (r = r.changedTouches[0]), t.canSlide && (e(document).
                            css({ cursor: 'default' }), a.updateSliderVal(
                            r), e.browser.mobile ||
                        (r.preventDefault(), r.stopPropagation()));
                    }).
                    on(e.simpleSlider.events.end, function () {
                        e(document).
                            css({ cursor: 'auto' }), t.canSlide = !1, a.css(
                            { cursor: 'auto' });
                    }));
            });
        },
        updateSliderVal: function (r) {
            var t = this.get(0);
            if (t.opt) {
                t.opt.initialval = 'number' == typeof t.opt.initialval
                    ? t.opt.initialval
                    : t.opt.initialval(t);
                var a = e(t).outerWidth(), o = e(t).outerHeight();
                t.x = 'object' == typeof r ? r.clientX +
                    document.body.scrollLeft - this.offset().left : 'number' ==
                typeof r ? r * a / t.opt.maxval : t.opt.initialval * a /
                    t.opt.maxval, t.y = 'object' == typeof r ? r.clientY +
                    document.body.scrollTop - this.offset().top : 'number' ==
                typeof r ? (t.opt.maxval - t.opt.initialval - r) * o /
                    t.opt.maxval : t.opt.initialval * o /
                    t.opt.maxval, t.y = this.outerHeight() -
                    t.y, t.scaleX = t.x * t.opt.maxval / a, t.scaleY = t.y *
                    t.opt.maxval / o, t.outOfRangeX = t.scaleX > t.opt.maxval
                    ? t.scaleX - t.opt.maxval
                    : 0 > t.scaleX ? t.scaleX : 0, t.outOfRangeY = t.scaleY >
                t.opt.maxval ? t.scaleY - t.opt.maxval : 0 > t.scaleY
                    ? t.scaleY
                    : 0, t.outOfRange = 'h' === t.opt.orientation
                    ? t.outOfRangeX
                    : t.outOfRangeY, t.value = void 0 !== r ? 'h' ===
                t.opt.orientation ? t.x >= this.outerWidth()
                    ? t.opt.maxval
                    : 0 >= t.x ? 0 : t.scaleX : t.y >= this.outerHeight()
                    ? t.opt.maxval
                    : 0 >= t.y ? 0 : t.scaleY : 'h' === t.opt.orientation
                    ? t.scaleX
                    : t.scaleY, 'h' === t.opt.orientation ? t.level.width(
                    Math.floor(100 * t.x / a) + '%') : t.level.height(
                    Math.floor(100 * t.y / o)), t.lastVal === t.value &&
                ('h' === t.opt.orientation &&
                    (t.x >= this.outerWidth() || 0 >= t.x) || 'h' !==
                    t.opt.orientation &&
                    (t.y >= this.outerHeight() || 0 >= t.y)) ||
                ('function' == typeof t.opt.callback &&
                t.opt.callback(t), t.lastVal = t.value);
            }
        },
    }, e.fn.simpleSlider = e.simpleSlider.init, e.fn.updateSliderVal = e.simpleSlider.updateSliderVal;
}(jQuery), function (e) {
    e.mbCookie = {
        set: function (e, r, t, a) {
            'object' == typeof r && (r = JSON.stringify(r)), a = a
                ? '; domain=' + a
                : '';
            var o = new Date, n = '';
            0 < t && (o.setTime(o.getTime() + 864e5 * t), n = '; expires=' +
                o.toGMTString()), document.cookie = e + '=' + r + n +
                '; path=/' + a;
        }, get: function (e) {
            e += '=';
            for (var r = document.cookie.split(';'), t = 0; t < r.length; t++) {
                for (var a = r[t]; " " == a.charAt(0);) a = a.substring(1,
                    a.length);
                if (0 == a.indexOf(e)) try {
                    return JSON.parse(a.substring(e.length, a.length));
                } catch (r) {return a.substring(e.length, a.length);}
            }
            return null;
        }, remove: function (r) {e.mbCookie.set(r, '', -1);},
    }, e.mbStorage = {
        set: function (e, r) {
            'object' == typeof r &&
            (r = JSON.stringify(r)), localStorage.setItem(e, r);
        },
        get: function (e) {
            if (!localStorage[e]) return null;
            try {
                return JSON.parse(localStorage[e]);
            } catch (r) {return localStorage[e];}
        },
        remove: function (e) {
            e
                ? localStorage.removeItem(e)
                : localStorage.clear();
        },
    };
}(jQuery);
var nAgt = navigator.userAgent;

function isTouchSupported () {
    var e = nAgt.msMaxTouchPoints,
        r = 'ontouchstart' in document.createElement('div');
    return !(!e && !r);
}

jQuery.mbBrowser = {}, jQuery.mbBrowser.mozilla = !1, jQuery.mbBrowser.webkit = !1, jQuery.mbBrowser.opera = !1, jQuery.mbBrowser.safari = !1, jQuery.mbBrowser.chrome = !1, jQuery.mbBrowser.androidStock = !1, jQuery.mbBrowser.msie = !1, jQuery.mbBrowser.edge = !1, jQuery.mbBrowser.ua = nAgt;
var getOS = function () {
    var e = {
        version: 'Unknown version',
        name: 'Unknown OS',
    };
    return -1 != navigator.appVersion.indexOf('Win') &&
    (e.name = 'Windows'), -1 != navigator.appVersion.indexOf('Mac') && 0 >
    navigator.appVersion.indexOf('Mobile') && (e.name = 'Mac'), -1 !=
    navigator.appVersion.indexOf('Linux') &&
    (e.name = 'Linux'), /Mac OS X/.test(nAgt) && !/Mobile/.test(nAgt) &&
    (e.version = /Mac OS X ([\._\d]+)/.exec(
        nAgt)[1], e.version = e.version.replace(/_/g, '.').
        substring(0, 5)), /Windows/.test(nAgt) &&
    (e.version = 'Unknown.Unknown'), /Windows NT 5.1/.test(nAgt) &&
    (e.version = '5.1'), /Windows NT 6.0/.test(nAgt) &&
    (e.version = '6.0'), /Windows NT 6.1/.test(nAgt) &&
    (e.version = '6.1'), /Windows NT 6.2/.test(nAgt) &&
    (e.version = '6.2'), /Windows NT 10.0/.test(nAgt) &&
    (e.version = '10.0'), /Linux/.test(nAgt) && /Linux/.test(nAgt) &&
    (e.version = 'Unknown.Unknown'), e.name = e.name.toLowerCase(), e.major_version = 'Unknown', e.minor_version = 'Unknown', 'Unknown.Unknown' !=
    e.version && (e.major_version = parseFloat(
        e.version.split('.')[0]), e.minor_version = parseFloat(
        e.version.split('.')[1])), e;
}, nameOffset, verOffset, ix;
if (jQuery.mbBrowser.os = getOS(), jQuery.mbBrowser.hasTouch = isTouchSupported(), jQuery.mbBrowser.name = navigator.appName, jQuery.mbBrowser.fullVersion = '' +
    parseFloat(navigator.appVersion), jQuery.mbBrowser.majorVersion = parseInt(
    navigator.appVersion, 10), -1 != (verOffset = nAgt.indexOf(
    'Opera'))) jQuery.mbBrowser.opera = !0, jQuery.mbBrowser.name = 'Opera', jQuery.mbBrowser.fullVersion = nAgt.substring(
    verOffset + 6), -1 != (verOffset = nAgt.indexOf('Version')) &&
(jQuery.mbBrowser.fullVersion = nAgt.substring(verOffset + 8)); else if (-1 !=
    (verOffset = nAgt.indexOf(
        'OPR'))) jQuery.mbBrowser.opera = !0, jQuery.mbBrowser.name = 'Opera', jQuery.mbBrowser.fullVersion = nAgt.substring(
    verOffset + 4); else if (-1 != (verOffset = nAgt.indexOf(
    'MSIE'))) jQuery.mbBrowser.msie = !0, jQuery.mbBrowser.name = 'Microsoft Internet Explorer', jQuery.mbBrowser.fullVersion = nAgt.substring(
    verOffset + 5); else if (-1 != nAgt.indexOf('Trident')) {
    jQuery.mbBrowser.msie = !0, jQuery.mbBrowser.name = 'Microsoft Internet Explorer';
    var start = nAgt.indexOf('rv:') + 3, end = start + 4;
    jQuery.mbBrowser.fullVersion = nAgt.substring(start, end);
} else -1 != (verOffset = nAgt.indexOf('Edge'))
    ? (jQuery.mbBrowser.edge = !0, jQuery.mbBrowser.name = 'Microsoft Edge', jQuery.mbBrowser.fullVersion = nAgt.substring(
        verOffset + 5))
    : -1 != (verOffset = nAgt.indexOf('Chrome'))
        ? (jQuery.mbBrowser.webkit = !0, jQuery.mbBrowser.chrome = !0, jQuery.mbBrowser.name = 'Chrome', jQuery.mbBrowser.fullVersion = nAgt.substring(
            verOffset + 7))
        : -1 < nAgt.indexOf('mozilla/5.0') && -1 < nAgt.indexOf('android ') &&
        -1 < nAgt.indexOf('applewebkit') && !(-1 < nAgt.indexOf('chrome'))
            ? (verOffset = nAgt.indexOf(
                'Chrome'), jQuery.mbBrowser.webkit = !0, jQuery.mbBrowser.androidStock = !0, jQuery.mbBrowser.name = 'androidStock', jQuery.mbBrowser.fullVersion = nAgt.substring(
                verOffset + 7))
            : -1 != (verOffset = nAgt.indexOf('Safari'))
                ? (jQuery.mbBrowser.webkit = !0, jQuery.mbBrowser.safari = !0, jQuery.mbBrowser.name = 'Safari', jQuery.mbBrowser.fullVersion = nAgt.substring(
                    verOffset + 7), -1 !=
                (verOffset = nAgt.indexOf('Version')) &&
                (jQuery.mbBrowser.fullVersion = nAgt.substring(verOffset + 8)))
                : -1 != (verOffset = nAgt.indexOf('AppleWebkit'))
                    ? (jQuery.mbBrowser.webkit = !0, jQuery.mbBrowser.safari = !0, jQuery.mbBrowser.name = 'Safari', jQuery.mbBrowser.fullVersion = nAgt.substring(
                        verOffset + 7), -1 !=
                    (verOffset = nAgt.indexOf('Version')) &&
                    (jQuery.mbBrowser.fullVersion = nAgt.substring(
                        verOffset + 8)))
                    : -1 != (verOffset = nAgt.indexOf('Firefox'))
                        ? (jQuery.mbBrowser.mozilla = !0, jQuery.mbBrowser.name = 'Firefox', jQuery.mbBrowser.fullVersion = nAgt.substring(
                            verOffset + 8))
                        : (nameOffset = nAgt.lastIndexOf(' ') + 1) <
                        (verOffset = nAgt.lastIndexOf('/')) &&
                        (jQuery.mbBrowser.name = nAgt.substring(nameOffset,
                            verOffset), jQuery.mbBrowser.fullVersion = nAgt.substring(
                            verOffset +
                            1), jQuery.mbBrowser.name.toLowerCase() ==
                        jQuery.mbBrowser.name.toUpperCase() &&
                        (jQuery.mbBrowser.name = navigator.appName));
-1 != (ix = jQuery.mbBrowser.fullVersion.indexOf(';')) &&
(jQuery.mbBrowser.fullVersion = jQuery.mbBrowser.fullVersion.substring(0,
    ix)), -1 != (ix = jQuery.mbBrowser.fullVersion.indexOf(' ')) &&
(jQuery.mbBrowser.fullVersion = jQuery.mbBrowser.fullVersion.substring(0,
    ix)), jQuery.mbBrowser.majorVersion = parseInt(
    '' + jQuery.mbBrowser.fullVersion, 10), isNaN(
    jQuery.mbBrowser.majorVersion) && (jQuery.mbBrowser.fullVersion = '' +
    parseFloat(navigator.appVersion), jQuery.mbBrowser.majorVersion = parseInt(
    navigator.appVersion,
    10)), jQuery.mbBrowser.version = jQuery.mbBrowser.majorVersion, jQuery.mbBrowser.android = /Android/i.test(
    nAgt), jQuery.mbBrowser.blackberry = /BlackBerry|BB|PlayBook/i.test(
    nAgt), jQuery.mbBrowser.ios = /iPhone|iPad|iPod|webOS/i.test(
    nAgt), jQuery.mbBrowser.operaMobile = /Opera Mini/i.test(
    nAgt), jQuery.mbBrowser.windowsMobile = /IEMobile|Windows Phone/i.test(
    nAgt), jQuery.mbBrowser.kindle = /Kindle|Silk/i.test(
    nAgt), jQuery.mbBrowser.mobile = jQuery.mbBrowser.android ||
    jQuery.mbBrowser.blackberry || jQuery.mbBrowser.ios ||
    jQuery.mbBrowser.windowsMobile || jQuery.mbBrowser.operaMobile ||
    jQuery.mbBrowser.kindle, jQuery.isMobile = jQuery.mbBrowser.mobile, jQuery.isTablet = jQuery.mbBrowser.mobile &&
    765 < jQuery(window).
        width(), jQuery.isAndroidDefault = jQuery.mbBrowser.android &&
    !/chrome/i.test(
        nAgt), jQuery.mbBrowser = jQuery.mbBrowser, jQuery.mbBrowser.versionCompare = function (
    e, r) {
    if ('stringstring' != typeof e + typeof r) return !1;
    for (var t = e.split('.'), a = r.split('.'), o = 0, n = Math.max(t.length,
        a.length); o < n; o++) {
        if (t[o] && !a[o] && 0 < parseInt(t[o]) || parseInt(t[o]) >
            parseInt(a[o])) return 1;
        if (a[o] && !t[o] && 0 < parseInt(a[o]) || parseInt(t[o]) <
            parseInt(a[o])) return -1;
    }
    return 0;
};

window.SEMICOLON_youtubeBgVideoInit = function ($youtubeBgPlayerEl) {

    $youtubeBgPlayerEl = $youtubeBgPlayerEl.filter(
        ':not(.mb_YTPlayer,.customjs)');

    if ($youtubeBgPlayerEl.length < 1) {
        return true;
    }

    $youtubeBgPlayerEl.each(function () {

        let element = $(this),
            elVideo = element.attr('data-video'),
            elMute = element.attr('data-mute') || true,
            elRatio = element.attr('data-ratio') || '16/9',
            elQuality = element.attr('data-quality') || 'hd720',
            elOpacity = element.attr('data-opacity') || 1,
            elContainer = element.attr('data-container') || 'parent',
            elOptimize = element.attr('data-optimize') || true,
            elLoop = element.attr('data-loop') || true,
            elControls = element.attr('data-controls') || false,
            elVolume = element.attr('data-volume') || 50,
            elStart = element.attr('data-start') || 0,
            elStop = element.attr('data-stop') || 0,
            elAutoPlay = element.attr('data-autoplay') || true,
            elFullScreen = element.attr('data-fullscreen') || false;

        if (elMute == 'false') {
            elMute = false;
        }

        if (elContainer == 'parent') {
            let parent = element.parent();
            if (parent.attr('id')) {
                elContainer = '#' + parent.attr('id');
            } else {
                let ytPid = 'yt-bg-player-parent-' +
                    Math.floor(Math.random() * 10000);
                parent.attr('id', ytPid);
                elContainer = '#' + ytPid;
            }
        }

        if (elOptimize == 'false') {
            elOptimize = false;
        }

        if (elLoop == 'false') {
            elLoop = false;
        }

        if (elControls == 'true') {
            elControls = true;
        }

        if (elAutoPlay == 'false') {
            elAutoPlay = false;
        }

        if (elFullScreen == 'true') {
            elFullScreen = true;
        }

        element.YTPlayer({
            videoURL: elVideo,
            mute: elMute,
            ratio: elRatio,
            quality: elQuality,
            opacity: Number(elOpacity),
            containment: elContainer,
            optimizeDisplay: elOptimize,
            loop: elLoop,
            vol: Number(elVolume),
            startAt: Number(elStart),
            stopAt: Number(elStop),
            autoPlay: elAutoPlay,
            realfullscreen: elFullScreen,
            showYTLogo: false,
            showControls: false,
        });

    });

};


Spamworldpro Mini