old_contents: var gear_menu = (function () {
  
  var exports = {};
  
  // We want to remember how far we were scrolled on each 'tab'.
  // To do so, we need to save away the old position of the
  // scrollbar when we switch to a new tab (and restore it
  // when we switch back.)
  var scroll_positions = {};
  
  exports.initialize = function () {
      admin.show_or_hide_menu_item();
  
      $('#gear-menu a[data-toggle="tab"]').on('show', function (e) {
          // Save the position of our old tab away, before we switch
          var old_tab = $(e.relatedTarget).attr('href');
          scroll_positions[old_tab] = message_viewport.scrollTop();
      });
      $('#gear-menu a[data-toggle="tab"]').on('shown', function (e) {
          var target_tab = $(e.target).attr('href');
          resize.resize_bottom_whitespace();
          // Hide all our error messages when switching tabs
          $('.alert').removeClass("show");
  
          // Set the URL bar title to show the sub-page you're currently on.
          var browser_url = target_tab;
          if (browser_url === "#home") {
              browser_url = "";
          }
          hashchange.changehash(browser_url);
  
          // After we show the new tab, restore its old scroll position
          // (we apparently have to do this after setting the hash,
          // because otherwise that action may scroll us somewhere.)
          if (target_tab === '#home') {
              if (scroll_positions.hasOwnProperty(target_tab)) {
                  message_viewport.scrollTop(scroll_positions[target_tab]);
              } else {
                  navigate.scroll_to_selected();
              }
          }
      });
  
      // The admin and settings pages are generated client-side through
      // templates.
  };
  
  exports.open = function () {
      $("#settings-dropdown").click();
      // there are invisible li tabs, which should not be clicked.f
      $("#gear-menu").find("li:not(.invisible) a").eq(0).focus();
  };
  
  exports.is_open = function () {
      return $(".dropdown").hasClass("open");
  };
  
  exports.close = function () {
      if (exports.is_open()) {
          $(".dropdown").removeClass("open");
      }
  };
  
  return exports;
  }());
  
  if (typeof module !== 'undefined') {
      module.exports = gear_menu;
  }
  
new_contents: var gear_menu = (function () {
  
  var exports = {};
  
  // We want to remember how far we were scrolled on each 'tab'.
  // To do so, we need to save away the old position of the
  // scrollbar when we switch to a new tab (and restore it
  // when we switch back.)
  var scroll_positions = {};
  
  exports.initialize = function () {
      admin.show_or_hide_menu_item();
  
      $('#gear-menu a[data-toggle="tab"]').on('show', function (e) {
          // Save the position of our old tab away, before we switch
          var old_tab = $(e.relatedTarget).attr('href');
          scroll_positions[old_tab] = message_viewport.scrollTop();
      });
      $('#gear-menu a[data-toggle="tab"]').on('shown', function (e) {
          var target_tab = $(e.target).attr('href');
          resize.resize_bottom_whitespace();
          // Hide all our error messages when switching tabs
          $('.alert').removeClass("show");
  
          // Set the URL bar title to show the sub-page you're currently on.
          var browser_url = target_tab;
          if (browser_url === "#home") {
              browser_url = "";
          }
          hashchange.changehash(browser_url);
  
          // After we show the new tab, restore its old scroll position
          // (we apparently have to do this after setting the hash,
          // because otherwise that action may scroll us somewhere.)
          if (target_tab === '#home') {
              if (scroll_positions.hasOwnProperty(target_tab)) {
                  message_viewport.scrollTop(scroll_positions[target_tab]);
              } else {
                  navigate.scroll_to_selected();
              }
          }
      });
  
      // The admin and settings pages are generated client-side through
      // templates.
  };
  
  exports.open = function () {
      $("#settings-dropdown").click();
      // there are invisible li tabs, which should not be clicked.
      $("#gear-menu").find("li:not(.invisible) a").eq(0).focus();
  };
  
  exports.is_open = function () {
      return $(".dropdown").hasClass("open");
  };
  
  exports.close = function () {
      if (exports.is_open()) {
          $(".dropdown").removeClass("open");
      }
  };
  
  return exports;
  }());
  
  if (typeof module !== 'undefined') {
      module.exports = gear_menu;
  }
  
subject: Fix typo.