JEMBOT MAWOT Bypass Shell
/* ===========================================================================
 * bootstrap-tooltip-extended.js v1.0.0
 * https://github.com/cyrilreze/bootstrap-tooltip-extended
 * ===========================================================================
 * Copyright 2016 Cyril Rezé
 * Licensed under MIT
 * https://github.com/cyrilreze/bootstrap-tooltip-extended/blob/master/LICENSE
 * =========================================================================== */
!function ($) {
  "use strict"; // jshint ;_;
  var bootstrapVersion = $.fn.tooltip.Constructor.VERSION ? $.fn.tooltip.Constructor.VERSION.split('.')[0] : '2'
 /* TOOLTIP-EXTENDED PUBLIC CLASS DEFINITION
  * ======================================== */
  // Save the original function object
  var _old = $.fn.tooltip;
  // Create a new constructor
  var TooltipExtended = function (element, options) {
    this.init('tooltip', element, options)
  }
  TooltipExtended.prototype = $.extend({}, _old.Constructor.prototype, {
    constructor: TooltipExtended
  , show: function () {
      var $tip
        , pos
        , actualWidth
        , actualHeight
        , placement
        , tp
        , e = $.Event('show')
      if (this.hasContent() && this.enabled) {
        this.$element.trigger(e)
        if (e.isDefaultPrevented()) return
        $tip = this.tip()
        this.setContent()
        if (this.options.animation) {
          $tip.addClass('fade')
        }
        placement = typeof this.options.placement == 'function' ?
          this.options.placement.call(this, $tip[0], this.$element[0]) :
          this.options.placement
        // Detect if auto direction placement
        var autoDirToken = /\s?auto-dir?\s?/i
        var autoDirPlace = autoDirToken.test(placement)
        if (autoDirPlace) placement = placement.replace(autoDirToken, '') || 'top'
        $tip
          .detach()
          .css({ top: 0, left: 0, display: 'block' })
          .addClass(placement)
        this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
        pos = this.getPosition()
        actualWidth = $tip[0].offsetWidth
        actualHeight = $tip[0].offsetHeight
        // Get the overall document direction
        var isRTL = jQuery(document.querySelector("html")).attr('dir') === 'rtl' ? true : false
        // If auto-dir and the direction is RTL, the horizontal placement is reversed
        if (autoDirPlace) {
          var orgPlacement = placement
          var xPlace = placement.replace(/bottom-|top-/g, '') || ''
          var yPlace = placement.replace(/left|right/g, '') || ''
          placement = xPlace == 'left'  && isRTL ? yPlace + 'right' :
                      xPlace == 'right' && isRTL ? yPlace + 'left'  :
                      placement
          $tip
            .removeClass(orgPlacement)
            .addClass(placement)
        }
        switch (placement) {
          case 'bottom':
            tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}
            break
          case 'top':
            tp = {top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2}
            break
          case 'left':
            tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth}
            break
          case 'right':
            tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width}
            break
          // Additional positions
          case 'bottom-left':
            tp = {top: pos.top + pos.height, left: pos.left}
            break
          case 'bottom-right':
            tp = {top: pos.top + pos.height, left: pos.left + pos.width - actualWidth}
            break
          case 'top-left':
            tp = {top: pos.top - actualHeight, left: pos.left }
            break
          case 'top-right':
            tp = {top: pos.top - actualHeight, left: pos.left + pos.width - actualWidth}
            break
        }
        this.applyPlacement(tp, placement)
        // Arrow position adjustment for Bootstrap 3
        if ( bootstrapVersion === '3' ) {
          this.newArrow(placement, actualWidth, isRTL)
        }
        this.$element.trigger('shown')
      }
    }
  , newArrow: function (placement, actualWidth, isRTL) {
      var $arrow = this.tip().find('.tooltip-arrow')
        , arrow_width = parseInt($arrow.css('width'), 10)
        , arrow_height = parseInt($arrow.css('height'), 10)
  
      var xPlace = placement.replace(/bottom-|top-/g, '') || ''
      var yPlace = placement.replace(/left|right/g, '') || ''
      if ( yPlace && xPlace == 'left' && !isRTL ) $arrow.css("left", arrow_width / 2)
      if ( yPlace && xPlace == 'left' && isRTL )  $arrow.css("right", actualWidth - arrow_width - arrow_width / 2)
      if ( yPlace && xPlace == 'right' )          $arrow.css("left", actualWidth - arrow_width - arrow_width / 2)
      if ( yPlace == 'bottom-' )                  $arrow.css("top", arrow_height)
      if ( yPlace == 'top-' )                     $arrow.css("bottom", arrow_height)
    }
  });
 /* TOOLTIP-EXTENDED PLUGIN DEFINITION
  * ================================== */
  var old = $.fn.tooltip
  // Override the old initialization with the new constructor
  $.fn.tooltip = $.extend(function ( option ) {
    return this.each(function () {
      var $this = $(this)
        , data = $this.data('tooltip')
        , options = $.extend({}, TooltipExtended.defaults, $this.data(), typeof option == 'object' && option)
      if (!data) $this.data('tooltip', (data = new TooltipExtended(this, options)))
      if (typeof option == 'string') data[option]()
    })
  }, $.fn.tooltip )
 /* TOOLTIP-EXTENDED NO CONFLICT
  * ============================ */
  $.fn.tooltip.noConflict = function () {
    $.fn.tooltip = old
    return this
  };
}(window.jQuery);
xxxxx1.0, XXX xxxx