<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[23421] trunk/wp-includes: jQuery 1.9.1 and jQuery Migrate 1.1.0.</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg > ul, #logmsg > ol { margin-left: 0; margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://core.trac.wordpress.org/changeset/23421">23421</a></dd>
<dt>Author</dt> <dd>nacin</dd>
<dt>Date</dt> <dd>2013-02-15 16:09:04 +0000 (Fri, 15 Feb 2013)</dd>
</dl>
<h3>Log Message</h3>
<pre>jQuery 1.9.1 and jQuery Migrate 1.1.0.
Remains uncompressed for now, until we work out all 1.9.x issues.
Fixes custom fields.
props ocean90, wonderboymusic. see <a href="http://core.trac.wordpress.org/ticket/22975">#22975</a>.</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkwpincludesjsjqueryjquerymigratejs">trunk/wp-includes/js/jquery/jquery-migrate.js</a></li>
<li><a href="#trunkwpincludesjsjqueryjqueryjs">trunk/wp-includes/js/jquery/jquery.js</a></li>
<li><a href="#trunkwpincludesscriptloaderphp">trunk/wp-includes/script-loader.php</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkwpincludesjsjqueryjquerymigratejs"></a>
<div class="modfile"><h4>Modified: trunk/wp-includes/js/jquery/jquery-migrate.js (23420 => 23421)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-includes/js/jquery/jquery-migrate.js        2013-02-15 14:35:41 UTC (rev 23420)
+++ trunk/wp-includes/js/jquery/jquery-migrate.js        2013-02-15 16:09:04 UTC (rev 23421)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*!
</span><del>- * jQuery Migrate - v1.0.0 - 2013-01-14
</del><ins>+ * jQuery Migrate - v1.1.0 - 2013-01-31
</ins><span class="cx"> * https://github.com/jquery/jquery-migrate
</span><span class="cx"> * Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors; Licensed MIT
</span><span class="cx"> */
</span><span class="lines">@@ -15,6 +15,16 @@
</span><span class="cx"> // Set to true to prevent console output; migrateWarnings still maintained
</span><span class="cx"> // jQuery.migrateMute = false;
</span><span class="cx">
</span><ins>+// Show a message on the console so devs know we're active
+if ( !jQuery.migrateMute && window.console && console.log ) {
+        console.log("JQMIGRATE: Logging is active");
+}
+
+// Set to false to disable traces that appear with warnings
+if ( jQuery.migrateTrace === undefined ) {
+        jQuery.migrateTrace = true;
+}
+
</ins><span class="cx"> // Forget any warnings we've already given; public
</span><span class="cx"> jQuery.migrateReset = function() {
</span><span class="cx">         warnedAbout = {};
</span><span class="lines">@@ -27,6 +37,9 @@
</span><span class="cx">                 jQuery.migrateWarnings.push( msg );
</span><span class="cx">                 if ( window.console && console.warn && !jQuery.migrateMute ) {
</span><span class="cx">                         console.warn( "JQMIGRATE: " + msg );
</span><ins>+                        if ( jQuery.migrateTrace && console.trace ) {
+                                console.trace();
+                        }
</ins><span class="cx">                 }
</span><span class="cx">         }
</span><span class="cx"> }
</span><span class="lines">@@ -66,7 +79,7 @@
</span><span class="cx">
</span><span class="cx">
</span><span class="cx"> var attrFn = {},
</span><del>-        attr = jQuery.attr,
</del><ins>+        oldAttr = jQuery.attr,
</ins><span class="cx">         valueAttrGet = jQuery.attrHooks.value && jQuery.attrHooks.value.get ||
</span><span class="cx">                 function() { return null; },
</span><span class="cx">         valueAttrSet = jQuery.attrHooks.value && jQuery.attrHooks.value.set ||
</span><span class="lines">@@ -83,15 +96,18 @@
</span><span class="cx">         var lowerName = name.toLowerCase(),
</span><span class="cx">                 nType = elem && elem.nodeType;
</span><span class="cx">
</span><del>-        if ( pass ) {
</del><ins>+        // Since pass is used internally, we only warn and shim for new jQuery
+        // versions where there isn't a pass arg in the formal params
+        if ( pass && oldAttr.length < 4 ) {
</ins><span class="cx">                 migrateWarn("jQuery.fn.attr( props, pass ) is deprecated");
</span><span class="cx">                 if ( elem && !rnoAttrNodeType.test( nType ) && jQuery.isFunction( jQuery.fn[ name ] ) ) {
</span><span class="cx">                         return jQuery( elem )[ name ]( value );
</span><span class="cx">                 }
</span><span class="cx">         }
</span><span class="cx">
</span><del>-        // Warn if user tries to set `type` since it breaks on IE 6/7/8
-        if ( name === "type" && value !== undefined && rnoType.test( elem.nodeName ) ) {
</del><ins>+        // Warn if user tries to set `type`, since it breaks on IE 6/7/8; by checking
+        // for disconnected elements we don't warn on $( "<button>", { type: "button" } ).
+        if ( name === "type" && value !== undefined && rnoType.test( elem.nodeName ) && elem.parentNode ) {
</ins><span class="cx">                 migrateWarn("Can't change the 'type' of an input or button in IE 6/7/8");
</span><span class="cx">         }
</span><span class="cx">
</span><span class="lines">@@ -131,11 +147,11 @@
</span><span class="cx">
</span><span class="cx">                 // Warn only for attributes that can remain distinct from their properties post-1.9
</span><span class="cx">                 if ( ruseDefault.test( lowerName ) ) {
</span><del>-                        migrateWarn( "jQuery.fn.attr(" + lowerName + ") may use property instead of attribute" );
</del><ins>+                        migrateWarn( "jQuery.fn.attr('" + lowerName + "') may use property instead of attribute" );
</ins><span class="cx">                 }
</span><span class="cx">         }
</span><span class="cx">
</span><del>-        return attr.call( jQuery, elem, name, value );
</del><ins>+        return oldAttr.call( jQuery, elem, name, value );
</ins><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> // attrHooks: value
</span><span class="lines">@@ -146,7 +162,7 @@
</span><span class="cx">                         return valueAttrGet.apply( this, arguments );
</span><span class="cx">                 }
</span><span class="cx">                 if ( nodeName !== "input" && nodeName !== "option" ) {
</span><del>-                        migrateWarn("property-based jQuery.fn.attr('value') is deprecated");
</del><ins>+                        migrateWarn("jQuery.fn.attr('value') no longer gets properties");
</ins><span class="cx">                 }
</span><span class="cx">                 return name in elem ?
</span><span class="cx">                         elem.value :
</span><span class="lines">@@ -158,7 +174,7 @@
</span><span class="cx">                         return valueAttrSet.apply( this, arguments );
</span><span class="cx">                 }
</span><span class="cx">                 if ( nodeName !== "input" && nodeName !== "option" ) {
</span><del>-                        migrateWarn("property-based jQuery.fn.attr('value', val) is deprecated");
</del><ins>+                        migrateWarn("jQuery.fn.attr('value', val) no longer sets properties");
</ins><span class="cx">                 }
</span><span class="cx">                 // Does not return so that setAttribute is also used
</span><span class="cx">                 elem.value = value;
</span><span class="lines">@@ -168,8 +184,9 @@
</span><span class="cx">
</span><span class="cx"> var matched, browser,
</span><span class="cx">         oldInit = jQuery.fn.init,
</span><del>-        // Note this does NOT include the # XSS fix from 1.7!
-        rquickExpr = /^(?:.*(<[\w\W]+>)[^>]*|#([\w\-]*))$/;
</del><ins>+        oldParseJSON = jQuery.parseJSON,
+        // Note this does NOT include the #9521 XSS fix from 1.7!
+        rquickExpr = /^(?:[^<]*(<[\w\W]+>)[^>]*|#([\w\-]*))$/;
</ins><span class="cx">
</span><span class="cx"> // $(html) "looks like html" rule change
</span><span class="cx"> jQuery.fn.init = function( selector, context, rootjQuery ) {
</span><span class="lines">@@ -195,6 +212,15 @@
</span><span class="cx"> };
</span><span class="cx"> jQuery.fn.init.prototype = jQuery.fn;
</span><span class="cx">
</span><ins>+// Let $.parseJSON(falsy_value) return null
+jQuery.parseJSON = function( json ) {
+        if ( !json && json !== null ) {
+                migrateWarn("jQuery.parseJSON requires a valid JSON string");
+                return null;
+        }
+        return oldParseJSON.apply( this, arguments );
+};
+
</ins><span class="cx"> jQuery.uaMatch = function( ua ) {
</span><span class="cx">         ua = ua.toLowerCase();
</span><span class="cx">
</span><span class="lines">@@ -274,8 +300,7 @@
</span><span class="cx">
</span><span class="cx">
</span><span class="cx"> var rscriptType = /\/(java|ecma)script/i,
</span><del>-        oldSelf = jQuery.fn.andSelf || jQuery.fn.addBack,
-        oldFragment = jQuery.buildFragment;
</del><ins>+        oldSelf = jQuery.fn.andSelf || jQuery.fn.addBack;
</ins><span class="cx">
</span><span class="cx"> jQuery.fn.andSelf = function() {
</span><span class="cx">         migrateWarn("jQuery.fn.andSelf() replaced by jQuery.fn.addBack()");
</span><span class="lines">@@ -332,35 +357,6 @@
</span><span class="cx">         };
</span><span class="cx"> }
</span><span class="cx">
</span><del>-jQuery.buildFragment = function( elems, context, scripts, selection ) {
-        var ret,
-                warning = "jQuery.buildFragment() is deprecated";
-
-        // Set context per 1.8 logic
-        context = context || document;
-        context = !context.nodeType && context[0] || context;
-        context = context.ownerDocument || context;
-
-        try {
-                ret = oldFragment.call( jQuery, elems, context, scripts, selection );
-
-        // jQuery < 1.8 required arrayish context; jQuery 1.9 fails on it
-        } catch( x ) {
-                ret = oldFragment.call( jQuery, elems, context.nodeType ? [ context ] : context[ 0 ], scripts, selection );
-
-                // Success from tweaking context means buildFragment was called by the user
-                migrateWarn( warning );
-        }
-
-        // jQuery < 1.9 returned an object instead of the fragment itself
-        if ( !ret.fragment ) {
-                migrateWarnProp( ret, "fragment", ret, warning );
-                migrateWarnProp( ret, "cacheable", false, warning );
-        }
-
-        return ret;
-};
-
</del><span class="cx"> var eventAdd = jQuery.event.add,
</span><span class="cx">         eventRemove = jQuery.event.remove,
</span><span class="cx">         eventTrigger = jQuery.event.trigger,
</span><span class="lines">@@ -386,7 +382,9 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> // Undocumented jQuery.event.handle was "deprecated" in jQuery 1.7
</span><del>-migrateWarnProp( jQuery.event, "handle", jQuery.event.dispatch, "jQuery.event.handle is undocumented and deprecated" );
</del><ins>+if ( jQuery.event.dispatch ) {
+        migrateWarnProp( jQuery.event, "handle", jQuery.event.dispatch, "jQuery.event.handle is undocumented and deprecated" );
+}
</ins><span class="cx">
</span><span class="cx"> // Support for 'hover' pseudo-event and ajax event warnings
</span><span class="cx"> jQuery.event.add = function( elem, types, handler, data, selector ){
</span><span class="lines">@@ -495,4 +493,4 @@
</span><span class="cx"> );
</span><span class="cx">
</span><span class="cx">
</span><del>-})( jQuery, window );
</del><ins>+})( jQuery, window );
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkwpincludesjsjqueryjqueryjs"></a>
<div class="modfile"><h4>Modified: trunk/wp-includes/js/jquery/jquery.js (23420 => 23421)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-includes/js/jquery/jquery.js        2013-02-15 14:35:41 UTC (rev 23420)
+++ trunk/wp-includes/js/jquery/jquery.js        2013-02-15 16:09:04 UTC (rev 23421)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*!
</span><del>- * jQuery JavaScript Library v1.9.0
</del><ins>+ * jQuery JavaScript Library v1.9.1
</ins><span class="cx"> * http://jquery.com/
</span><span class="cx"> *
</span><span class="cx"> * Includes Sizzle.js
</span><span class="lines">@@ -9,16 +9,25 @@
</span><span class="cx"> * Released under the MIT license
</span><span class="cx"> * http://jquery.org/license
</span><span class="cx"> *
</span><del>- * Date: 2013-1-14
</del><ins>+ * Date: 2013-2-4
</ins><span class="cx"> */
</span><span class="cx"> (function( window, undefined ) {
</span><del>-"use strict";
</del><ins>+
+// Can't do this because several apps including ASP.NET trace
+// the stack via arguments.caller.callee and Firefox dies if
+// you try to trace through "use strict" call chains. (#13335)
+// Support: Firefox 18+
+//"use strict";
</ins><span class="cx"> var
</span><ins>+        // The deferred used on DOM ready
+        readyList,
+
</ins><span class="cx">         // A central reference to the root jQuery(document)
</span><span class="cx">         rootjQuery,
</span><span class="cx">
</span><del>-        // The deferred used on DOM ready
-        readyList,
</del><ins>+        // Support: IE<9
+        // For `typeof node.method` instead of `node.method !== undefined`
+        core_strundefined = typeof undefined,
</ins><span class="cx">
</span><span class="cx">         // Use the correct document accordingly with window argument (sandbox)
</span><span class="cx">         document = window.document,
</span><span class="lines">@@ -36,7 +45,7 @@
</span><span class="cx">         // List of deleted data cache ids, so we can reuse them
</span><span class="cx">         core_deletedIds = [],
</span><span class="cx">
</span><del>-        core_version = "1.9.0",
</del><ins>+        core_version = "1.9.1",
</ins><span class="cx">
</span><span class="cx">         // Save a reference to some core methods
</span><span class="cx">         core_concat = core_deletedIds.concat,
</span><span class="lines">@@ -85,17 +94,25 @@
</span><span class="cx">                 return letter.toUpperCase();
</span><span class="cx">         },
</span><span class="cx">
</span><del>-        // The ready event handler and self cleanup method
-        DOMContentLoaded = function() {
-                if ( document.addEventListener ) {
-                        document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );
</del><ins>+        // The ready event handler
+        completed = function( event ) {
+
+                // readyState === "complete" is good enough for us to call the dom ready in oldIE
+                if ( document.addEventListener || event.type === "load" || document.readyState === "complete" ) {
+                        detach();
</ins><span class="cx">                         jQuery.ready();
</span><del>-                } else if ( document.readyState === "complete" ) {
-                        // we're here because readyState === "complete" in oldIE
-                        // which is good enough for us to call the dom ready!
-                        document.detachEvent( "onreadystatechange", DOMContentLoaded );
-                        jQuery.ready();
</del><span class="cx">                 }
</span><ins>+        },
+        // Clean-up method for dom ready events
+        detach = function() {
+                if ( document.addEventListener ) {
+                        document.removeEventListener( "DOMContentLoaded", completed, false );
+                        window.removeEventListener( "load", completed, false );
+
+                } else {
+                        document.detachEvent( "onreadystatechange", completed );
+                        window.detachEvent( "onload", completed );
+                }
</ins><span class="cx">         };
</span><span class="cx">
</span><span class="cx"> jQuery.fn = jQuery.prototype = {
</span><span class="lines">@@ -299,7 +316,7 @@
</span><span class="cx"> jQuery.fn.init.prototype = jQuery.fn;
</span><span class="cx">
</span><span class="cx"> jQuery.extend = jQuery.fn.extend = function() {
</span><del>-        var options, name, src, copy, copyIsArray, clone,
</del><ins>+        var src, copyIsArray, copy, name, options, clone,
</ins><span class="cx">                 target = arguments[0] || {},
</span><span class="cx">                 i = 1,
</span><span class="cx">                 length = arguments.length,
</span><span class="lines">@@ -781,7 +798,7 @@
</span><span class="cx">         // Bind a function to a context, optionally partially applying any
</span><span class="cx">         // arguments.
</span><span class="cx">         proxy: function( fn, context ) {
</span><del>-                var tmp, args, proxy;
</del><ins>+                var args, proxy, tmp;
</ins><span class="cx">
</span><span class="cx">                 if ( typeof context === "string" ) {
</span><span class="cx">                         tmp = fn[ context ];
</span><span class="lines">@@ -880,18 +897,18 @@
</span><span class="cx">                 // Standards-based browsers support DOMContentLoaded
</span><span class="cx">                 } else if ( document.addEventListener ) {
</span><span class="cx">                         // Use the handy event callback
</span><del>-                        document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );
</del><ins>+                        document.addEventListener( "DOMContentLoaded", completed, false );
</ins><span class="cx">
</span><span class="cx">                         // A fallback to window.onload, that will always work
</span><del>-                        window.addEventListener( "load", jQuery.ready, false );
</del><ins>+                        window.addEventListener( "load", completed, false );
</ins><span class="cx">
</span><span class="cx">                 // If IE event model is used
</span><span class="cx">                 } else {
</span><span class="cx">                         // Ensure firing before onload, maybe late but safe also for iframes
</span><del>-                        document.attachEvent( "onreadystatechange", DOMContentLoaded );
</del><ins>+                        document.attachEvent( "onreadystatechange", completed );
</ins><span class="cx">
</span><span class="cx">                         // A fallback to window.onload, that will always work
</span><del>-                        window.attachEvent( "onload", jQuery.ready );
</del><ins>+                        window.attachEvent( "onload", completed );
</ins><span class="cx">
</span><span class="cx">                         // If IE and not a frame
</span><span class="cx">                         // continually check to see if the document is ready
</span><span class="lines">@@ -913,6 +930,9 @@
</span><span class="cx">                                                         return setTimeout( doScrollCheck, 50 );
</span><span class="cx">                                                 }
</span><span class="cx">
</span><ins>+                                                // detach all dom ready events
+                                                detach();
+
</ins><span class="cx">                                                 // and execute any waiting functions
</span><span class="cx">                                                 jQuery.ready();
</span><span class="cx">                                         }
</span><span class="lines">@@ -989,18 +1009,18 @@
</span><span class="cx">                 ( optionsCache[ options ] || createOptions( options ) ) :
</span><span class="cx">                 jQuery.extend( {}, options );
</span><span class="cx">
</span><del>-        var // Last fire value (for non-forgettable lists)
</del><ins>+        var // Flag to know if list is currently firing
+                firing,
+                // Last fire value (for non-forgettable lists)
</ins><span class="cx">                 memory,
</span><span class="cx">                 // Flag to know if list was already fired
</span><span class="cx">                 fired,
</span><del>-                // Flag to know if list is currently firing
-                firing,
-                // First callback to fire (used internally by add and fireWith)
-                firingStart,
</del><span class="cx">                 // End of the loop when firing
</span><span class="cx">                 firingLength,
</span><span class="cx">                 // Index of currently firing callback (modified by remove if needed)
</span><span class="cx">                 firingIndex,
</span><ins>+                // First callback to fire (used internally by add and fireWith)
+                firingStart,
</ins><span class="cx">                 // Actual callback list
</span><span class="cx">                 list = [],
</span><span class="cx">                 // Stack of fire calls for repeatable lists
</span><span class="lines">@@ -1086,9 +1106,10 @@
</span><span class="cx">                                 }
</span><span class="cx">                                 return this;
</span><span class="cx">                         },
</span><del>-                        // Control if a given callback is in the list
</del><ins>+                        // Check if a given callback is in the list.
+                        // If no argument is given, return whether or not list has callbacks attached.
</ins><span class="cx">                         has: function( fn ) {
</span><del>-                                return jQuery.inArray( fn, list ) > -1;
</del><ins>+                                return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );
</ins><span class="cx">                         },
</span><span class="cx">                         // Remove all callbacks from the list
</span><span class="cx">                         empty: function() {
</span><span class="lines">@@ -1285,7 +1306,9 @@
</span><span class="cx"> });
</span><span class="cx"> jQuery.support = (function() {
</span><span class="cx">
</span><del>-        var support, all, a, select, opt, input, fragment, eventName, isSupported, i,
</del><ins>+        var support, all, a,
+                input, select, fragment,
+                opt, eventName, isSupported, i,
</ins><span class="cx">                 div = document.createElement("div");
</span><span class="cx">
</span><span class="cx">         // Setup
</span><span class="lines">@@ -1486,7 +1509,7 @@
</span><span class="cx">                                 !parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight );
</span><span class="cx">                 }
</span><span class="cx">
</span><del>-                if ( typeof div.style.zoom !== "undefined" ) {
</del><ins>+                if ( typeof div.style.zoom !== core_strundefined ) {
</ins><span class="cx">                         // Support: IE<8
</span><span class="cx">                         // Check if natively block-level elements act like inline-block
</span><span class="cx">                         // elements when setting their display to 'inline' and giving
</span><span class="lines">@@ -1502,9 +1525,12 @@
</span><span class="cx">                         div.firstChild.style.width = "5px";
</span><span class="cx">                         support.shrinkWrapBlocks = ( div.offsetWidth !== 3 );
</span><span class="cx">
</span><del>-                        // Prevent IE 6 from affecting layout for positioned elements #11048
-                        // Prevent IE from shrinking the body in IE 7 mode #12869
-                        body.style.zoom = 1;
</del><ins>+                        if ( support.inlineBlockNeedsLayout ) {
+                                // Prevent IE 6 from affecting layout for positioned elements #11048
+                                // Prevent IE from shrinking the body in IE 7 mode #12869
+                                // Support: IE<8
+                                body.style.zoom = 1;
+                        }
</ins><span class="cx">                 }
</span><span class="cx">
</span><span class="cx">                 body.removeChild( container );
</span><span class="lines">@@ -1521,7 +1547,7 @@
</span><span class="cx">
</span><span class="cx"> var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/,
</span><span class="cx">         rmultiDash = /([A-Z])/g;
</span><del>-        
</del><ins>+
</ins><span class="cx"> function internalData( elem, name, data, pvt /* Internal Use Only */ ){
</span><span class="cx">         if ( !jQuery.acceptData( elem ) ) {
</span><span class="cx">                 return;
</span><span class="lines">@@ -1616,13 +1642,12 @@
</span><span class="cx">         return ret;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-function internalRemoveData( elem, name, pvt /* For internal use only */ ){
</del><ins>+function internalRemoveData( elem, name, pvt ) {
</ins><span class="cx">         if ( !jQuery.acceptData( elem ) ) {
</span><span class="cx">                 return;
</span><span class="cx">         }
</span><span class="cx">
</span><del>-        var thisCache, i, l,
-
</del><ins>+        var i, l, thisCache,
</ins><span class="cx">                 isNode = elem.nodeType,
</span><span class="cx">
</span><span class="cx">                 // See jQuery.data for more information
</span><span class="lines">@@ -1726,24 +1751,29 @@
</span><span class="cx">         },
</span><span class="cx">
</span><span class="cx">         data: function( elem, name, data ) {
</span><del>-                return internalData( elem, name, data, false );
</del><ins>+                return internalData( elem, name, data );
</ins><span class="cx">         },
</span><span class="cx">
</span><span class="cx">         removeData: function( elem, name ) {
</span><del>-                return internalRemoveData( elem, name, false );
</del><ins>+                return internalRemoveData( elem, name );
</ins><span class="cx">         },
</span><span class="cx">
</span><span class="cx">         // For internal use only.
</span><span class="cx">         _data: function( elem, name, data ) {
</span><span class="cx">                 return internalData( elem, name, data, true );
</span><span class="cx">         },
</span><del>-        
</del><ins>+
</ins><span class="cx">         _removeData: function( elem, name ) {
</span><span class="cx">                 return internalRemoveData( elem, name, true );
</span><span class="cx">         },
</span><span class="cx">
</span><span class="cx">         // A method for determining if a DOM node can handle the data expando
</span><span class="cx">         acceptData: function( elem ) {
</span><ins>+                // Do not set data on non-element because it will not be cleared (#8335).
+                if ( elem.nodeType && elem.nodeType !== 1 && elem.nodeType !== 9 ) {
+                        return false;
+                }
+
</ins><span class="cx">                 var noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ];
</span><span class="cx">
</span><span class="cx">                 // nodes accept data unless otherwise specified; rejection can be conditional
</span><span class="lines">@@ -1769,7 +1799,7 @@
</span><span class="cx">                                                 name = attrs[i].name;
</span><span class="cx">
</span><span class="cx">                                                 if ( !name.indexOf( "data-" ) ) {
</span><del>-                                                        name = jQuery.camelCase( name.substring(5) );
</del><ins>+                                                        name = jQuery.camelCase( name.slice(5) );
</ins><span class="cx">
</span><span class="cx">                                                         dataAttr( elem, name, data[ name ] );
</span><span class="cx">                                                 }
</span><span class="lines">@@ -1820,12 +1850,12 @@
</span><span class="cx">                 if ( typeof data === "string" ) {
</span><span class="cx">                         try {
</span><span class="cx">                                 data = data === "true" ? true :
</span><del>-                                data === "false" ? false :
-                                data === "null" ? null :
-                                // Only convert to a number if it doesn't change the string
-                                +data + "" === data ? +data :
-                                rbrace.test( data ) ? jQuery.parseJSON( data ) :
-                                        data;
</del><ins>+                                        data === "false" ? false :
+                                        data === "null" ? null :
+                                        // Only convert to a number if it doesn't change the string
+                                        +data + "" === data ? +data :
+                                        rbrace.test( data ) ? jQuery.parseJSON( data ) :
+                                                data;
</ins><span class="cx">                         } catch( e ) {}
</span><span class="cx">
</span><span class="cx">                         // Make sure we set the data so it isn't changed later
</span><span class="lines">@@ -2141,7 +2171,7 @@
</span><span class="cx">                                 }
</span><span class="cx">
</span><span class="cx">                         // Toggle whole class name
</span><del>-                        } else if ( type === "undefined" || type === "boolean" ) {
</del><ins>+                        } else if ( type === core_strundefined || type === "boolean" ) {
</ins><span class="cx">                                 if ( this.className ) {
</span><span class="cx">                                         // store className if set
</span><span class="cx">                                         jQuery._data( this, "__className__", this.className );
</span><span class="lines">@@ -2170,7 +2200,7 @@
</span><span class="cx">         },
</span><span class="cx">
</span><span class="cx">         val: function( value ) {
</span><del>-                var hooks, ret, isFunction,
</del><ins>+                var ret, hooks, isFunction,
</ins><span class="cx">                         elem = this[0];
</span><span class="cx">
</span><span class="cx">                 if ( !arguments.length ) {
</span><span class="lines">@@ -2294,7 +2324,7 @@
</span><span class="cx">         },
</span><span class="cx">
</span><span class="cx">         attr: function( elem, name, value ) {
</span><del>-                var ret, hooks, notxml,
</del><ins>+                var hooks, notxml, ret,
</ins><span class="cx">                         nType = elem.nodeType;
</span><span class="cx">
</span><span class="cx">                 // don't get/set attributes on text, comment and attribute nodes
</span><span class="lines">@@ -2303,7 +2333,7 @@
</span><span class="cx">                 }
</span><span class="cx">
</span><span class="cx">                 // Fallback to prop when attributes are not supported
</span><del>-                if ( typeof elem.getAttribute === "undefined" ) {
</del><ins>+                if ( typeof elem.getAttribute === core_strundefined ) {
</ins><span class="cx">                         return jQuery.prop( elem, name, value );
</span><span class="cx">                 }
</span><span class="cx">
</span><span class="lines">@@ -2336,7 +2366,7 @@
</span><span class="cx">
</span><span class="cx">                         // In IE9+, Flash objects don't have .getAttribute (#12945)
</span><span class="cx">                         // Support: IE9+
</span><del>-                        if ( typeof elem.getAttribute !== "undefined" ) {
</del><ins>+                        if ( typeof elem.getAttribute !== core_strundefined ) {
</ins><span class="cx">                                 ret = elem.getAttribute( name );
</span><span class="cx">                         }
</span><span class="cx">
</span><span class="lines">@@ -2686,13 +2716,12 @@
</span><span class="cx">         global: {},
</span><span class="cx">
</span><span class="cx">         add: function( elem, types, handler, data, selector ) {
</span><ins>+                var tmp, events, t, handleObjIn,
+                        special, eventHandle, handleObj,
+                        handlers, type, namespaces, origType,
+                        elemData = jQuery._data( elem );
</ins><span class="cx">
</span><del>-                var handleObjIn, eventHandle, tmp,
-                        events, t, handleObj,
-                        special, handlers, type, namespaces, origType,
-                        // Don't attach events to noData or text/comment nodes (but allow plain objects)
-                        elemData = elem.nodeType !== 3 && elem.nodeType !== 8 && jQuery._data( elem );
-
</del><ins>+                // Don't attach events to noData or text/comment nodes (but allow plain objects)
</ins><span class="cx">                 if ( !elemData ) {
</span><span class="cx">                         return;
</span><span class="cx">                 }
</span><span class="lines">@@ -2717,7 +2746,7 @@
</span><span class="cx">                         eventHandle = elemData.handle = function( e ) {
</span><span class="cx">                                 // Discard the second event of a jQuery.event.trigger() and
</span><span class="cx">                                 // when an event is called after a page has unloaded
</span><del>-                                return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ?
</del><ins>+                                return typeof jQuery !== core_strundefined && (!e || jQuery.event.triggered !== e.type) ?
</ins><span class="cx">                                         jQuery.event.dispatch.apply( eventHandle.elem, arguments ) :
</span><span class="cx">                                         undefined;
</span><span class="cx">                         };
</span><span class="lines">@@ -2797,10 +2826,10 @@
</span><span class="cx">
</span><span class="cx">         // Detach an event or set of events from an element
</span><span class="cx">         remove: function( elem, types, handler, selector, mappedTypes ) {
</span><del>-
-                var j, origCount, tmp,
-                        events, t, handleObj,
-                        special, handlers, type, namespaces, origType,
</del><ins>+                var j, handleObj, tmp,
+                        origCount, t, events,
+                        special, handlers, type,
+                        namespaces, origType,
</ins><span class="cx">                         elemData = jQuery.hasData( elem ) && jQuery._data( elem );
</span><span class="cx">
</span><span class="cx">                 if ( !elemData || !(events = elemData.events) ) {
</span><span class="lines">@@ -2870,11 +2899,11 @@
</span><span class="cx">         },
</span><span class="cx">
</span><span class="cx">         trigger: function( event, data, elem, onlyHandlers ) {
</span><del>-
-                var i, cur, tmp, bubbleType, ontype, handle, special,
</del><ins>+                var handle, ontype, cur,
+                        bubbleType, special, tmp, i,
</ins><span class="cx">                         eventPath = [ elem || document ],
</span><del>-                        type = event.type || event,
-                        namespaces = event.namespace ? event.namespace.split(".") : [];
</del><ins>+                        type = core_hasOwn.call( event, "type" ) ? event.type : event,
+                        namespaces = core_hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : [];
</ins><span class="cx">
</span><span class="cx">                 cur = tmp = elem = elem || document;
</span><span class="cx">
</span><span class="lines">@@ -3008,7 +3037,7 @@
</span><span class="cx">                 // Make a writable jQuery.Event from the native event object
</span><span class="cx">                 event = jQuery.event.fix( event );
</span><span class="cx">
</span><del>-                var i, j, ret, matched, handleObj,
</del><ins>+                var i, ret, handleObj, matched, j,
</ins><span class="cx">                         handlerQueue = [],
</span><span class="cx">                         args = core_slice.call( arguments ),
</span><span class="cx">                         handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [],
</span><span class="lines">@@ -3063,7 +3092,7 @@
</span><span class="cx">         },
</span><span class="cx">
</span><span class="cx">         handlers: function( event, handlers ) {
</span><del>-                var i, matches, sel, handleObj,
</del><ins>+                var sel, handleObj, matches, i,
</ins><span class="cx">                         handlerQueue = [],
</span><span class="cx">                         delegateCount = handlers.delegateCount,
</span><span class="cx">                         cur = event.target;
</span><span class="lines">@@ -3075,8 +3104,9 @@
</span><span class="cx">
</span><span class="cx">                         for ( ; cur != this; cur = cur.parentNode || this ) {
</span><span class="cx">
</span><ins>+                                // Don't check non-elements (#13208)
</ins><span class="cx">                                 // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
</span><del>-                                if ( cur.disabled !== true || event.type !== "click" ) {
</del><ins>+                                if ( cur.nodeType === 1 && (cur.disabled !== true || event.type !== "click") ) {
</ins><span class="cx">                                         matches = [];
</span><span class="cx">                                         for ( i = 0; i < delegateCount; i++ ) {
</span><span class="cx">                                                 handleObj = handlers[ i ];
</span><span class="lines">@@ -3114,11 +3144,19 @@
</span><span class="cx">                 }
</span><span class="cx">
</span><span class="cx">                 // Create a writable copy of the event object and normalize some properties
</span><del>-                var i, prop,
</del><ins>+                var i, prop, copy,
+                        type = event.type,
</ins><span class="cx">                         originalEvent = event,
</span><del>-                        fixHook = jQuery.event.fixHooks[ event.type ] || {},
-                        copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
</del><ins>+                        fixHook = this.fixHooks[ type ];
</ins><span class="cx">
</span><ins>+                if ( !fixHook ) {
+                        this.fixHooks[ type ] = fixHook =
+                                rmouseEvent.test( type ) ? this.mouseHooks :
+                                rkeyEvent.test( type ) ? this.keyHooks :
+                                {};
+                }
+                copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
+
</ins><span class="cx">                 event = new jQuery.Event( originalEvent );
</span><span class="cx">
</span><span class="cx">                 i = copy.length;
</span><span class="lines">@@ -3167,7 +3205,7 @@
</span><span class="cx">         mouseHooks: {
</span><span class="cx">                 props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
</span><span class="cx">                 filter: function( event, original ) {
</span><del>-                        var eventDoc, doc, body,
</del><ins>+                        var body, eventDoc, doc,
</ins><span class="cx">                                 button = original.button,
</span><span class="cx">                                 fromElement = original.fromElement;
</span><span class="cx">
</span><span class="lines">@@ -3283,7 +3321,7 @@
</span><span class="cx">
</span><span class="cx">                         // #8545, #7054, preventing memory leaks for custom events in IE6-8
</span><span class="cx">                         // detachEvent needed property on element, by name of that event, to properly expose it to GC
</span><del>-                        if ( typeof elem[ name ] === "undefined" ) {
</del><ins>+                        if ( typeof elem[ name ] === core_strundefined ) {
</ins><span class="cx">                                 elem[ name ] = null;
</span><span class="cx">                         }
</span><span class="cx">
</span><span class="lines">@@ -3532,7 +3570,7 @@
</span><span class="cx"> jQuery.fn.extend({
</span><span class="cx">
</span><span class="cx">         on: function( types, selector, data, fn, /*INTERNAL*/ one ) {
</span><del>-                var origFn, type;
</del><ins>+                var type, origFn;
</ins><span class="cx">
</span><span class="cx">                 // Types can be a map of types/handlers
</span><span class="cx">                 if ( typeof types === "object" ) {
</span><span class="lines">@@ -3644,32 +3682,8 @@
</span><span class="cx">                 if ( elem ) {
</span><span class="cx">                         return jQuery.event.trigger( type, data, elem, true );
</span><span class="cx">                 }
</span><del>-        },
-
-        hover: function( fnOver, fnOut ) {
-                return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
</del><span class="cx">         }
</span><span class="cx"> });
</span><del>-
-jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
-        "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
-        "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {
-
-        // Handle event binding
-        jQuery.fn[ name ] = function( data, fn ) {
-                return arguments.length > 0 ?
-                        this.on( name, null, data, fn ) :
-                        this.trigger( name );
-        };
-
-        if ( rkeyEvent.test( name ) ) {
-                jQuery.event.fixHooks[ name ] = jQuery.event.keyHooks;
-        }
-
-        if ( rmouseEvent.test( name ) ) {
-                jQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks;
-        }
-});
</del><span class="cx"> /*!
</span><span class="cx"> * Sizzle CSS Selector Engine
</span><span class="cx"> * Copyright 2012 jQuery Foundation and other contributors
</span><span class="lines">@@ -3781,7 +3795,7 @@
</span><span class="cx">
</span><span class="cx">         rsibling = /[\x20\t\r\n\f]*[+~]/,
</span><span class="cx">
</span><del>-        rnative = /\{\s*\[native code\]\s*\}/,
</del><ins>+        rnative = /^[^{]+\{\s*\[native code/,
</ins><span class="cx">
</span><span class="cx">         // Easily-parseable/retrievable ID or TAG or CLASS selectors
</span><span class="cx">         rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
</span><span class="lines">@@ -3808,12 +3822,12 @@
</span><span class="cx">
</span><span class="cx"> // Use a stripped-down slice if we can't use a native one
</span><span class="cx"> try {
</span><del>-        slice.call( docElem.childNodes, 0 )[0].nodeType;
</del><ins>+        slice.call( preferredDoc.documentElement.childNodes, 0 )[0].nodeType;
</ins><span class="cx"> } catch ( e ) {
</span><span class="cx">         slice = function( i ) {
</span><span class="cx">                 var elem,
</span><span class="cx">                         results = [];
</span><del>-                for ( ; (elem = this[i]); i++ ) {
</del><ins>+                while ( (elem = this[i++]) ) {
</ins><span class="cx">                         results.push( elem );
</span><span class="cx">                 }
</span><span class="cx">                 return results;
</span><span class="lines">@@ -4132,7 +4146,7 @@
</span><span class="cx">
</span><span class="cx">                         // Filter out possible comments
</span><span class="cx">                         if ( tag === "*" ) {
</span><del>-                                for ( ; (elem = results[i]); i++ ) {
</del><ins>+                                while ( (elem = results[i++]) ) {
</ins><span class="cx">                                         if ( elem.nodeType === 1 ) {
</span><span class="cx">                                                 tmp.push( elem );
</span><span class="cx">                                         }
</span><span class="lines">@@ -4290,15 +4304,11 @@
</span><span class="cx">                         ap = [ a ],
</span><span class="cx">                         bp = [ b ];
</span><span class="cx">
</span><del>-                // The nodes are identical, we can exit early
</del><ins>+                // Exit early if the nodes are identical
</ins><span class="cx">                 if ( a === b ) {
</span><span class="cx">                         hasDuplicate = true;
</span><span class="cx">                         return 0;
</span><span class="cx">
</span><del>-                // Fallback to using sourceIndex (in IE) if it's available on both nodes
-                } else if ( a.sourceIndex && b.sourceIndex ) {
-                        return ( ~b.sourceIndex || MAX_NEGATIVE ) - ( contains( preferredDoc, a ) && ~a.sourceIndex || MAX_NEGATIVE );
-
</del><span class="cx">                 // Parentless nodes are either documents or disconnected
</span><span class="cx">                 } else if ( !aup || !bup ) {
</span><span class="cx">                         return a === doc ? -1 :
</span><span class="lines">@@ -4437,11 +4447,20 @@
</span><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> function siblingCheck( a, b ) {
</span><del>-        var cur = a && b && a.nextSibling;
</del><ins>+        var cur = b && a,
+                diff = cur && ( ~b.sourceIndex || MAX_NEGATIVE ) - ( ~a.sourceIndex || MAX_NEGATIVE );
</ins><span class="cx">
</span><del>-        for ( ; cur; cur = cur.nextSibling ) {
-                if ( cur === b ) {
-                        return -1;
</del><ins>+        // Use IE sourceIndex if available on both nodes
+        if ( diff ) {
+                return diff;
+        }
+
+        // Check if b follows a
+        if ( cur ) {
+                while ( (cur = cur.nextSibling) ) {
+                        if ( cur === b ) {
+                                return -1;
+                        }
</ins><span class="cx">                 }
</span><span class="cx">         }
</span><span class="cx">
</span><span class="lines">@@ -4651,9 +4670,9 @@
</span><span class="cx">                                         operator === "!=" ? result !== check :
</span><span class="cx">                                         operator === "^=" ? check && result.indexOf( check ) === 0 :
</span><span class="cx">                                         operator === "*=" ? check && result.indexOf( check ) > -1 :
</span><del>-                                        operator === "$=" ? check && result.substr( result.length - check.length ) === check :
</del><ins>+                                        operator === "$=" ? check && result.slice( -check.length ) === check :
</ins><span class="cx">                                         operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 :
</span><del>-                                        operator === "|=" ? result === check || result.substr( 0, check.length + 1 ) === check + "-" :
</del><ins>+                                        operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
</ins><span class="cx">                                         false;
</span><span class="cx">                         };
</span><span class="cx">                 },
</span><span class="lines">@@ -5071,7 +5090,7 @@
</span><span class="cx">
</span><span class="cx"> function addCombinator( matcher, combinator, base ) {
</span><span class="cx">         var dir = combinator.dir,
</span><del>-                checkNonElements = base && combinator.dir === "parentNode",
</del><ins>+                checkNonElements = base && dir === "parentNode",
</ins><span class="cx">                 doneName = done++;
</span><span class="cx">
</span><span class="cx">         return combinator.first ?
</span><span class="lines">@@ -5314,8 +5333,8 @@
</span><span class="cx">                                 contextBackup = outermostContext,
</span><span class="cx">                                 // We must always have either seed elements or context
</span><span class="cx">                                 elems = seed || byElement && Expr.find["TAG"]( "*", expandContext && context.parentNode || context ),
</span><del>-                                // Nested matchers should use non-integer dirruns
-                                dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.E);
</del><ins>+                                // Use integer dirruns iff this is the outermost matcher
+                                dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1);
</ins><span class="cx">
</span><span class="cx">                         if ( outermost ) {
</span><span class="cx">                                 outermostContext = context !== document && context;
</span><span class="lines">@@ -5323,9 +5342,11 @@
</span><span class="cx">                         }
</span><span class="cx">
</span><span class="cx">                         // Add elements passing elementMatchers directly to results
</span><ins>+                        // Keep `i` a string if there are no elements so `matchedCount` will be "00" below
</ins><span class="cx">                         for ( ; (elem = elems[i]) != null; i++ ) {
</span><span class="cx">                                 if ( byElement && elem ) {
</span><del>-                                        for ( j = 0; (matcher = elementMatchers[j]); j++ ) {
</del><ins>+                                        j = 0;
+                                        while ( (matcher = elementMatchers[j++]) ) {
</ins><span class="cx">                                                 if ( matcher( elem, context, xml ) ) {
</span><span class="cx">                                                         results.push( elem );
</span><span class="cx">                                                         break;
</span><span class="lines">@@ -5352,10 +5373,10 @@
</span><span class="cx">                         }
</span><span class="cx">
</span><span class="cx">                         // Apply set filters to unmatched elements
</span><del>-                        // `i` starts as a string, so matchedCount would equal "00" if there are no elements
</del><span class="cx">                         matchedCount += i;
</span><span class="cx">                         if ( bySet && i !== matchedCount ) {
</span><del>-                                for ( j = 0; (matcher = setMatchers[j]); j++ ) {
</del><ins>+                                j = 0;
+                                while ( (matcher = setMatchers[j++]) ) {
</ins><span class="cx">                                         matcher( unmatched, setMatched, context, xml );
</span><span class="cx">                                 }
</span><span class="cx">
</span><span class="lines">@@ -5457,7 +5478,8 @@
</span><span class="cx">                         }
</span><span class="cx">
</span><span class="cx">                         // Fetch a seed set for right-to-left matching
</span><del>-                        for ( i = matchExpr["needsContext"].test( selector ) ? -1 : tokens.length - 1; i >= 0; i-- ) {
</del><ins>+                        i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
+                        while ( i-- ) {
</ins><span class="cx">                                 token = tokens[i];
</span><span class="cx">
</span><span class="cx">                                 // Abort if we hit a combinator
</span><span class="lines">@@ -5535,12 +5557,13 @@
</span><span class="cx">
</span><span class="cx"> jQuery.fn.extend({
</span><span class="cx">         find: function( selector ) {
</span><del>-                var i, ret, self;
</del><ins>+                var i, ret, self,
+                        len = this.length;
</ins><span class="cx">
</span><span class="cx">                 if ( typeof selector !== "string" ) {
</span><span class="cx">                         self = this;
</span><span class="cx">                         return this.pushStack( jQuery( selector ).filter(function() {
</span><del>-                                for ( i = 0; i < self.length; i++ ) {
</del><ins>+                                for ( i = 0; i < len; i++ ) {
</ins><span class="cx">                                         if ( jQuery.contains( self[ i ], this ) ) {
</span><span class="cx">                                                 return true;
</span><span class="cx">                                         }
</span><span class="lines">@@ -5549,12 +5572,12 @@
</span><span class="cx">                 }
</span><span class="cx">
</span><span class="cx">                 ret = [];
</span><del>-                for ( i = 0; i < this.length; i++ ) {
</del><ins>+                for ( i = 0; i < len; i++ ) {
</ins><span class="cx">                         jQuery.find( selector, this[ i ], ret );
</span><span class="cx">                 }
</span><span class="cx">
</span><span class="cx">                 // Needed because $( selector, context ) becomes $( context ).find( selector )
</span><del>-                ret = this.pushStack( jQuery.unique( ret ) );
</del><ins>+                ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );
</ins><span class="cx">                 ret.selector = ( this.selector ? this.selector + " " : "" ) + selector;
</span><span class="cx">                 return ret;
</span><span class="cx">         },
</span><span class="lines">@@ -6066,15 +6089,9 @@
</span><span class="cx">                         var next = this.nextSibling,
</span><span class="cx">                                 parent = this.parentNode;
</span><span class="cx">
</span><del>-                        if ( parent && this.nodeType === 1 || this.nodeType === 11 ) {
-
</del><ins>+                        if ( parent ) {
</ins><span class="cx">                                 jQuery( this ).remove();
</span><del>-
-                                if ( next ) {
-                                        next.parentNode.insertBefore( elem, next );
-                                } else {
-                                        parent.appendChild( elem );
-                                }
</del><ins>+                                parent.insertBefore( elem, next );
</ins><span class="cx">                         }
</span><span class="cx">                 });
</span><span class="cx">         },
</span><span class="lines">@@ -6088,7 +6105,8 @@
</span><span class="cx">                 // Flatten any nested arrays
</span><span class="cx">                 args = core_concat.apply( [], args );
</span><span class="cx">
</span><del>-                var fragment, first, scripts, hasScripts, node, doc,
</del><ins>+                var first, node, hasScripts,
+                        scripts, doc, fragment,
</ins><span class="cx">                         i = 0,
</span><span class="cx">                         l = this.length,
</span><span class="cx">                         set = this,
</span><span class="lines">@@ -6239,7 +6257,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> function fixCloneNodeIssues( src, dest ) {
</span><del>-        var nodeName, data, e;
</del><ins>+        var nodeName, e, data;
</ins><span class="cx">
</span><span class="cx">         // We do not need to do anything for non-Elements
</span><span class="cx">         if ( dest.nodeType !== 1 ) {
</span><span class="lines">@@ -6334,8 +6352,8 @@
</span><span class="cx"> function getAll( context, tag ) {
</span><span class="cx">         var elems, elem,
</span><span class="cx">                 i = 0,
</span><del>-                found = typeof context.getElementsByTagName !== "undefined" ? context.getElementsByTagName( tag || "*" ) :
-                        typeof context.querySelectorAll !== "undefined" ? context.querySelectorAll( tag || "*" ) :
</del><ins>+                found = typeof context.getElementsByTagName !== core_strundefined ? context.getElementsByTagName( tag || "*" ) :
+                        typeof context.querySelectorAll !== core_strundefined ? context.querySelectorAll( tag || "*" ) :
</ins><span class="cx">                         undefined;
</span><span class="cx">
</span><span class="cx">         if ( !found ) {
</span><span class="lines">@@ -6362,7 +6380,7 @@
</span><span class="cx">
</span><span class="cx"> jQuery.extend({
</span><span class="cx">         clone: function( elem, dataAndEvents, deepDataAndEvents ) {
</span><del>-                var destElements, srcElements, node, i, clone,
</del><ins>+                var destElements, node, clone, i, srcElements,
</ins><span class="cx">                         inPage = jQuery.contains( elem.ownerDocument, elem );
</span><span class="cx">
</span><span class="cx">                 if ( jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) {
</span><span class="lines">@@ -6417,7 +6435,8 @@
</span><span class="cx">         },
</span><span class="cx">
</span><span class="cx">         buildFragment: function( elems, context, scripts, selection ) {
</span><del>-                var contains, elem, tag, tmp, wrap, tbody, j,
</del><ins>+                var j, elem, contains,
+                        tmp, tag, tbody, wrap,
</ins><span class="cx">                         l = elems.length,
</span><span class="cx">
</span><span class="cx">                         // Ensure a safe fragment
</span><span class="lines">@@ -6543,7 +6562,7 @@
</span><span class="cx">         },
</span><span class="cx">
</span><span class="cx">         cleanData: function( elems, /* internal */ acceptData ) {
</span><del>-                var data, id, elem, type,
</del><ins>+                var elem, type, id, data,
</ins><span class="cx">                         i = 0,
</span><span class="cx">                         internalKey = jQuery.expando,
</span><span class="cx">                         cache = jQuery.cache,
</span><span class="lines">@@ -6581,7 +6600,7 @@
</span><span class="cx">                                                 if ( deleteExpando ) {
</span><span class="cx">                                                         delete elem[ internalKey ];
</span><span class="cx">
</span><del>-                                                } else if ( typeof elem.removeAttribute !== "undefined" ) {
</del><ins>+                                                } else if ( typeof elem.removeAttribute !== core_strundefined ) {
</ins><span class="cx">                                                         elem.removeAttribute( internalKey );
</span><span class="cx">
</span><span class="cx">                                                 } else {
</span><span class="lines">@@ -6595,7 +6614,7 @@
</span><span class="cx">                 }
</span><span class="cx">         }
</span><span class="cx"> });
</span><del>-var curCSS, getStyles, iframe,
</del><ins>+var iframe, getStyles, curCSS,
</ins><span class="cx">         ralpha = /alpha\([^)]*\)/i,
</span><span class="cx">         ropacity = /opacity\s*=\s*([^)]*)/,
</span><span class="cx">         rposition = /^(top|right|bottom|left)$/,
</span><span class="lines">@@ -6648,7 +6667,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> function showHide( elements, show ) {
</span><del>-        var elem,
</del><ins>+        var display, elem, hidden,
</ins><span class="cx">                 values = [],
</span><span class="cx">                 index = 0,
</span><span class="cx">                 length = elements.length;
</span><span class="lines">@@ -6658,11 +6677,13 @@
</span><span class="cx">                 if ( !elem.style ) {
</span><span class="cx">                         continue;
</span><span class="cx">                 }
</span><ins>+
</ins><span class="cx">                 values[ index ] = jQuery._data( elem, "olddisplay" );
</span><ins>+                display = elem.style.display;
</ins><span class="cx">                 if ( show ) {
</span><span class="cx">                         // Reset the inline display of this element to learn if it is
</span><span class="cx">                         // being hidden by cascaded rules or not
</span><del>-                        if ( !values[ index ] && elem.style.display === "none" ) {
</del><ins>+                        if ( !values[ index ] && display === "none" ) {
</ins><span class="cx">                                 elem.style.display = "";
</span><span class="cx">                         }
</span><span class="cx">
</span><span class="lines">@@ -6672,8 +6693,15 @@
</span><span class="cx">                         if ( elem.style.display === "" && isHidden( elem ) ) {
</span><span class="cx">                                 values[ index ] = jQuery._data( elem, "olddisplay", css_defaultDisplay(elem.nodeName) );
</span><span class="cx">                         }
</span><del>-                } else if ( !values[ index ] && !isHidden( elem ) ) {
-                        jQuery._data( elem, "olddisplay", jQuery.css( elem, "display" ) );
</del><ins>+                } else {
+
+                        if ( !values[ index ] ) {
+                                hidden = isHidden( elem );
+
+                                if ( display && display !== "none" || !hidden ) {
+                                        jQuery._data( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) );
+                                }
+                        }
</ins><span class="cx">                 }
</span><span class="cx">         }
</span><span class="cx">
</span><span class="lines">@@ -6695,7 +6723,7 @@
</span><span class="cx"> jQuery.fn.extend({
</span><span class="cx">         css: function( name, value ) {
</span><span class="cx">                 return jQuery.access( this, function( elem, name, value ) {
</span><del>-                        var styles, len,
</del><ins>+                        var len, styles,
</ins><span class="cx">                                 map = {},
</span><span class="cx">                                 i = 0;
</span><span class="cx">
</span><span class="lines">@@ -6836,7 +6864,7 @@
</span><span class="cx">         },
</span><span class="cx">
</span><span class="cx">         css: function( elem, name, extra, styles ) {
</span><del>-                var val, num, hooks,
</del><ins>+                var num, val, hooks,
</ins><span class="cx">                         origName = jQuery.camelCase( name );
</span><span class="cx">
</span><span class="cx">                 // Make sure that we're working with the right name
</span><span class="lines">@@ -6862,7 +6890,7 @@
</span><span class="cx">                 }
</span><span class="cx">
</span><span class="cx">                 // Return, converting to number if forced or a qualifier was provided and val looks numeric
</span><del>-                if ( extra ) {
</del><ins>+                if ( extra === "" || extra ) {
</ins><span class="cx">                         num = parseFloat( val );
</span><span class="cx">                         return extra === true || jQuery.isNumeric( num ) ? num || 0 : val;
</span><span class="cx">                 }
</span><span class="lines">@@ -7227,7 +7255,10 @@
</span><span class="cx">
</span><span class="cx"> if ( jQuery.expr && jQuery.expr.filters ) {
</span><span class="cx">         jQuery.expr.filters.hidden = function( elem ) {
</span><del>-                return ( elem.offsetWidth === 0 && elem.offsetHeight === 0 ) || (!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || jQuery.css( elem, "display" )) === "none");
</del><ins>+                // Support: Opera <= 12.12
+                // Opera reports offsetWidths and offsetHeights less than zero on some elements
+                return elem.offsetWidth <= 0 && elem.offsetHeight <= 0 ||
+                        (!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || jQuery.css( elem, "display" )) === "none");
</ins><span class="cx">         };
</span><span class="cx">
</span><span class="cx">         jQuery.expr.filters.visible = function( elem ) {
</span><span class="lines">@@ -7265,7 +7296,7 @@
</span><span class="cx"> var r20 = /%20/g,
</span><span class="cx">         rbracket = /\[\]$/,
</span><span class="cx">         rCRLF = /\r?\n/g,
</span><del>-        rsubmitterTypes = /^(?:submit|button|image|reset)$/i,
</del><ins>+        rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
</ins><span class="cx">         rsubmittable = /^(?:input|select|textarea|keygen)/i;
</span><span class="cx">
</span><span class="cx"> jQuery.fn.extend({
</span><span class="lines">@@ -7361,11 +7392,25 @@
</span><span class="cx">                 add( prefix, obj );
</span><span class="cx">         }
</span><span class="cx"> }
</span><ins>+jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
+        "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
+        "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {
+
+        // Handle event binding
+        jQuery.fn[ name ] = function( data, fn ) {
+                return arguments.length > 0 ?
+                        this.on( name, null, data, fn ) :
+                        this.trigger( name );
+        };
+});
+
+jQuery.fn.hover = function( fnOver, fnOut ) {
+        return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
+};
</ins><span class="cx"> var
</span><span class="cx">         // Document location
</span><span class="cx">         ajaxLocParts,
</span><span class="cx">         ajaxLocation,
</span><del>-        
</del><span class="cx">         ajax_nonce = jQuery.now(),
</span><span class="cx">
</span><span class="cx">         ajax_rquery = /\?/,
</span><span class="lines">@@ -7478,7 +7523,7 @@
</span><span class="cx"> // that takes "flat" options (not to be deep extended)
</span><span class="cx"> // Fixes #9887
</span><span class="cx"> function ajaxExtend( target, src ) {
</span><del>-        var key, deep,
</del><ins>+        var deep, key,
</ins><span class="cx">                 flatOptions = jQuery.ajaxSettings.flatOptions || {};
</span><span class="cx">
</span><span class="cx">         for ( key in src ) {
</span><span class="lines">@@ -7498,7 +7543,7 @@
</span><span class="cx">                 return _load.apply( this, arguments );
</span><span class="cx">         }
</span><span class="cx">
</span><del>-        var selector, type, response,
</del><ins>+        var selector, response, type,
</ins><span class="cx">                 self = this,
</span><span class="cx">                 off = url.indexOf(" ");
</span><span class="cx">
</span><span class="lines">@@ -7679,20 +7724,23 @@
</span><span class="cx">                 // Force options to be an object
</span><span class="cx">                 options = options || {};
</span><span class="cx">
</span><del>-                var transport,
</del><ins>+                var // Cross-domain detection vars
+                        parts,
+                        // Loop variable
+                        i,
</ins><span class="cx">                         // URL without anti-cache param
</span><span class="cx">                         cacheURL,
</span><del>-                        // Response headers
</del><ins>+                        // Response headers as string
</ins><span class="cx">                         responseHeadersString,
</span><del>-                        responseHeaders,
</del><span class="cx">                         // timeout handle
</span><span class="cx">                         timeoutTimer,
</span><del>-                        // Cross-domain detection vars
-                        parts,
</del><ins>+
</ins><span class="cx">                         // To know if global events are to be dispatched
</span><span class="cx">                         fireGlobals,
</span><del>-                        // Loop variable
-                        i,
</del><ins>+
+                        transport,
+                        // Response headers
+                        responseHeaders,
</ins><span class="cx">                         // Create the final options object
</span><span class="cx">                         s = jQuery.ajaxSetup( {}, options ),
</span><span class="cx">                         // Callbacks context
</span><span class="lines">@@ -7987,12 +8035,17 @@
</span><span class="cx">                                         }
</span><span class="cx">                                 }
</span><span class="cx">
</span><del>-                                // If not modified
-                                if ( status === 304 ) {
</del><ins>+                                // if no content
+                                if ( status === 204 ) {
</ins><span class="cx">                                         isSuccess = true;
</span><ins>+                                        statusText = "nocontent";
+
+                                // if not modified
+                                } else if ( status === 304 ) {
+                                        isSuccess = true;
</ins><span class="cx">                                         statusText = "notmodified";
</span><span class="cx">
</span><del>-                                // If we have data
</del><ins>+                                // If we have data, let's convert it
</ins><span class="cx">                                 } else {
</span><span class="cx">                                         isSuccess = ajaxConvert( s, response );
</span><span class="cx">                                         statusText = isSuccess.state;
</span><span class="lines">@@ -8062,8 +8115,7 @@
</span><span class="cx"> * - returns the corresponding response
</span><span class="cx"> */
</span><span class="cx"> function ajaxHandleResponses( s, jqXHR, responses ) {
</span><del>-
-        var ct, type, finalDataType, firstDataType,
</del><ins>+        var firstDataType, ct, finalDataType, type,
</ins><span class="cx">                 contents = s.contents,
</span><span class="cx">                 dataTypes = s.dataTypes,
</span><span class="cx">                 responseFields = s.responseFields;
</span><span class="lines">@@ -8124,8 +8176,7 @@
</span><span class="cx">
</span><span class="cx"> // Chain conversions given the request and the original response
</span><span class="cx"> function ajaxConvert( s, response ) {
</span><del>-
-        var conv, conv2, current, tmp,
</del><ins>+        var conv2, current, conv, tmp,
</ins><span class="cx">                 converters = {},
</span><span class="cx">                 i = 0,
</span><span class="cx">                 // Work with a copy of dataTypes in case we need to modify it for conversion
</span><span class="lines">@@ -8476,13 +8527,8 @@
</span><span class="cx">
</span><span class="cx">                                         // Listener
</span><span class="cx">                                         callback = function( _, isAbort ) {
</span><ins>+                                                var status, responseHeaders, statusText, responses;
</ins><span class="cx">
</span><del>-                                                var status,
-                                                        statusText,
-                                                        responseHeaders,
-                                                        responses,
-                                                        xml;
-
</del><span class="cx">                                                 // Firefox throws exceptions when accessing properties
</span><span class="cx">                                                 // of an xhr when a network error occurred
</span><span class="cx">                                                 // http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)
</span><span class="lines">@@ -8511,14 +8557,8 @@
</span><span class="cx">                                                                 } else {
</span><span class="cx">                                                                         responses = {};
</span><span class="cx">                                                                         status = xhr.status;
</span><del>-                                                                        xml = xhr.responseXML;
</del><span class="cx">                                                                         responseHeaders = xhr.getAllResponseHeaders();
</span><span class="cx">
</span><del>-                                                                        // Construct response list
-                                                                        if ( xml && xml.documentElement /* #4958 */ ) {
-                                                                                responses.xml = xml;
-                                                                        }
-
</del><span class="cx">                                                                         // When requesting binary data, IE6-9 will throw an exception
</span><span class="cx">                                                                         // on any attempt to access responseText (#11426)
</span><span class="cx">                                                                         if ( typeof xhr.responseText === "string" ) {
</span><span class="lines">@@ -8768,7 +8808,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> function propFilter( props, specialEasing ) {
</span><del>-        var index, name, easing, value, hooks;
</del><ins>+        var value, name, index, easing, hooks;
</ins><span class="cx">
</span><span class="cx">         // camelCase, specialEasing and expand cssHook pass
</span><span class="cx">         for ( index in props ) {
</span><span class="lines">@@ -8836,7 +8876,9 @@
</span><span class="cx">
</span><span class="cx"> function defaultPrefilter( elem, props, opts ) {
</span><span class="cx">         /*jshint validthis:true */
</span><del>-        var index, prop, value, length, dataShow, toggle, tween, hooks, oldfire,
</del><ins>+        var prop, index, length,
+                value, dataShow, toggle,
+                tween, hooks, oldfire,
</ins><span class="cx">                 anim = this,
</span><span class="cx">                 style = elem.style,
</span><span class="cx">                 orig = {},
</span><span class="lines">@@ -8896,7 +8938,7 @@
</span><span class="cx">         if ( opts.overflow ) {
</span><span class="cx">                 style.overflow = "hidden";
</span><span class="cx">                 if ( !jQuery.support.shrinkWrapBlocks ) {
</span><del>-                        anim.done(function() {
</del><ins>+                        anim.always(function() {
</ins><span class="cx">                                 style.overflow = opts.overflow[ 0 ];
</span><span class="cx">                                 style.overflowX = opts.overflow[ 1 ];
</span><span class="cx">                                 style.overflowY = opts.overflow[ 2 ];
</span><span class="lines">@@ -9020,11 +9062,11 @@
</span><span class="cx">                                 return tween.elem[ tween.prop ];
</span><span class="cx">                         }
</span><span class="cx">
</span><del>-                        // passing a non empty string as a 3rd parameter to .css will automatically
</del><ins>+                        // passing an empty string as a 3rd parameter to .css will automatically
</ins><span class="cx">                         // attempt a parseFloat and fallback to a string if the parse fails
</span><span class="cx">                         // so, simple values such as "10px" are parsed to Float.
</span><span class="cx">                         // complex values such as "rotate(1rad)" are returned as is.
</span><del>-                        result = jQuery.css( tween.elem, tween.prop, "auto" );
</del><ins>+                        result = jQuery.css( tween.elem, tween.prop, "" );
</ins><span class="cx">                         // Empty strings, null, undefined and "auto" are converted to 0.
</span><span class="cx">                         return !result || result === "auto" ? 0 : result;
</span><span class="cx">                 },
</span><span class="lines">@@ -9346,7 +9388,7 @@
</span><span class="cx">
</span><span class="cx">         // If we don't have gBCR, just use 0,0 rather than error
</span><span class="cx">         // BlackBerry 5, iOS 3 (original iPhone)
</span><del>-        if ( typeof elem.getBoundingClientRect !== "undefined" ) {
</del><ins>+        if ( typeof elem.getBoundingClientRect !== core_strundefined ) {
</ins><span class="cx">                 box = elem.getBoundingClientRect();
</span><span class="cx">         }
</span><span class="cx">         win = getWindow( doc );
</span></span></pre></div>
<a id="trunkwpincludesscriptloaderphp"></a>
<div class="modfile"><h4>Modified: trunk/wp-includes/script-loader.php (23420 => 23421)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-includes/script-loader.php        2013-02-15 14:35:41 UTC (rev 23420)
+++ trunk/wp-includes/script-loader.php        2013-02-15 16:09:04 UTC (rev 23421)
</span><span class="lines">@@ -131,8 +131,8 @@
</span><span class="cx">
</span><span class="cx">         // jQuery
</span><span class="cx">         $scripts->add( 'jquery', false, array( 'jquery-core', 'jquery-migrate' ) );
</span><del>-        $scripts->add( 'jquery-core', '/wp-includes/js/jquery/jquery.js', array(), '1.9.0' );
-        $scripts->add( 'jquery-migrate', '/wp-includes/js/jquery/jquery-migrate.js', array(), '1.0.0' );
</del><ins>+        $scripts->add( 'jquery-core', '/wp-includes/js/jquery/jquery.js', array(), '1.9.1' );
+        $scripts->add( 'jquery-migrate', '/wp-includes/js/jquery/jquery-migrate.js', array(), '1.1.0' );
</ins><span class="cx">
</span><span class="cx">         // full jQuery UI
</span><span class="cx">         $scripts->add( 'jquery-ui-core', '/wp-includes/js/jquery/ui/jquery.ui.core.min.js', array('jquery'), '1.9.2', 1 );
</span></span></pre>
</div>
</div>
</body>
</html>