You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by jk...@apache.org on 2014/05/05 09:46:29 UTC

[1/3] update jQuery to 1.11.1, update RequireJS to 2.1.11

Repository: tapestry-5
Updated Branches:
  refs/heads/master aae91f0b8 -> 5b12cea9f


http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/5b12cea9/tapestry-core/src/main/resources/META-INF/assets/tapestry5/require.js
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/resources/META-INF/assets/tapestry5/require.js b/tapestry-core/src/main/resources/META-INF/assets/tapestry5/require.js
index a48922b..24b061e 100644
--- a/tapestry-core/src/main/resources/META-INF/assets/tapestry5/require.js
+++ b/tapestry-core/src/main/resources/META-INF/assets/tapestry5/require.js
@@ -1,5 +1,5 @@
 /** vim: et:ts=4:sw=4:sts=4
- * @license RequireJS 2.1.10 Copyright (c) 2010-2014, The Dojo Foundation All Rights Reserved.
+ * @license RequireJS 2.1.11 Copyright (c) 2010-2014, The Dojo Foundation All Rights Reserved.
  * Available via the MIT or new BSD license.
  * see: http://github.com/jrburke/requirejs for details
  */
@@ -11,32 +11,32 @@
 var requirejs, require, define;
 (function (global) {
     var req, s, head, baseElement, dataMain, src,
-            interactiveScript, currentlyAddingScript, mainScript, subPath,
-            version = '2.1.10',
-            commentRegExp = /(\/\*([\s\S]*?)\*\/|([^:]|^)\/\/(.*)$)/mg,
-            cjsRequireRegExp = /[^.]\s*require\s*\(\s*["']([^'"\s]+)["']\s*\)/g,
-            jsSuffixRegExp = /\.js$/,
-            currDirRegExp = /^\.\//,
-            op = Object.prototype,
-            ostring = op.toString,
-            hasOwn = op.hasOwnProperty,
-            ap = Array.prototype,
-            apsp = ap.splice,
-            isBrowser = !!(typeof window !== 'undefined' && typeof navigator !== 'undefined' && window.document),
-            isWebWorker = !isBrowser && typeof importScripts !== 'undefined',
-    //PS3 indicates loaded and complete, but need to wait for complete
-    //specifically. Sequence is 'loading', 'loaded', execution,
-    // then 'complete'. The UA check is unfortunate, but not sure how
-    //to feature test w/o causing perf issues.
-            readyRegExp = isBrowser && navigator.platform === 'PLAYSTATION 3' ?
-                    /^complete$/ : /^(complete|loaded)$/,
-            defContextName = '_',
-    //Oh the tragedy, detecting opera. See the usage of isOpera for reason.
-            isOpera = typeof opera !== 'undefined' && opera.toString() === '[object Opera]',
-            contexts = {},
-            cfg = {},
-            globalDefQueue = [],
-            useInteractive = false;
+        interactiveScript, currentlyAddingScript, mainScript, subPath,
+        version = '2.1.11',
+        commentRegExp = /(\/\*([\s\S]*?)\*\/|([^:]|^)\/\/(.*)$)/mg,
+        cjsRequireRegExp = /[^.]\s*require\s*\(\s*["']([^'"\s]+)["']\s*\)/g,
+        jsSuffixRegExp = /\.js$/,
+        currDirRegExp = /^\.\//,
+        op = Object.prototype,
+        ostring = op.toString,
+        hasOwn = op.hasOwnProperty,
+        ap = Array.prototype,
+        apsp = ap.splice,
+        isBrowser = !!(typeof window !== 'undefined' && typeof navigator !== 'undefined' && window.document),
+        isWebWorker = !isBrowser && typeof importScripts !== 'undefined',
+        //PS3 indicates loaded and complete, but need to wait for complete
+        //specifically. Sequence is 'loading', 'loaded', execution,
+        // then 'complete'. The UA check is unfortunate, but not sure how
+        //to feature test w/o causing perf issues.
+        readyRegExp = isBrowser && navigator.platform === 'PLAYSTATION 3' ?
+                      /^complete$/ : /^(complete|loaded)$/,
+        defContextName = '_',
+        //Oh the tragedy, detecting opera. See the usage of isOpera for reason.
+        isOpera = typeof opera !== 'undefined' && opera.toString() === '[object Opera]',
+        contexts = {},
+        cfg = {},
+        globalDefQueue = [],
+        useInteractive = false;
 
     function isFunction(it) {
         return ostring.call(it) === '[object Function]';
@@ -109,8 +109,8 @@ var requirejs, require, define;
             eachProp(source, function (value, prop) {
                 if (force || !hasProp(target, prop)) {
                     if (deepStringMixin && typeof value === 'object' && value &&
-                            !isArray(value) && !isFunction(value) &&
-                            !(value instanceof RegExp)) {
+                        !isArray(value) && !isFunction(value) &&
+                        !(value instanceof RegExp)) {
 
                         if (!target[prop]) {
                             target[prop] = {};
@@ -141,7 +141,7 @@ var requirejs, require, define;
         throw err;
     }
 
-    //Allow getting a global that expressed in
+    //Allow getting a global that is expressed in
     //dot notation, like 'a.b.c'.
     function getGlobal(value) {
         if (!value) {
@@ -196,31 +196,31 @@ var requirejs, require, define;
 
     function newContext(contextName) {
         var inCheckLoaded, Module, context, handlers,
-                checkLoadedTimeoutId,
-                config = {
-                    //Defaults. Do not set a default for map
-                    //config to speed up normalize(), which
-                    //will run faster if there is no default.
-                    waitSeconds: 7,
-                    baseUrl: './',
-                    paths: {},
-                    bundles: {},
-                    pkgs: {},
-                    shim: {},
-                    config: {}
-                },
-                registry = {},
-        //registry of just enabled modules, to speed
-        //cycle breaking code when lots of modules
-        //are registered, but not activated.
-                enabledRegistry = {},
-                undefEvents = {},
-                defQueue = [],
-                defined = {},
-                urlFetched = {},
-                bundlesMap = {},
-                requireCounter = 1,
-                unnormalizedCounter = 1;
+            checkLoadedTimeoutId,
+            config = {
+                //Defaults. Do not set a default for map
+                //config to speed up normalize(), which
+                //will run faster if there is no default.
+                waitSeconds: 7,
+                baseUrl: './',
+                paths: {},
+                bundles: {},
+                pkgs: {},
+                shim: {},
+                config: {}
+            },
+            registry = {},
+            //registry of just enabled modules, to speed
+            //cycle breaking code when lots of modules
+            //are registered, but not activated.
+            enabledRegistry = {},
+            undefEvents = {},
+            defQueue = [],
+            defined = {},
+            urlFetched = {},
+            bundlesMap = {},
+            requireCounter = 1,
+            unnormalizedCounter = 1;
 
         /**
          * Trims the . and .. from an array of path segments.
@@ -267,11 +267,11 @@ var requirejs, require, define;
          */
         function normalize(name, baseName, applyMap) {
             var pkgMain, mapValue, nameParts, i, j, nameSegment, lastIndex,
-                    foundMap, foundI, foundStarMap, starI,
-                    baseParts = baseName && baseName.split('/'),
-                    normalizedBaseParts = baseParts,
-                    map = config.map,
-                    starMap = map && map['*'];
+                foundMap, foundI, foundStarMap, starI,
+                baseParts = baseName && baseName.split('/'),
+                normalizedBaseParts = baseParts,
+                map = config.map,
+                starMap = map && map['*'];
 
             //Adjust any relative paths.
             if (name && name.charAt(0) === '.') {
@@ -389,7 +389,7 @@ var requirejs, require, define;
         //did not have a plugin prefix.
         function splitPrefix(name) {
             var prefix,
-                    index = name ? name.indexOf('!') : -1;
+                index = name ? name.indexOf('!') : -1;
             if (index > -1) {
                 prefix = name.substring(0, index);
                 name = name.substring(index + 1, name.length);
@@ -414,11 +414,11 @@ var requirejs, require, define;
          */
         function makeModuleMap(name, parentModuleMap, isNormalized, applyMap) {
             var url, pluginModule, suffix, nameParts,
-                    prefix = null,
-                    parentName = parentModuleMap ? parentModuleMap.name : null,
-                    originalName = name,
-                    isDefine = true,
-                    normalizedName = '';
+                prefix = null,
+                parentName = parentModuleMap ? parentModuleMap.name : null,
+                originalName = name,
+                isDefine = true,
+                normalizedName = '';
 
             //If no name, then it means it is a require call, generate an
             //internal name.
@@ -467,8 +467,8 @@ var requirejs, require, define;
             //normalization, stamp it with a unique ID so two matching relative
             //ids that may conflict can be separate.
             suffix = prefix && !pluginModule && !isNormalized ?
-                    '_unnormalized' + (unnormalizedCounter += 1) :
-                    '';
+                     '_unnormalized' + (unnormalizedCounter += 1) :
+                     '';
 
             return {
                 prefix: prefix,
@@ -486,7 +486,7 @@ var requirejs, require, define;
 
         function getModule(depMap) {
             var id = depMap.id,
-                    mod = getOwn(registry, id);
+                mod = getOwn(registry, id);
 
             if (!mod) {
                 mod = registry[id] = new context.Module(depMap);
@@ -497,7 +497,7 @@ var requirejs, require, define;
 
         function on(depMap, name, fn) {
             var id = depMap.id,
-                    mod = getOwn(registry, id);
+                mod = getOwn(registry, id);
 
             if (hasProp(defined, id) &&
                     (!mod || mod.defineEmitComplete)) {
@@ -516,7 +516,7 @@ var requirejs, require, define;
 
         function onError(err, errback) {
             var ids = err.requireModules,
-                    notified = false;
+                notified = false;
 
             if (errback) {
                 errback(err);
@@ -550,7 +550,7 @@ var requirejs, require, define;
                 //local var ref to defQueue, so cannot just reassign the one
                 //on context.
                 apsp.apply(defQueue,
-                        [defQueue.length, 0].concat(globalDefQueue));
+                           [defQueue.length, 0].concat(globalDefQueue));
                 globalDefQueue = [];
             }
         }
@@ -567,7 +567,7 @@ var requirejs, require, define;
                 mod.usingExports = true;
                 if (mod.map.isDefine) {
                     if (mod.exports) {
-                        return mod.exports;
+                        return (defined[mod.map.id] = mod.exports);
                     } else {
                         return (mod.exports = defined[mod.map.id] = {});
                     }
@@ -583,7 +583,7 @@ var requirejs, require, define;
                         config: function () {
                             return  getOwn(config.config, mod.map.id) || {};
                         },
-                        exports: handlers.exports(mod)
+                        exports: mod.exports || (mod.exports = {})
                     });
                 }
             }
@@ -604,7 +604,7 @@ var requirejs, require, define;
                 traced[id] = true;
                 each(mod.depMaps, function (depMap, i) {
                     var depId = depMap.id,
-                            dep = getOwn(registry, depId);
+                        dep = getOwn(registry, depId);
 
                     //Only force things that have not completed
                     //being defined, so still in the registry,
@@ -625,13 +625,13 @@ var requirejs, require, define;
 
         function checkLoaded() {
             var err, usingPathFallback,
-                    waitInterval = config.waitSeconds * 1000,
-            //It is possible to disable the wait interval by using waitSeconds of 0.
-                    expired = waitInterval && (context.startTime + waitInterval) < new Date().getTime(),
-                    noLoads = [],
-                    reqCalls = [],
-                    stillLoading = false,
-                    needCycleCheck = true;
+                waitInterval = config.waitSeconds * 1000,
+                //It is possible to disable the wait interval by using waitSeconds of 0.
+                expired = waitInterval && (context.startTime + waitInterval) < new Date().getTime(),
+                noLoads = [],
+                reqCalls = [],
+                stillLoading = false,
+                needCycleCheck = true;
 
             //Do not bother if this call was a result of a cycle break.
             if (inCheckLoaded) {
@@ -643,7 +643,7 @@ var requirejs, require, define;
             //Figure out the state of all the modules.
             eachProp(enabledRegistry, function (mod) {
                 var map = mod.map,
-                        modId = map.id;
+                    modId = map.id;
 
                 //Skip things that are not enabled or in error state.
                 if (!mod.enabled) {
@@ -721,9 +721,9 @@ var requirejs, require, define;
             this.depCount = 0;
 
             /* this.exports this.factory
-             this.depMaps = [],
-             this.enabled, this.fetched
-             */
+               this.depMaps = [],
+               this.enabled, this.fetched
+            */
         };
 
         Module.prototype = {
@@ -803,8 +803,8 @@ var requirejs, require, define;
                     context.makeRequire(this.map, {
                         enableBuildCallback: true
                     })(this.shim.deps || [], bind(this, function () {
-                                return map.prefix ? this.callPlugin() : this.load();
-                            }));
+                        return map.prefix ? this.callPlugin() : this.load();
+                    }));
                 } else {
                     //Regular dependency.
                     return map.prefix ? this.callPlugin() : this.load();
@@ -831,10 +831,10 @@ var requirejs, require, define;
                 }
 
                 var err, cjsModule,
-                        id = this.map.id,
-                        depExports = this.depExports,
-                        exports = this.exports,
-                        factory = this.factory;
+                    id = this.map.id,
+                    depExports = this.depExports,
+                    exports = this.exports,
+                    factory = this.factory;
 
                 if (!this.inited) {
                     this.fetch();
@@ -856,7 +856,7 @@ var requirejs, require, define;
                             //their callbacks (#699). However if a global
                             //onError is set, use that.
                             if ((this.events.error && this.map.isDefine) ||
-                                    req.onError !== defaultOnError) {
+                                req.onError !== defaultOnError) {
                                 try {
                                     exports = context.execCb(id, factory, depExports, exports);
                                 } catch (e) {
@@ -923,9 +923,9 @@ var requirejs, require, define;
 
             callPlugin: function () {
                 var map = this.map,
-                        id = map.id,
-                //Map already normalized the prefix.
-                        pluginMap = makeModuleMap(map.prefix);
+                    id = map.id,
+                    //Map already normalized the prefix.
+                    pluginMap = makeModuleMap(map.prefix);
 
                 //Mark this as a dependency for this plugin, so it
                 //can be traced for cycles.
@@ -933,12 +933,12 @@ var requirejs, require, define;
 
                 on(pluginMap, 'defined', bind(this, function (plugin) {
                     var load, normalizedMap, normalizedMod,
-                            bundleId = getOwn(bundlesMap, this.map.id),
-                            name = this.map.name,
-                            parentName = this.map.parentMap ? this.map.parentMap.name : null,
-                            localRequire = context.makeRequire(map.parentMap, {
-                                enableBuildCallback: true
-                            });
+                        bundleId = getOwn(bundlesMap, this.map.id),
+                        name = this.map.name,
+                        parentName = this.map.parentMap ? this.map.parentMap.name : null,
+                        localRequire = context.makeRequire(map.parentMap, {
+                            enableBuildCallback: true
+                        });
 
                     //If current map is not normalized, wait for that
                     //normalized name to load instead of continuing.
@@ -953,14 +953,14 @@ var requirejs, require, define;
                         //prefix and name should already be normalized, no need
                         //for applying map config again either.
                         normalizedMap = makeModuleMap(map.prefix + '!' + name,
-                                this.map.parentMap);
+                                                      this.map.parentMap);
                         on(normalizedMap,
-                                'defined', bind(this, function (value) {
-                                    this.init([], function () { return value; }, null, {
-                                        enabled: true,
-                                        ignore: true
-                                    });
-                                }));
+                            'defined', bind(this, function (value) {
+                                this.init([], function () { return value; }, null, {
+                                    enabled: true,
+                                    ignore: true
+                                });
+                            }));
 
                         normalizedMod = getOwn(registry, normalizedMap.id);
                         if (normalizedMod) {
@@ -1014,8 +1014,8 @@ var requirejs, require, define;
                     load.fromText = bind(this, function (text, textAlt) {
                         /*jslint evil: true */
                         var moduleName = map.name,
-                                moduleMap = makeModuleMap(moduleName),
-                                hasInteractive = useInteractive;
+                            moduleMap = makeModuleMap(moduleName),
+                            hasInteractive = useInteractive;
 
                         //As of 2.1.0, support just passing the text, to reinforce
                         //fromText only being called once per resource. Still
@@ -1044,10 +1044,10 @@ var requirejs, require, define;
                             req.exec(text);
                         } catch (e) {
                             return onError(makeError('fromtexteval',
-                                    'fromText eval for ' + id +
+                                             'fromText eval for ' + id +
                                             ' failed: ' + e,
-                                    e,
-                                    [id]));
+                                             e,
+                                             [id]));
                         }
 
                         if (hasInteractive) {
@@ -1094,9 +1094,9 @@ var requirejs, require, define;
                         //Dependency needs to be converted to a depMap
                         //and wired up to this module.
                         depMap = makeModuleMap(depMap,
-                                (this.map.isDefine ? this.map : this.map.parentMap),
-                                false,
-                                !this.skipMap);
+                                               (this.map.isDefine ? this.map : this.map.parentMap),
+                                               false,
+                                               !this.skipMap);
                         this.depMaps[i] = depMap;
 
                         handler = getOwn(handlers, depMap.id);
@@ -1254,12 +1254,12 @@ var requirejs, require, define;
                 //Save off the paths since they require special processing,
                 //they are additive.
                 var shim = config.shim,
-                        objs = {
-                            paths: true,
-                            bundles: true,
-                            config: true,
-                            map: true
-                        };
+                    objs = {
+                        paths: true,
+                        bundles: true,
+                        config: true,
+                        map: true
+                    };
 
                 eachProp(cfg, function (value, prop) {
                     if (objs[prop]) {
@@ -1319,8 +1319,8 @@ var requirejs, require, define;
                         //envs have different conventions: some use a module name,
                         //some use a file name.
                         config.pkgs[name] = pkgObj.name + '/' + (pkgObj.main || 'main')
-                                .replace(currDirRegExp, '')
-                                .replace(jsSuffixRegExp, '');
+                                     .replace(currDirRegExp, '')
+                                     .replace(jsSuffixRegExp, '');
                     });
                 }
 
@@ -1390,10 +1390,10 @@ var requirejs, require, define;
 
                         if (!hasProp(defined, id)) {
                             return onError(makeError('notloaded', 'Module name "' +
-                                    id +
-                                    '" has not been loaded yet for context: ' +
-                                    contextName +
-                                    (relMap ? '' : '. Use require([])')));
+                                        id +
+                                        '" has not been loaded yet for context: ' +
+                                        contextName +
+                                        (relMap ? '' : '. Use require([])')));
                         }
                         return defined[id];
                     }
@@ -1433,9 +1433,9 @@ var requirejs, require, define;
                      */
                     toUrl: function (moduleNamePlusExt) {
                         var ext,
-                                index = moduleNamePlusExt.lastIndexOf('.'),
-                                segment = moduleNamePlusExt.split('/')[0],
-                                isRelative = segment === '.' || segment === '..';
+                            index = moduleNamePlusExt.lastIndexOf('.'),
+                            segment = moduleNamePlusExt.split('/')[0],
+                            isRelative = segment === '.' || segment === '..';
 
                         //Have a file extension alias, and it is not the
                         //dots from a relative path.
@@ -1445,7 +1445,7 @@ var requirejs, require, define;
                         }
 
                         return context.nameToUrl(normalize(moduleNamePlusExt,
-                                relMap && relMap.id, true), ext,  true);
+                                                relMap && relMap.id, true), ext,  true);
                     },
 
                     defined: function (id) {
@@ -1466,7 +1466,7 @@ var requirejs, require, define;
                         takeGlobalQueue();
 
                         var map = makeModuleMap(id, relMap, true),
-                                mod = getOwn(registry, id);
+                            mod = getOwn(registry, id);
 
                         removeScript(id);
 
@@ -1502,7 +1502,7 @@ var requirejs, require, define;
             /**
              * Called to enable a module if it is still in the registry
              * awaiting enablement. A second arg, parent, the parent module,
-             * is passed in for context, when this method is overriden by
+             * is passed in for context, when this method is overridden by
              * the optimizer. Not shown here to keep code compact.
              */
             enable: function (depMap) {
@@ -1520,8 +1520,8 @@ var requirejs, require, define;
              */
             completeLoad: function (moduleName) {
                 var found, args, mod,
-                        shim = getOwn(config.shim, moduleName) || {},
-                        shExports = shim.exports;
+                    shim = getOwn(config.shim, moduleName) || {},
+                    shExports = shim.exports;
 
                 takeGlobalQueue();
 
@@ -1554,9 +1554,9 @@ var requirejs, require, define;
                             return;
                         } else {
                             return onError(makeError('nodefine',
-                                    'No define call for ' + moduleName,
-                                    null,
-                                    [moduleName]));
+                                             'No define call for ' + moduleName,
+                                             null,
+                                             [moduleName]));
                         }
                     } else {
                         //A script that does not call define(), so just simulate
@@ -1577,8 +1577,8 @@ var requirejs, require, define;
              */
             nameToUrl: function (moduleName, ext, skipExt) {
                 var paths, syms, i, parentModule, url,
-                        parentPath, bundleId,
-                        pkgMain = getOwn(config.pkgs, moduleName);
+                    parentPath, bundleId,
+                    pkgMain = getOwn(config.pkgs, moduleName);
 
                 if (pkgMain) {
                     moduleName = pkgMain;
@@ -1629,8 +1629,8 @@ var requirejs, require, define;
                 }
 
                 return config.urlArgs ? url +
-                        ((url.indexOf('?') === -1 ? '?' : '&') +
-                                config.urlArgs) : url;
+                                        ((url.indexOf('?') === -1 ? '?' : '&') +
+                                         config.urlArgs) : url;
             },
 
             //Delegates to req.load. Broken out as a separate function to
@@ -1705,7 +1705,7 @@ var requirejs, require, define;
 
         //Find the right context, use default
         var context, config,
-                contextName = defContextName;
+            contextName = defContextName;
 
         // Determine if have config object in the call.
         if (!isArray(deps) && typeof deps !== 'string') {
@@ -1833,7 +1833,7 @@ var requirejs, require, define;
      */
     req.load = function (context, moduleName, url) {
         var config = (context && context.config) || {},
-                node;
+            node;
         if (isBrowser) {
             //In the browser so use a script tag
             node = req.createNode(config, moduleName, url);
@@ -1850,13 +1850,13 @@ var requirejs, require, define;
             //UNFORTUNATELY Opera implements attachEvent but does not follow the script
             //script execution mode.
             if (node.attachEvent &&
-                //Check if node.attachEvent is artificially added by custom script or
-                //natively supported by browser
-                //read https://github.com/jrburke/requirejs/issues/187
-                //if we can NOT find [native code] then it must NOT natively supported.
-                //in IE8, node.attachEvent does not have toString()
-                //Note the test for "[native code" with no closing brace, see:
-                //https://github.com/jrburke/requirejs/issues/273
+                    //Check if node.attachEvent is artificially added by custom script or
+                    //natively supported by browser
+                    //read https://github.com/jrburke/requirejs/issues/187
+                    //if we can NOT find [native code] then it must NOT natively supported.
+                    //in IE8, node.attachEvent does not have toString()
+                    //Note the test for "[native code" with no closing brace, see:
+                    //https://github.com/jrburke/requirejs/issues/273
                     !(node.attachEvent.toString && node.attachEvent.toString().indexOf('[native code') < 0) &&
                     !isOpera) {
                 //Probably IE. IE (at least 6-8) do not fire
@@ -1911,10 +1911,10 @@ var requirejs, require, define;
                 context.completeLoad(moduleName);
             } catch (e) {
                 context.onError(makeError('importscripts',
-                        'importScripts failed for ' +
-                                moduleName + ' at ' + url,
-                        e,
-                        [moduleName]));
+                                'importScripts failed for ' +
+                                    moduleName + ' at ' + url,
+                                e,
+                                [moduleName]));
             }
         }
     };
@@ -1965,7 +1965,7 @@ var requirejs, require, define;
                 //like a module name.
                 mainScript = mainScript.replace(jsSuffixRegExp, '');
 
-                //If mainScript is still a path, fall back to dataMain
+                 //If mainScript is still a path, fall back to dataMain
                 if (req.jsExtRegExp.test(mainScript)) {
                     mainScript = dataMain;
                 }
@@ -2011,11 +2011,11 @@ var requirejs, require, define;
             //but only if there are function args.
             if (callback.length) {
                 callback
-                        .toString()
-                        .replace(commentRegExp, '')
-                        .replace(cjsRequireRegExp, function (match, dep) {
-                            deps.push(dep);
-                        });
+                    .toString()
+                    .replace(commentRegExp, '')
+                    .replace(cjsRequireRegExp, function (match, dep) {
+                        deps.push(dep);
+                    });
 
                 //May be a CommonJS thing even without require calls, but still
                 //could use exports, and module. Avoid doing exports and module
@@ -2065,4 +2065,4 @@ var requirejs, require, define;
 
     //Set up with config info.
     req(cfg);
-}(this));
\ No newline at end of file
+}(this));


[2/3] update jQuery to 1.11.1, update RequireJS to 2.1.11

Posted by jk...@apache.org.
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/5b12cea9/tapestry-core/src/main/resources/META-INF/assets/tapestry5/jquery.js
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/resources/META-INF/assets/tapestry5/jquery.js b/tapestry-core/src/main/resources/META-INF/assets/tapestry5/jquery.js
index 4c7d42c..d4b67f7 100644
--- a/tapestry-core/src/main/resources/META-INF/assets/tapestry5/jquery.js
+++ b/tapestry-core/src/main/resources/META-INF/assets/tapestry5/jquery.js
@@ -1,5 +1,5 @@
 /*!
- * jQuery JavaScript Library v1.11.0
+ * jQuery JavaScript Library v1.11.1
  * http://jquery.com/
  *
  * Includes Sizzle.js
@@ -9,30 +9,30 @@
  * Released under the MIT license
  * http://jquery.org/license
  *
- * Date: 2014-01-23T21:02Z
+ * Date: 2014-05-01T17:42Z
  */
 
 (function( global, factory ) {
 
-    if ( typeof module === "object" && typeof module.exports === "object" ) {
-        // For CommonJS and CommonJS-like environments where a proper window is present,
-        // execute the factory and get jQuery
-        // For environments that do not inherently posses a window with a document
-        // (such as Node.js), expose a jQuery-making factory as module.exports
-        // This accentuates the need for the creation of a real window
-        // e.g. var jQuery = require("jquery")(window);
-        // See ticket #14549 for more info
-        module.exports = global.document ?
-                factory( global, true ) :
-                function( w ) {
-                    if ( !w.document ) {
-                        throw new Error( "jQuery requires a window with a document" );
-                    }
-                    return factory( w );
-                };
-    } else {
-        factory( global );
-    }
+	if ( typeof module === "object" && typeof module.exports === "object" ) {
+		// For CommonJS and CommonJS-like environments where a proper window is present,
+		// execute the factory and get jQuery
+		// For environments that do not inherently posses a window with a document
+		// (such as Node.js), expose a jQuery-making factory as module.exports
+		// This accentuates the need for the creation of a real window
+		// e.g. var jQuery = require("jquery")(window);
+		// See ticket #14549 for more info
+		module.exports = global.document ?
+			factory( global, true ) :
+			function( w ) {
+				if ( !w.document ) {
+					throw new Error( "jQuery requires a window with a document" );
+				}
+				return factory( w );
+			};
+	} else {
+		factory( global );
+	}
 
 // Pass this if window is not defined yet
 }(typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
@@ -43,8423 +43,8388 @@
 // Support: Firefox 18+
 //
 
-    var deletedIds = [];
+var deletedIds = [];
 
-    var slice = deletedIds.slice;
+var slice = deletedIds.slice;
 
-    var concat = deletedIds.concat;
+var concat = deletedIds.concat;
 
-    var push = deletedIds.push;
+var push = deletedIds.push;
 
-    var indexOf = deletedIds.indexOf;
+var indexOf = deletedIds.indexOf;
 
-    var class2type = {};
+var class2type = {};
 
-    var toString = class2type.toString;
+var toString = class2type.toString;
 
-    var hasOwn = class2type.hasOwnProperty;
+var hasOwn = class2type.hasOwnProperty;
 
-    var trim = "".trim;
+var support = {};
 
-    var support = {};
 
 
+var
+	version = "1.11.1",
 
-    var
-            version = "1.11.0",
+	// Define a local copy of jQuery
+	jQuery = function( selector, context ) {
+		// The jQuery object is actually just the init constructor 'enhanced'
+		// Need init if jQuery is called (just allow error to be thrown if not included)
+		return new jQuery.fn.init( selector, context );
+	},
 
-    // Define a local copy of jQuery
-            jQuery = function( selector, context ) {
-                // The jQuery object is actually just the init constructor 'enhanced'
-                // Need init if jQuery is called (just allow error to be thrown if not included)
-                return new jQuery.fn.init( selector, context );
-            },
+	// Support: Android<4.1, IE<9
+	// Make sure we trim BOM and NBSP
+	rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
 
-    // Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE)
-            rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
+	// Matches dashed string for camelizing
+	rmsPrefix = /^-ms-/,
+	rdashAlpha = /-([\da-z])/gi,
 
-    // Matches dashed string for camelizing
-            rmsPrefix = /^-ms-/,
-            rdashAlpha = /-([\da-z])/gi,
+	// Used by jQuery.camelCase as callback to replace()
+	fcamelCase = function( all, letter ) {
+		return letter.toUpperCase();
+	};
 
-    // Used by jQuery.camelCase as callback to replace()
-            fcamelCase = function( all, letter ) {
-                return letter.toUpperCase();
-            };
+jQuery.fn = jQuery.prototype = {
+	// The current version of jQuery being used
+	jquery: version,
 
-    jQuery.fn = jQuery.prototype = {
-        // The current version of jQuery being used
-        jquery: version,
+	constructor: jQuery,
 
-        constructor: jQuery,
+	// Start with an empty selector
+	selector: "",
 
-        // Start with an empty selector
-        selector: "",
+	// The default length of a jQuery object is 0
+	length: 0,
 
-        // The default length of a jQuery object is 0
-        length: 0,
+	toArray: function() {
+		return slice.call( this );
+	},
 
-        toArray: function() {
-            return slice.call( this );
-        },
+	// Get the Nth element in the matched element set OR
+	// Get the whole matched element set as a clean array
+	get: function( num ) {
+		return num != null ?
 
-        // Get the Nth element in the matched element set OR
-        // Get the whole matched element set as a clean array
-        get: function( num ) {
-            return num != null ?
+			// Return just the one element from the set
+			( num < 0 ? this[ num + this.length ] : this[ num ] ) :
 
-                // Return a 'clean' array
-                    ( num < 0 ? this[ num + this.length ] : this[ num ] ) :
+			// Return all the elements in a clean array
+			slice.call( this );
+	},
 
-                // Return just the object
-                    slice.call( this );
-        },
+	// Take an array of elements and push it onto the stack
+	// (returning the new matched element set)
+	pushStack: function( elems ) {
 
-        // Take an array of elements and push it onto the stack
-        // (returning the new matched element set)
-        pushStack: function( elems ) {
+		// Build a new jQuery matched element set
+		var ret = jQuery.merge( this.constructor(), elems );
 
-            // Build a new jQuery matched element set
-            var ret = jQuery.merge( this.constructor(), elems );
+		// Add the old object onto the stack (as a reference)
+		ret.prevObject = this;
+		ret.context = this.context;
 
-            // Add the old object onto the stack (as a reference)
-            ret.prevObject = this;
-            ret.context = this.context;
+		// Return the newly-formed element set
+		return ret;
+	},
 
-            // Return the newly-formed element set
-            return ret;
-        },
+	// Execute a callback for every element in the matched set.
+	// (You can seed the arguments with an array of args, but this is
+	// only used internally.)
+	each: function( callback, args ) {
+		return jQuery.each( this, callback, args );
+	},
 
-        // Execute a callback for every element in the matched set.
-        // (You can seed the arguments with an array of args, but this is
-        // only used internally.)
-        each: function( callback, args ) {
-            return jQuery.each( this, callback, args );
-        },
+	map: function( callback ) {
+		return this.pushStack( jQuery.map(this, function( elem, i ) {
+			return callback.call( elem, i, elem );
+		}));
+	},
 
-        map: function( callback ) {
-            return this.pushStack( jQuery.map(this, function( elem, i ) {
-                return callback.call( elem, i, elem );
-            }));
-        },
-
-        slice: function() {
-            return this.pushStack( slice.apply( this, arguments ) );
-        },
-
-        first: function() {
-            return this.eq( 0 );
-        },
-
-        last: function() {
-            return this.eq( -1 );
-        },
-
-        eq: function( i ) {
-            var len = this.length,
-                    j = +i + ( i < 0 ? len : 0 );
-            return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );
-        },
-
-        end: function() {
-            return this.prevObject || this.constructor(null);
-        },
-
-        // For internal use only.
-        // Behaves like an Array's method, not like a jQuery method.
-        push: push,
-        sort: deletedIds.sort,
-        splice: deletedIds.splice
-    };
-
-    jQuery.extend = jQuery.fn.extend = function() {
-        var src, copyIsArray, copy, name, options, clone,
-                target = arguments[0] || {},
-                i = 1,
-                length = arguments.length,
-                deep = false;
-
-        // Handle a deep copy situation
-        if ( typeof target === "boolean" ) {
-            deep = target;
-
-            // skip the boolean and the target
-            target = arguments[ i ] || {};
-            i++;
-        }
-
-        // Handle case when target is a string or something (possible in deep copy)
-        if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
-            target = {};
-        }
-
-        // extend jQuery itself if only one argument is passed
-        if ( i === length ) {
-            target = this;
-            i--;
-        }
-
-        for ( ; i < length; i++ ) {
-            // Only deal with non-null/undefined values
-            if ( (options = arguments[ i ]) != null ) {
-                // Extend the base object
-                for ( name in options ) {
-                    src = target[ name ];
-                    copy = options[ name ];
-
-                    // Prevent never-ending loop
-                    if ( target === copy ) {
-                        continue;
-                    }
-
-                    // Recurse if we're merging plain objects or arrays
-                    if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
-                        if ( copyIsArray ) {
-                            copyIsArray = false;
-                            clone = src && jQuery.isArray(src) ? src : [];
-
-                        } else {
-                            clone = src && jQuery.isPlainObject(src) ? src : {};
-                        }
-
-                        // Never move original objects, clone them
-                        target[ name ] = jQuery.extend( deep, clone, copy );
-
-                        // Don't bring in undefined values
-                    } else if ( copy !== undefined ) {
-                        target[ name ] = copy;
-                    }
-                }
-            }
-        }
-
-        // Return the modified object
-        return target;
-    };
-
-    jQuery.extend({
-        // Unique for each copy of jQuery on the page
-        expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
-
-        // Assume jQuery is ready without the ready module
-        isReady: true,
-
-        error: function( msg ) {
-            throw new Error( msg );
-        },
-
-        noop: function() {},
-
-        // See test/unit/core.js for details concerning isFunction.
-        // Since version 1.3, DOM methods and functions like alert
-        // aren't supported. They return false on IE (#2968).
-        isFunction: function( obj ) {
-            return jQuery.type(obj) === "function";
-        },
-
-        isArray: Array.isArray || function( obj ) {
-            return jQuery.type(obj) === "array";
-        },
-
-        isWindow: function( obj ) {
-            /* jshint eqeqeq: false */
-            return obj != null && obj == obj.window;
-        },
-
-        isNumeric: function( obj ) {
-            // parseFloat NaNs numeric-cast false positives (null|true|false|"")
-            // ...but misinterprets leading-number strings, particularly hex literals ("0x...")
-            // subtraction forces infinities to NaN
-            return obj - parseFloat( obj ) >= 0;
-        },
-
-        isEmptyObject: function( obj ) {
-            var name;
-            for ( name in obj ) {
-                return false;
-            }
-            return true;
-        },
-
-        isPlainObject: function( obj ) {
-            var key;
-
-            // Must be an Object.
-            // Because of IE, we also have to check the presence of the constructor property.
-            // Make sure that DOM nodes and window objects don't pass through, as well
-            if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
-                return false;
-            }
-
-            try {
-                // Not own constructor property must be Object
-                if ( obj.constructor &&
-                        !hasOwn.call(obj, "constructor") &&
-                        !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
-                    return false;
-                }
-            } catch ( e ) {
-                // IE8,9 Will throw exceptions on certain host objects #9897
-                return false;
-            }
-
-            // Support: IE<9
-            // Handle iteration over inherited properties before own properties.
-            if ( support.ownLast ) {
-                for ( key in obj ) {
-                    return hasOwn.call( obj, key );
-                }
-            }
-
-            // Own properties are enumerated firstly, so to speed up,
-            // if last one is own, then all properties are own.
-            for ( key in obj ) {}
-
-            return key === undefined || hasOwn.call( obj, key );
-        },
-
-        type: function( obj ) {
-            if ( obj == null ) {
-                return obj + "";
-            }
-            return typeof obj === "object" || typeof obj === "function" ?
-                    class2type[ toString.call(obj) ] || "object" :
-                    typeof obj;
-        },
-
-        // Evaluates a script in a global context
-        // Workarounds based on findings by Jim Driscoll
-        // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context
-        globalEval: function( data ) {
-            if ( data && jQuery.trim( data ) ) {
-                // We use execScript on Internet Explorer
-                // We use an anonymous function so that context is window
-                // rather than jQuery in Firefox
-                ( window.execScript || function( data ) {
-                    window[ "eval" ].call( window, data );
-                } )( data );
-            }
-        },
-
-        // Convert dashed to camelCase; used by the css and data modules
-        // Microsoft forgot to hump their vendor prefix (#9572)
-        camelCase: function( string ) {
-            return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
-        },
-
-        nodeName: function( elem, name ) {
-            return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
-        },
-
-        // args is for internal usage only
-        each: function( obj, callback, args ) {
-            var value,
-                    i = 0,
-                    length = obj.length,
-                    isArray = isArraylike( obj );
-
-            if ( args ) {
-                if ( isArray ) {
-                    for ( ; i < length; i++ ) {
-                        value = callback.apply( obj[ i ], args );
-
-                        if ( value === false ) {
-                            break;
-                        }
-                    }
-                } else {
-                    for ( i in obj ) {
-                        value = callback.apply( obj[ i ], args );
-
-                        if ( value === false ) {
-                            break;
-                        }
-                    }
-                }
-
-                // A special, fast, case for the most common use of each
-            } else {
-                if ( isArray ) {
-                    for ( ; i < length; i++ ) {
-                        value = callback.call( obj[ i ], i, obj[ i ] );
-
-                        if ( value === false ) {
-                            break;
-                        }
-                    }
-                } else {
-                    for ( i in obj ) {
-                        value = callback.call( obj[ i ], i, obj[ i ] );
-
-                        if ( value === false ) {
-                            break;
-                        }
-                    }
-                }
-            }
-
-            return obj;
-        },
-
-        // Use native String.trim function wherever possible
-        trim: trim && !trim.call("\uFEFF\xA0") ?
-                function( text ) {
-                    return text == null ?
-                            "" :
-                            trim.call( text );
-                } :
-
-            // Otherwise use our own trimming functionality
-                function( text ) {
-                    return text == null ?
-                            "" :
-                            ( text + "" ).replace( rtrim, "" );
-                },
-
-        // results is for internal usage only
-        makeArray: function( arr, results ) {
-            var ret = results || [];
-
-            if ( arr != null ) {
-                if ( isArraylike( Object(arr) ) ) {
-                    jQuery.merge( ret,
-                            typeof arr === "string" ?
-                                    [ arr ] : arr
-                    );
-                } else {
-                    push.call( ret, arr );
-                }
-            }
-
-            return ret;
-        },
-
-        inArray: function( elem, arr, i ) {
-            var len;
-
-            if ( arr ) {
-                if ( indexOf ) {
-                    return indexOf.call( arr, elem, i );
-                }
-
-                len = arr.length;
-                i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;
-
-                for ( ; i < len; i++ ) {
-                    // Skip accessing in sparse arrays
-                    if ( i in arr && arr[ i ] === elem ) {
-                        return i;
-                    }
-                }
-            }
-
-            return -1;
-        },
-
-        merge: function( first, second ) {
-            var len = +second.length,
-                    j = 0,
-                    i = first.length;
-
-            while ( j < len ) {
-                first[ i++ ] = second[ j++ ];
-            }
-
-            // Support: IE<9
-            // Workaround casting of .length to NaN on otherwise arraylike objects (e.g., NodeLists)
-            if ( len !== len ) {
-                while ( second[j] !== undefined ) {
-                    first[ i++ ] = second[ j++ ];
-                }
-            }
-
-            first.length = i;
-
-            return first;
-        },
-
-        grep: function( elems, callback, invert ) {
-            var callbackInverse,
-                    matches = [],
-                    i = 0,
-                    length = elems.length,
-                    callbackExpect = !invert;
-
-            // Go through the array, only saving the items
-            // that pass the validator function
-            for ( ; i < length; i++ ) {
-                callbackInverse = !callback( elems[ i ], i );
-                if ( callbackInverse !== callbackExpect ) {
-                    matches.push( elems[ i ] );
-                }
-            }
-
-            return matches;
-        },
-
-        // arg is for internal usage only
-        map: function( elems, callback, arg ) {
-            var value,
-                    i = 0,
-                    length = elems.length,
-                    isArray = isArraylike( elems ),
-                    ret = [];
-
-            // Go through the array, translating each of the items to their new values
-            if ( isArray ) {
-                for ( ; i < length; i++ ) {
-                    value = callback( elems[ i ], i, arg );
-
-                    if ( value != null ) {
-                        ret.push( value );
-                    }
-                }
-
-                // Go through every key on the object,
-            } else {
-                for ( i in elems ) {
-                    value = callback( elems[ i ], i, arg );
-
-                    if ( value != null ) {
-                        ret.push( value );
-                    }
-                }
-            }
-
-            // Flatten any nested arrays
-            return concat.apply( [], ret );
-        },
-
-        // A global GUID counter for objects
-        guid: 1,
-
-        // Bind a function to a context, optionally partially applying any
-        // arguments.
-        proxy: function( fn, context ) {
-            var args, proxy, tmp;
-
-            if ( typeof context === "string" ) {
-                tmp = fn[ context ];
-                context = fn;
-                fn = tmp;
-            }
-
-            // Quick check to determine if target is callable, in the spec
-            // this throws a TypeError, but we will just return undefined.
-            if ( !jQuery.isFunction( fn ) ) {
-                return undefined;
-            }
-
-            // Simulated bind
-            args = slice.call( arguments, 2 );
-            proxy = function() {
-                return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
-            };
-
-            // Set the guid of unique handler to the same of original handler, so it can be removed
-            proxy.guid = fn.guid = fn.guid || jQuery.guid++;
-
-            return proxy;
-        },
-
-        now: function() {
-            return +( new Date() );
-        },
-
-        // jQuery.support is not used in Core but other projects attach their
-        // properties to it so it needs to exist.
-        support: support
-    });
+	slice: function() {
+		return this.pushStack( slice.apply( this, arguments ) );
+	},
+
+	first: function() {
+		return this.eq( 0 );
+	},
+
+	last: function() {
+		return this.eq( -1 );
+	},
+
+	eq: function( i ) {
+		var len = this.length,
+			j = +i + ( i < 0 ? len : 0 );
+		return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );
+	},
+
+	end: function() {
+		return this.prevObject || this.constructor(null);
+	},
+
+	// For internal use only.
+	// Behaves like an Array's method, not like a jQuery method.
+	push: push,
+	sort: deletedIds.sort,
+	splice: deletedIds.splice
+};
+
+jQuery.extend = jQuery.fn.extend = function() {
+	var src, copyIsArray, copy, name, options, clone,
+		target = arguments[0] || {},
+		i = 1,
+		length = arguments.length,
+		deep = false;
+
+	// Handle a deep copy situation
+	if ( typeof target === "boolean" ) {
+		deep = target;
+
+		// skip the boolean and the target
+		target = arguments[ i ] || {};
+		i++;
+	}
+
+	// Handle case when target is a string or something (possible in deep copy)
+	if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
+		target = {};
+	}
+
+	// extend jQuery itself if only one argument is passed
+	if ( i === length ) {
+		target = this;
+		i--;
+	}
+
+	for ( ; i < length; i++ ) {
+		// Only deal with non-null/undefined values
+		if ( (options = arguments[ i ]) != null ) {
+			// Extend the base object
+			for ( name in options ) {
+				src = target[ name ];
+				copy = options[ name ];
+
+				// Prevent never-ending loop
+				if ( target === copy ) {
+					continue;
+				}
+
+				// Recurse if we're merging plain objects or arrays
+				if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
+					if ( copyIsArray ) {
+						copyIsArray = false;
+						clone = src && jQuery.isArray(src) ? src : [];
+
+					} else {
+						clone = src && jQuery.isPlainObject(src) ? src : {};
+					}
+
+					// Never move original objects, clone them
+					target[ name ] = jQuery.extend( deep, clone, copy );
+
+				// Don't bring in undefined values
+				} else if ( copy !== undefined ) {
+					target[ name ] = copy;
+				}
+			}
+		}
+	}
+
+	// Return the modified object
+	return target;
+};
+
+jQuery.extend({
+	// Unique for each copy of jQuery on the page
+	expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
+
+	// Assume jQuery is ready without the ready module
+	isReady: true,
+
+	error: function( msg ) {
+		throw new Error( msg );
+	},
+
+	noop: function() {},
+
+	// See test/unit/core.js for details concerning isFunction.
+	// Since version 1.3, DOM methods and functions like alert
+	// aren't supported. They return false on IE (#2968).
+	isFunction: function( obj ) {
+		return jQuery.type(obj) === "function";
+	},
+
+	isArray: Array.isArray || function( obj ) {
+		return jQuery.type(obj) === "array";
+	},
+
+	isWindow: function( obj ) {
+		/* jshint eqeqeq: false */
+		return obj != null && obj == obj.window;
+	},
+
+	isNumeric: function( obj ) {
+		// parseFloat NaNs numeric-cast false positives (null|true|false|"")
+		// ...but misinterprets leading-number strings, particularly hex literals ("0x...")
+		// subtraction forces infinities to NaN
+		return !jQuery.isArray( obj ) && obj - parseFloat( obj ) >= 0;
+	},
+
+	isEmptyObject: function( obj ) {
+		var name;
+		for ( name in obj ) {
+			return false;
+		}
+		return true;
+	},
+
+	isPlainObject: function( obj ) {
+		var key;
+
+		// Must be an Object.
+		// Because of IE, we also have to check the presence of the constructor property.
+		// Make sure that DOM nodes and window objects don't pass through, as well
+		if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
+			return false;
+		}
+
+		try {
+			// Not own constructor property must be Object
+			if ( obj.constructor &&
+				!hasOwn.call(obj, "constructor") &&
+				!hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
+				return false;
+			}
+		} catch ( e ) {
+			// IE8,9 Will throw exceptions on certain host objects #9897
+			return false;
+		}
+
+		// Support: IE<9
+		// Handle iteration over inherited properties before own properties.
+		if ( support.ownLast ) {
+			for ( key in obj ) {
+				return hasOwn.call( obj, key );
+			}
+		}
+
+		// Own properties are enumerated firstly, so to speed up,
+		// if last one is own, then all properties are own.
+		for ( key in obj ) {}
+
+		return key === undefined || hasOwn.call( obj, key );
+	},
+
+	type: function( obj ) {
+		if ( obj == null ) {
+			return obj + "";
+		}
+		return typeof obj === "object" || typeof obj === "function" ?
+			class2type[ toString.call(obj) ] || "object" :
+			typeof obj;
+	},
+
+	// Evaluates a script in a global context
+	// Workarounds based on findings by Jim Driscoll
+	// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context
+	globalEval: function( data ) {
+		if ( data && jQuery.trim( data ) ) {
+			// We use execScript on Internet Explorer
+			// We use an anonymous function so that context is window
+			// rather than jQuery in Firefox
+			( window.execScript || function( data ) {
+				window[ "eval" ].call( window, data );
+			} )( data );
+		}
+	},
+
+	// Convert dashed to camelCase; used by the css and data modules
+	// Microsoft forgot to hump their vendor prefix (#9572)
+	camelCase: function( string ) {
+		return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
+	},
+
+	nodeName: function( elem, name ) {
+		return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
+	},
+
+	// args is for internal usage only
+	each: function( obj, callback, args ) {
+		var value,
+			i = 0,
+			length = obj.length,
+			isArray = isArraylike( obj );
+
+		if ( args ) {
+			if ( isArray ) {
+				for ( ; i < length; i++ ) {
+					value = callback.apply( obj[ i ], args );
+
+					if ( value === false ) {
+						break;
+					}
+				}
+			} else {
+				for ( i in obj ) {
+					value = callback.apply( obj[ i ], args );
+
+					if ( value === false ) {
+						break;
+					}
+				}
+			}
+
+		// A special, fast, case for the most common use of each
+		} else {
+			if ( isArray ) {
+				for ( ; i < length; i++ ) {
+					value = callback.call( obj[ i ], i, obj[ i ] );
+
+					if ( value === false ) {
+						break;
+					}
+				}
+			} else {
+				for ( i in obj ) {
+					value = callback.call( obj[ i ], i, obj[ i ] );
+
+					if ( value === false ) {
+						break;
+					}
+				}
+			}
+		}
+
+		return obj;
+	},
+
+	// Support: Android<4.1, IE<9
+	trim: function( text ) {
+		return text == null ?
+			"" :
+			( text + "" ).replace( rtrim, "" );
+	},
+
+	// results is for internal usage only
+	makeArray: function( arr, results ) {
+		var ret = results || [];
+
+		if ( arr != null ) {
+			if ( isArraylike( Object(arr) ) ) {
+				jQuery.merge( ret,
+					typeof arr === "string" ?
+					[ arr ] : arr
+				);
+			} else {
+				push.call( ret, arr );
+			}
+		}
+
+		return ret;
+	},
+
+	inArray: function( elem, arr, i ) {
+		var len;
+
+		if ( arr ) {
+			if ( indexOf ) {
+				return indexOf.call( arr, elem, i );
+			}
+
+			len = arr.length;
+			i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;
+
+			for ( ; i < len; i++ ) {
+				// Skip accessing in sparse arrays
+				if ( i in arr && arr[ i ] === elem ) {
+					return i;
+				}
+			}
+		}
+
+		return -1;
+	},
+
+	merge: function( first, second ) {
+		var len = +second.length,
+			j = 0,
+			i = first.length;
+
+		while ( j < len ) {
+			first[ i++ ] = second[ j++ ];
+		}
+
+		// Support: IE<9
+		// Workaround casting of .length to NaN on otherwise arraylike objects (e.g., NodeLists)
+		if ( len !== len ) {
+			while ( second[j] !== undefined ) {
+				first[ i++ ] = second[ j++ ];
+			}
+		}
+
+		first.length = i;
+
+		return first;
+	},
+
+	grep: function( elems, callback, invert ) {
+		var callbackInverse,
+			matches = [],
+			i = 0,
+			length = elems.length,
+			callbackExpect = !invert;
+
+		// Go through the array, only saving the items
+		// that pass the validator function
+		for ( ; i < length; i++ ) {
+			callbackInverse = !callback( elems[ i ], i );
+			if ( callbackInverse !== callbackExpect ) {
+				matches.push( elems[ i ] );
+			}
+		}
+
+		return matches;
+	},
+
+	// arg is for internal usage only
+	map: function( elems, callback, arg ) {
+		var value,
+			i = 0,
+			length = elems.length,
+			isArray = isArraylike( elems ),
+			ret = [];
+
+		// Go through the array, translating each of the items to their new values
+		if ( isArray ) {
+			for ( ; i < length; i++ ) {
+				value = callback( elems[ i ], i, arg );
+
+				if ( value != null ) {
+					ret.push( value );
+				}
+			}
+
+		// Go through every key on the object,
+		} else {
+			for ( i in elems ) {
+				value = callback( elems[ i ], i, arg );
+
+				if ( value != null ) {
+					ret.push( value );
+				}
+			}
+		}
+
+		// Flatten any nested arrays
+		return concat.apply( [], ret );
+	},
+
+	// A global GUID counter for objects
+	guid: 1,
+
+	// Bind a function to a context, optionally partially applying any
+	// arguments.
+	proxy: function( fn, context ) {
+		var args, proxy, tmp;
+
+		if ( typeof context === "string" ) {
+			tmp = fn[ context ];
+			context = fn;
+			fn = tmp;
+		}
+
+		// Quick check to determine if target is callable, in the spec
+		// this throws a TypeError, but we will just return undefined.
+		if ( !jQuery.isFunction( fn ) ) {
+			return undefined;
+		}
+
+		// Simulated bind
+		args = slice.call( arguments, 2 );
+		proxy = function() {
+			return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
+		};
+
+		// Set the guid of unique handler to the same of original handler, so it can be removed
+		proxy.guid = fn.guid = fn.guid || jQuery.guid++;
+
+		return proxy;
+	},
+
+	now: function() {
+		return +( new Date() );
+	},
+
+	// jQuery.support is not used in Core but other projects attach their
+	// properties to it so it needs to exist.
+	support: support
+});
 
 // Populate the class2type map
-    jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {
-        class2type[ "[object " + name + "]" ] = name.toLowerCase();
-    });
-
-    function isArraylike( obj ) {
-        var length = obj.length,
-                type = jQuery.type( obj );
-
-        if ( type === "function" || jQuery.isWindow( obj ) ) {
-            return false;
-        }
-
-        if ( obj.nodeType === 1 && length ) {
-            return true;
-        }
-
-        return type === "array" || length === 0 ||
-                typeof length === "number" && length > 0 && ( length - 1 ) in obj;
-    }
-    var Sizzle =
-        /*!
-         * Sizzle CSS Selector Engine v1.10.16
-         * http://sizzlejs.com/
-         *
-         * Copyright 2013 jQuery Foundation, Inc. and other contributors
-         * Released under the MIT license
-         * http://jquery.org/license
-         *
-         * Date: 2014-01-13
-         */
-            (function( window ) {
-
-                var i,
-                        support,
-                        Expr,
-                        getText,
-                        isXML,
-                        compile,
-                        outermostContext,
-                        sortInput,
-                        hasDuplicate,
-
-                // Local document vars
-                        setDocument,
-                        document,
-                        docElem,
-                        documentIsHTML,
-                        rbuggyQSA,
-                        rbuggyMatches,
-                        matches,
-                        contains,
-
-                // Instance-specific data
-                        expando = "sizzle" + -(new Date()),
-                        preferredDoc = window.document,
-                        dirruns = 0,
-                        done = 0,
-                        classCache = createCache(),
-                        tokenCache = createCache(),
-                        compilerCache = createCache(),
-                        sortOrder = function( a, b ) {
-                            if ( a === b ) {
-                                hasDuplicate = true;
-                            }
-                            return 0;
-                        },
-
-                // General-purpose constants
-                        strundefined = typeof undefined,
-                        MAX_NEGATIVE = 1 << 31,
-
-                // Instance methods
-                        hasOwn = ({}).hasOwnProperty,
-                        arr = [],
-                        pop = arr.pop,
-                        push_native = arr.push,
-                        push = arr.push,
-                        slice = arr.slice,
-                // Use a stripped-down indexOf if we can't use a native one
-                        indexOf = arr.indexOf || function( elem ) {
-                            var i = 0,
-                                    len = this.length;
-                            for ( ; i < len; i++ ) {
-                                if ( this[i] === elem ) {
-                                    return i;
-                                }
-                            }
-                            return -1;
-                        },
-
-                        booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
-
-                // Regular expressions
-
-                // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace
-                        whitespace = "[\\x20\\t\\r\\n\\f]",
-                // http://www.w3.org/TR/css3-syntax/#characters
-                        characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
-
-                // Loosely modeled on CSS identifier characters
-                // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors
-                // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
-                        identifier = characterEncoding.replace( "w", "w#" ),
-
-                // Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors
-                        attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace +
-                                "*(?:([*^$|!~]?=)" + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]",
-
-                // Prefer arguments quoted,
-                //   then not containing pseudos/brackets,
-                //   then attribute selectors/non-parenthetical expressions,
-                //   then anything else
-                // These preferences are here to reduce the number of selectors
-                //   needing tokenize in the PSEUDO preFilter
-                        pseudos = ":(" + characterEncoding + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + attributes.replace( 3, 8 ) + ")*)|.*)\\)|)",
-
-                // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
-                        rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
-
-                        rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
-                        rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
-
-                        rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ),
-
-                        rpseudo = new RegExp( pseudos ),
-                        ridentifier = new RegExp( "^" + identifier + "$" ),
-
-                        matchExpr = {
-                            "ID": new RegExp( "^#(" + characterEncoding + ")" ),
-                            "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ),
-                            "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ),
-                            "ATTR": new RegExp( "^" + attributes ),
-                            "PSEUDO": new RegExp( "^" + pseudos ),
-                            "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
-                                    "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
-                                    "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
-                            "bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
-                            // For use in libraries implementing .is()
-                            // We use this for POS matching in `select`
-                            "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
-                                    whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
-                        },
-
-                        rinputs = /^(?:input|select|textarea|button)$/i,
-                        rheader = /^h\d$/i,
-
-                        rnative = /^[^{]+\{\s*\[native \w/,
-
-                // Easily-parseable/retrievable ID or TAG or CLASS selectors
-                        rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
-
-                        rsibling = /[+~]/,
-                        rescape = /'|\\/g,
-
-                // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
-                        runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
-                        funescape = function( _, escaped, escapedWhitespace ) {
-                            var high = "0x" + escaped - 0x10000;
-                            // NaN means non-codepoint
-                            // Support: Firefox
-                            // Workaround erroneous numeric interpretation of +"0x"
-                            return high !== high || escapedWhitespace ?
-                                    escaped :
-                                    high < 0 ?
-                                        // BMP codepoint
-                                            String.fromCharCode( high + 0x10000 ) :
-                                        // Supplemental Plane codepoint (surrogate pair)
-                                            String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
-                        };
+jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {
+	class2type[ "[object " + name + "]" ] = name.toLowerCase();
+});
+
+function isArraylike( obj ) {
+	var length = obj.length,
+		type = jQuery.type( obj );
+
+	if ( type === "function" || jQuery.isWindow( obj ) ) {
+		return false;
+	}
+
+	if ( obj.nodeType === 1 && length ) {
+		return true;
+	}
+
+	return type === "array" || length === 0 ||
+		typeof length === "number" && length > 0 && ( length - 1 ) in obj;
+}
+var Sizzle =
+/*!
+ * Sizzle CSS Selector Engine v1.10.19
+ * http://sizzlejs.com/
+ *
+ * Copyright 2013 jQuery Foundation, Inc. and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2014-04-18
+ */
+(function( window ) {
+
+var i,
+	support,
+	Expr,
+	getText,
+	isXML,
+	tokenize,
+	compile,
+	select,
+	outermostContext,
+	sortInput,
+	hasDuplicate,
+
+	// Local document vars
+	setDocument,
+	document,
+	docElem,
+	documentIsHTML,
+	rbuggyQSA,
+	rbuggyMatches,
+	matches,
+	contains,
+
+	// Instance-specific data
+	expando = "sizzle" + -(new Date()),
+	preferredDoc = window.document,
+	dirruns = 0,
+	done = 0,
+	classCache = createCache(),
+	tokenCache = createCache(),
+	compilerCache = createCache(),
+	sortOrder = function( a, b ) {
+		if ( a === b ) {
+			hasDuplicate = true;
+		}
+		return 0;
+	},
+
+	// General-purpose constants
+	strundefined = typeof undefined,
+	MAX_NEGATIVE = 1 << 31,
+
+	// Instance methods
+	hasOwn = ({}).hasOwnProperty,
+	arr = [],
+	pop = arr.pop,
+	push_native = arr.push,
+	push = arr.push,
+	slice = arr.slice,
+	// Use a stripped-down indexOf if we can't use a native one
+	indexOf = arr.indexOf || function( elem ) {
+		var i = 0,
+			len = this.length;
+		for ( ; i < len; i++ ) {
+			if ( this[i] === elem ) {
+				return i;
+			}
+		}
+		return -1;
+	},
+
+	booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
+
+	// Regular expressions
+
+	// Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace
+	whitespace = "[\\x20\\t\\r\\n\\f]",
+	// http://www.w3.org/TR/css3-syntax/#characters
+	characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
+
+	// Loosely modeled on CSS identifier characters
+	// An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors
+	// Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
+	identifier = characterEncoding.replace( "w", "w#" ),
+
+	// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
+	attributes = "\\[" + whitespace + "*(" + characterEncoding + ")(?:" + whitespace +
+		// Operator (capture 2)
+		"*([*^$|!~]?=)" + whitespace +
+		// "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
+		"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
+		"*\\]",
+
+	pseudos = ":(" + characterEncoding + ")(?:\\((" +
+		// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
+		// 1. quoted (capture 3; capture 4 or capture 5)
+		"('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
+		// 2. simple (capture 6)
+		"((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
+		// 3. anything else (capture 2)
+		".*" +
+		")\\)|)",
+
+	// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
+	rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
+
+	rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
+	rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
+
+	rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ),
+
+	rpseudo = new RegExp( pseudos ),
+	ridentifier = new RegExp( "^" + identifier + "$" ),
+
+	matchExpr = {
+		"ID": new RegExp( "^#(" + characterEncoding + ")" ),
+		"CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ),
+		"TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ),
+		"ATTR": new RegExp( "^" + attributes ),
+		"PSEUDO": new RegExp( "^" + pseudos ),
+		"CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
+			"*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
+			"*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
+		"bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
+		// For use in libraries implementing .is()
+		// We use this for POS matching in `select`
+		"needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
+			whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
+	},
+
+	rinputs = /^(?:input|select|textarea|button)$/i,
+	rheader = /^h\d$/i,
+
+	rnative = /^[^{]+\{\s*\[native \w/,
+
+	// Easily-parseable/retrievable ID or TAG or CLASS selectors
+	rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
+
+	rsibling = /[+~]/,
+	rescape = /'|\\/g,
+
+	// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
+	runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
+	funescape = function( _, escaped, escapedWhitespace ) {
+		var high = "0x" + escaped - 0x10000;
+		// NaN means non-codepoint
+		// Support: Firefox<24
+		// Workaround erroneous numeric interpretation of +"0x"
+		return high !== high || escapedWhitespace ?
+			escaped :
+			high < 0 ?
+				// BMP codepoint
+				String.fromCharCode( high + 0x10000 ) :
+				// Supplemental Plane codepoint (surrogate pair)
+				String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
+	};
 
 // Optimize for push.apply( _, NodeList )
-                try {
-                    push.apply(
-                            (arr = slice.call( preferredDoc.childNodes )),
-                            preferredDoc.childNodes
-                    );
-                    // Support: Android<4.0
-                    // Detect silently failing push.apply
-                    arr[ preferredDoc.childNodes.length ].nodeType;
-                } catch ( e ) {
-                    push = { apply: arr.length ?
-
-                        // Leverage slice if possible
-                            function( target, els ) {
-                                push_native.apply( target, slice.call(els) );
-                            } :
-
-                        // Support: IE<9
-                        // Otherwise append directly
-                            function( target, els ) {
-                                var j = target.length,
-                                        i = 0;
-                                // Can't trust NodeList.length
-                                while ( (target[j++] = els[i++]) ) {}
-                                target.length = j - 1;
-                            }
-                    };
-                }
-
-                function Sizzle( selector, context, results, seed ) {
-                    var match, elem, m, nodeType,
-                    // QSA vars
-                            i, groups, old, nid, newContext, newSelector;
-
-                    if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
-                        setDocument( context );
-                    }
-
-                    context = context || document;
-                    results = results || [];
-
-                    if ( !selector || typeof selector !== "string" ) {
-                        return results;
-                    }
-
-                    if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) {
-                        return [];
-                    }
-
-                    if ( documentIsHTML && !seed ) {
-
-                        // Shortcuts
-                        if ( (match = rquickExpr.exec( selector )) ) {
-                            // Speed-up: Sizzle("#ID")
-                            if ( (m = match[1]) ) {
-                                if ( nodeType === 9 ) {
-                                    elem = context.getElementById( m );
-                                    // Check parentNode to catch when Blackberry 4.6 returns
-                                    // nodes that are no longer in the document (jQuery #6963)
-                                    if ( elem && elem.parentNode ) {
-                                        // Handle the case where IE, Opera, and Webkit return items
-                                        // by name instead of ID
-                                        if ( elem.id === m ) {
-                                            results.push( elem );
-                                            return results;
-                                        }
-                                    } else {
-                                        return results;
-                                    }
-                                } else {
-                                    // Context is not a document
-                                    if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&
-                                            contains( context, elem ) && elem.id === m ) {
-                                        results.push( elem );
-                                        return results;
-                                    }
-                                }
-
-                                // Speed-up: Sizzle("TAG")
-                            } else if ( match[2] ) {
-                                push.apply( results, context.getElementsByTagName( selector ) );
-                                return results;
-
-                                // Speed-up: Sizzle(".CLASS")
-                            } else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) {
-                                push.apply( results, context.getElementsByClassName( m ) );
-                                return results;
-                            }
-                        }
-
-                        // QSA path
-                        if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
-                            nid = old = expando;
-                            newContext = context;
-                            newSelector = nodeType === 9 && selector;
-
-                            // qSA works strangely on Element-rooted queries
-                            // We can work around this by specifying an extra ID on the root
-                            // and working up from there (Thanks to Andrew Dupont for the technique)
-                            // IE 8 doesn't work on object elements
-                            if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
-                                groups = tokenize( selector );
-
-                                if ( (old = context.getAttribute("id")) ) {
-                                    nid = old.replace( rescape, "\\$&" );
-                                } else {
-                                    context.setAttribute( "id", nid );
-                                }
-                                nid = "[id='" + nid + "'] ";
-
-                                i = groups.length;
-                                while ( i-- ) {
-                                    groups[i] = nid + toSelector( groups[i] );
-                                }
-                                newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context;
-                                newSelector = groups.join(",");
-                            }
-
-                            if ( newSelector ) {
-                                try {
-                                    push.apply( results,
-                                            newContext.querySelectorAll( newSelector )
-                                    );
-                                    return results;
-                                } catch(qsaError) {
-                                } finally {
-                                    if ( !old ) {
-                                        context.removeAttribute("id");
-                                    }
-                                }
-                            }
-                        }
-                    }
-
-                    // All others
-                    return select( selector.replace( rtrim, "$1" ), context, results, seed );
-                }
-
-                /**
-                 * Create key-value caches of limited size
-                 * @returns {Function(string, Object)} Returns the Object data after storing it on itself with
-                 *	property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
-                 *	deleting the oldest entry
-                 */
-                function createCache() {
-                    var keys = [];
-
-                    function cache( key, value ) {
-                        // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
-                        if ( keys.push( key + " " ) > Expr.cacheLength ) {
-                            // Only keep the most recent entries
-                            delete cache[ keys.shift() ];
-                        }
-                        return (cache[ key + " " ] = value);
-                    }
-                    return cache;
-                }
-
-                /**
-                 * Mark a function for special use by Sizzle
-                 * @param {Function} fn The function to mark
-                 */
-                function markFunction( fn ) {
-                    fn[ expando ] = true;
-                    return fn;
-                }
-
-                /**
-                 * Support testing using an element
-                 * @param {Function} fn Passed the created div and expects a boolean result
-                 */
-                function assert( fn ) {
-                    var div = document.createElement("div");
-
-                    try {
-                        return !!fn( div );
-                    } catch (e) {
-                        return false;
-                    } finally {
-                        // Remove from its parent by default
-                        if ( div.parentNode ) {
-                            div.parentNode.removeChild( div );
-                        }
-                        // release memory in IE
-                        div = null;
-                    }
-                }
-
-                /**
-                 * Adds the same handler for all of the specified attrs
-                 * @param {String} attrs Pipe-separated list of attributes
-                 * @param {Function} handler The method that will be applied
-                 */
-                function addHandle( attrs, handler ) {
-                    var arr = attrs.split("|"),
-                            i = attrs.length;
-
-                    while ( i-- ) {
-                        Expr.attrHandle[ arr[i] ] = handler;
-                    }
-                }
-
-                /**
-                 * Checks document order of two siblings
-                 * @param {Element} a
-                 * @param {Element} b
-                 * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
-                 */
-                function siblingCheck( a, b ) {
-                    var cur = b && a,
-                            diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
-                                    ( ~b.sourceIndex || MAX_NEGATIVE ) -
-                                            ( ~a.sourceIndex || MAX_NEGATIVE );
-
-                    // 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;
-                            }
-                        }
-                    }
-
-                    return a ? 1 : -1;
-                }
-
-                /**
-                 * Returns a function to use in pseudos for input types
-                 * @param {String} type
-                 */
-                function createInputPseudo( type ) {
-                    return function( elem ) {
-                        var name = elem.nodeName.toLowerCase();
-                        return name === "input" && elem.type === type;
-                    };
-                }
-
-                /**
-                 * Returns a function to use in pseudos for buttons
-                 * @param {String} type
-                 */
-                function createButtonPseudo( type ) {
-                    return function( elem ) {
-                        var name = elem.nodeName.toLowerCase();
-                        return (name === "input" || name === "button") && elem.type === type;
-                    };
-                }
-
-                /**
-                 * Returns a function to use in pseudos for positionals
-                 * @param {Function} fn
-                 */
-                function createPositionalPseudo( fn ) {
-                    return markFunction(function( argument ) {
-                        argument = +argument;
-                        return markFunction(function( seed, matches ) {
-                            var j,
-                                    matchIndexes = fn( [], seed.length, argument ),
-                                    i = matchIndexes.length;
-
-                            // Match elements found at the specified indexes
-                            while ( i-- ) {
-                                if ( seed[ (j = matchIndexes[i]) ] ) {
-                                    seed[j] = !(matches[j] = seed[j]);
-                                }
-                            }
-                        });
-                    });
-                }
-
-                /**
-                 * Checks a node for validity as a Sizzle context
-                 * @param {Element|Object=} context
-                 * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
-                 */
-                function testContext( context ) {
-                    return context && typeof context.getElementsByTagName !== strundefined && context;
-                }
+try {
+	push.apply(
+		(arr = slice.call( preferredDoc.childNodes )),
+		preferredDoc.childNodes
+	);
+	// Support: Android<4.0
+	// Detect silently failing push.apply
+	arr[ preferredDoc.childNodes.length ].nodeType;
+} catch ( e ) {
+	push = { apply: arr.length ?
+
+		// Leverage slice if possible
+		function( target, els ) {
+			push_native.apply( target, slice.call(els) );
+		} :
+
+		// Support: IE<9
+		// Otherwise append directly
+		function( target, els ) {
+			var j = target.length,
+				i = 0;
+			// Can't trust NodeList.length
+			while ( (target[j++] = els[i++]) ) {}
+			target.length = j - 1;
+		}
+	};
+}
+
+function Sizzle( selector, context, results, seed ) {
+	var match, elem, m, nodeType,
+		// QSA vars
+		i, groups, old, nid, newContext, newSelector;
+
+	if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
+		setDocument( context );
+	}
+
+	context = context || document;
+	results = results || [];
+
+	if ( !selector || typeof selector !== "string" ) {
+		return results;
+	}
+
+	if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) {
+		return [];
+	}
+
+	if ( documentIsHTML && !seed ) {
+
+		// Shortcuts
+		if ( (match = rquickExpr.exec( selector )) ) {
+			// Speed-up: Sizzle("#ID")
+			if ( (m = match[1]) ) {
+				if ( nodeType === 9 ) {
+					elem = context.getElementById( m );
+					// Check parentNode to catch when Blackberry 4.6 returns
+					// nodes that are no longer in the document (jQuery #6963)
+					if ( elem && elem.parentNode ) {
+						// Handle the case where IE, Opera, and Webkit return items
+						// by name instead of ID
+						if ( elem.id === m ) {
+							results.push( elem );
+							return results;
+						}
+					} else {
+						return results;
+					}
+				} else {
+					// Context is not a document
+					if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&
+						contains( context, elem ) && elem.id === m ) {
+						results.push( elem );
+						return results;
+					}
+				}
+
+			// Speed-up: Sizzle("TAG")
+			} else if ( match[2] ) {
+				push.apply( results, context.getElementsByTagName( selector ) );
+				return results;
+
+			// Speed-up: Sizzle(".CLASS")
+			} else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) {
+				push.apply( results, context.getElementsByClassName( m ) );
+				return results;
+			}
+		}
+
+		// QSA path
+		if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
+			nid = old = expando;
+			newContext = context;
+			newSelector = nodeType === 9 && selector;
+
+			// qSA works strangely on Element-rooted queries
+			// We can work around this by specifying an extra ID on the root
+			// and working up from there (Thanks to Andrew Dupont for the technique)
+			// IE 8 doesn't work on object elements
+			if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
+				groups = tokenize( selector );
+
+				if ( (old = context.getAttribute("id")) ) {
+					nid = old.replace( rescape, "\\$&" );
+				} else {
+					context.setAttribute( "id", nid );
+				}
+				nid = "[id='" + nid + "'] ";
+
+				i = groups.length;
+				while ( i-- ) {
+					groups[i] = nid + toSelector( groups[i] );
+				}
+				newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context;
+				newSelector = groups.join(",");
+			}
+
+			if ( newSelector ) {
+				try {
+					push.apply( results,
+						newContext.querySelectorAll( newSelector )
+					);
+					return results;
+				} catch(qsaError) {
+				} finally {
+					if ( !old ) {
+						context.removeAttribute("id");
+					}
+				}
+			}
+		}
+	}
+
+	// All others
+	return select( selector.replace( rtrim, "$1" ), context, results, seed );
+}
+
+/**
+ * Create key-value caches of limited size
+ * @returns {Function(string, Object)} Returns the Object data after storing it on itself with
+ *	property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
+ *	deleting the oldest entry
+ */
+function createCache() {
+	var keys = [];
+
+	function cache( key, value ) {
+		// Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
+		if ( keys.push( key + " " ) > Expr.cacheLength ) {
+			// Only keep the most recent entries
+			delete cache[ keys.shift() ];
+		}
+		return (cache[ key + " " ] = value);
+	}
+	return cache;
+}
+
+/**
+ * Mark a function for special use by Sizzle
+ * @param {Function} fn The function to mark
+ */
+function markFunction( fn ) {
+	fn[ expando ] = true;
+	return fn;
+}
+
+/**
+ * Support testing using an element
+ * @param {Function} fn Passed the created div and expects a boolean result
+ */
+function assert( fn ) {
+	var div = document.createElement("div");
+
+	try {
+		return !!fn( div );
+	} catch (e) {
+		return false;
+	} finally {
+		// Remove from its parent by default
+		if ( div.parentNode ) {
+			div.parentNode.removeChild( div );
+		}
+		// release memory in IE
+		div = null;
+	}
+}
+
+/**
+ * Adds the same handler for all of the specified attrs
+ * @param {String} attrs Pipe-separated list of attributes
+ * @param {Function} handler The method that will be applied
+ */
+function addHandle( attrs, handler ) {
+	var arr = attrs.split("|"),
+		i = attrs.length;
+
+	while ( i-- ) {
+		Expr.attrHandle[ arr[i] ] = handler;
+	}
+}
+
+/**
+ * Checks document order of two siblings
+ * @param {Element} a
+ * @param {Element} b
+ * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
+ */
+function siblingCheck( a, b ) {
+	var cur = b && a,
+		diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
+			( ~b.sourceIndex || MAX_NEGATIVE ) -
+			( ~a.sourceIndex || MAX_NEGATIVE );
+
+	// 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;
+			}
+		}
+	}
+
+	return a ? 1 : -1;
+}
+
+/**
+ * Returns a function to use in pseudos for input types
+ * @param {String} type
+ */
+function createInputPseudo( type ) {
+	return function( elem ) {
+		var name = elem.nodeName.toLowerCase();
+		return name === "input" && elem.type === type;
+	};
+}
+
+/**
+ * Returns a function to use in pseudos for buttons
+ * @param {String} type
+ */
+function createButtonPseudo( type ) {
+	return function( elem ) {
+		var name = elem.nodeName.toLowerCase();
+		return (name === "input" || name === "button") && elem.type === type;
+	};
+}
+
+/**
+ * Returns a function to use in pseudos for positionals
+ * @param {Function} fn
+ */
+function createPositionalPseudo( fn ) {
+	return markFunction(function( argument ) {
+		argument = +argument;
+		return markFunction(function( seed, matches ) {
+			var j,
+				matchIndexes = fn( [], seed.length, argument ),
+				i = matchIndexes.length;
+
+			// Match elements found at the specified indexes
+			while ( i-- ) {
+				if ( seed[ (j = matchIndexes[i]) ] ) {
+					seed[j] = !(matches[j] = seed[j]);
+				}
+			}
+		});
+	});
+}
+
+/**
+ * Checks a node for validity as a Sizzle context
+ * @param {Element|Object=} context
+ * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
+ */
+function testContext( context ) {
+	return context && typeof context.getElementsByTagName !== strundefined && context;
+}
 
 // Expose support vars for convenience
-                support = Sizzle.support = {};
-
-                /**
-                 * Detects XML nodes
-                 * @param {Element|Object} elem An element or a document
-                 * @returns {Boolean} True iff elem is a non-HTML XML node
-                 */
-                isXML = Sizzle.isXML = function( elem ) {
-                    // documentElement is verified for cases where it doesn't yet exist
-                    // (such as loading iframes in IE - #4833)
-                    var documentElement = elem && (elem.ownerDocument || elem).documentElement;
-                    return documentElement ? documentElement.nodeName !== "HTML" : false;
-                };
-
-                /**
-                 * Sets document-related variables once based on the current document
-                 * @param {Element|Object} [doc] An element or document object to use to set the document
-                 * @returns {Object} Returns the current document
-                 */
-                setDocument = Sizzle.setDocument = function( node ) {
-                    var hasCompare,
-                            doc = node ? node.ownerDocument || node : preferredDoc,
-                            parent = doc.defaultView;
-
-                    // If no document and documentElement is available, return
-                    if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
-                        return document;
-                    }
-
-                    // Set our document
-                    document = doc;
-                    docElem = doc.documentElement;
-
-                    // Support tests
-                    documentIsHTML = !isXML( doc );
-
-                    // Support: IE>8
-                    // If iframe document is assigned to "document" variable and if iframe has been reloaded,
-                    // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936
-                    // IE6-8 do not support the defaultView property so parent will be undefined
-                    if ( parent && parent !== parent.top ) {
-                        // IE11 does not have attachEvent, so all must suffer
-                        if ( parent.addEventListener ) {
-                            parent.addEventListener( "unload", function() {
-                                setDocument();
-                            }, false );
-                        } else if ( parent.attachEvent ) {
-                            parent.attachEvent( "onunload", function() {
-                                setDocument();
-                            });
-                        }
-                    }
-
-                    /* Attributes
-                     ---------------------------------------------------------------------- */
-
-                    // Support: IE<8
-                    // Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans)
-                    support.attributes = assert(function( div ) {
-                        div.className = "i";
-                        return !div.getAttribute("className");
-                    });
-
-                    /* getElement(s)By*
-                     ---------------------------------------------------------------------- */
-
-                    // Check if getElementsByTagName("*") returns only elements
-                    support.getElementsByTagName = assert(function( div ) {
-                        div.appendChild( doc.createComment("") );
-                        return !div.getElementsByTagName("*").length;
-                    });
-
-                    // Check if getElementsByClassName can be trusted
-                    support.getElementsByClassName = rnative.test( doc.getElementsByClassName ) && assert(function( div ) {
-                        div.innerHTML = "<div class='a'></div><div class='a i'></div>";
-
-                        // Support: Safari<4
-                        // Catch class over-caching
-                        div.firstChild.className = "i";
-                        // Support: Opera<10
-                        // Catch gEBCN failure to find non-leading classes
-                        return div.getElementsByClassName("i").length === 2;
-                    });
-
-                    // Support: IE<10
-                    // Check if getElementById returns elements by name
-                    // The broken getElementById methods don't pick up programatically-set names,
-                    // so use a roundabout getElementsByName test
-                    support.getById = assert(function( div ) {
-                        docElem.appendChild( div ).id = expando;
-                        return !doc.getElementsByName || !doc.getElementsByName( expando ).length;
-                    });
-
-                    // ID find and filter
-                    if ( support.getById ) {
-                        Expr.find["ID"] = function( id, context ) {
-                            if ( typeof context.getElementById !== strundefined && documentIsHTML ) {
-                                var m = context.getElementById( id );
-                                // Check parentNode to catch when Blackberry 4.6 returns
-                                // nodes that are no longer in the document #6963
-                                return m && m.parentNode ? [m] : [];
-                            }
-                        };
-                        Expr.filter["ID"] = function( id ) {
-                            var attrId = id.replace( runescape, funescape );
-                            return function( elem ) {
-                                return elem.getAttribute("id") === attrId;
-                            };
-                        };
-                    } else {
-                        // Support: IE6/7
-                        // getElementById is not reliable as a find shortcut
-                        delete Expr.find["ID"];
-
-                        Expr.filter["ID"] =  function( id ) {
-                            var attrId = id.replace( runescape, funescape );
-                            return function( elem ) {
-                                var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id");
-                                return node && node.value === attrId;
-                            };
-                        };
-                    }
-
-                    // Tag
-                    Expr.find["TAG"] = support.getElementsByTagName ?
-                            function( tag, context ) {
-                                if ( typeof context.getElementsByTagName !== strundefined ) {
-                                    return context.getElementsByTagName( tag );
-                                }
-                            } :
-                            function( tag, context ) {
-                                var elem,
-                                        tmp = [],
-                                        i = 0,
-                                        results = context.getElementsByTagName( tag );
-
-                                // Filter out possible comments
-                                if ( tag === "*" ) {
-                                    while ( (elem = results[i++]) ) {
-                                        if ( elem.nodeType === 1 ) {
-                                            tmp.push( elem );
-                                        }
-                                    }
-
-                                    return tmp;
-                                }
-                                return results;
-                            };
-
-                    // Class
-                    Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
-                        if ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) {
-                            return context.getElementsByClassName( className );
-                        }
-                    };
-
-                    /* QSA/matchesSelector
-                     ---------------------------------------------------------------------- */
-
-                    // QSA and matchesSelector support
-
-                    // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
-                    rbuggyMatches = [];
-
-                    // qSa(:focus) reports false when true (Chrome 21)
-                    // We allow this because of a bug in IE8/9 that throws an error
-                    // whenever `document.activeElement` is accessed on an iframe
-                    // So, we allow :focus to pass through QSA all the time to avoid the IE error
-                    // See http://bugs.jquery.com/ticket/13378
-                    rbuggyQSA = [];
-
-                    if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) {
-                        // Build QSA regex
-                        // Regex strategy adopted from Diego Perini
-                        assert(function( div ) {
-                            // Select is set to empty string on purpose
-                            // This is to test IE's treatment of not explicitly
-                            // setting a boolean content attribute,
-                            // since its presence should be enough
-                            // http://bugs.jquery.com/ticket/12359
-                            div.innerHTML = "<select t=''><option selected=''></option></select>";
-
-                            // Support: IE8, Opera 10-12
-                            // Nothing should be selected when empty strings follow ^= or $= or *=
-                            if ( div.querySelectorAll("[t^='']").length ) {
-                                rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
-                            }
-
-                            // Support: IE8
-                            // Boolean attributes and "value" are not treated correctly
-                            if ( !div.querySelectorAll("[selected]").length ) {
-                                rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
-                            }
-
-                            // Webkit/Opera - :checked should return selected option elements
-                            // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
-                            // IE8 throws error here and will not see later tests
-                            if ( !div.querySelectorAll(":checked").length ) {
-                                rbuggyQSA.push(":checked");
-                            }
-                        });
-
-                        assert(function( div ) {
-                            // Support: Windows 8 Native Apps
-                            // The type and name attributes are restricted during .innerHTML assignment
-                            var input = doc.createElement("input");
-                            input.setAttribute( "type", "hidden" );
-                            div.appendChild( input ).setAttribute( "name", "D" );
-
-                            // Support: IE8
-                            // Enforce case-sensitivity of name attribute
-                            if ( div.querySelectorAll("[name=d]").length ) {
-                                rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
-                            }
-
-                            // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
-                            // IE8 throws error here and will not see later tests
-                            if ( !div.querySelectorAll(":enabled").length ) {
-                                rbuggyQSA.push( ":enabled", ":disabled" );
-                            }
-
-                            // Opera 10-11 does not throw on post-comma invalid pseudos
-                            div.querySelectorAll("*,:x");
-                            rbuggyQSA.push(",.*:");
-                        });
-                    }
-
-                    if ( (support.matchesSelector = rnative.test( (matches = docElem.webkitMatchesSelector ||
-                            docElem.mozMatchesSelector ||
-                            docElem.oMatchesSelector ||
-                            docElem.msMatchesSelector) )) ) {
-
-                        assert(function( div ) {
-                            // Check to see if it's possible to do matchesSelector
-                            // on a disconnected node (IE 9)
-                            support.disconnectedMatch = matches.call( div, "div" );
-
-                            // This should fail with an exception
-                            // Gecko does not error, returns false instead
-                            matches.call( div, "[s!='']:x" );
-                            rbuggyMatches.push( "!=", pseudos );
-                        });
-                    }
-
-                    rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
-                    rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
-
-                    /* Contains
-                     ---------------------------------------------------------------------- */
-                    hasCompare = rnative.test( docElem.compareDocumentPosition );
-
-                    // Element contains another
-                    // Purposefully does not implement inclusive descendent
-                    // As in, an element does not contain itself
-                    contains = hasCompare || rnative.test( docElem.contains ) ?
-                            function( a, b ) {
-                                var adown = a.nodeType === 9 ? a.documentElement : a,
-                                        bup = b && b.parentNode;
-                                return a === bup || !!( bup && bup.nodeType === 1 && (
-                                        adown.contains ?
-                                                adown.contains( bup ) :
-                                                a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
-                                        ));
-                            } :
-                            function( a, b ) {
-                                if ( b ) {
-                                    while ( (b = b.parentNode) ) {
-                                        if ( b === a ) {
-                                            return true;
-                                        }
-                                    }
-                                }
-                                return false;
-                            };
-
-                    /* Sorting
-                     ---------------------------------------------------------------------- */
-
-                    // Document order sorting
-                    sortOrder = hasCompare ?
-                            function( a, b ) {
-
-                                // Flag for duplicate removal
-                                if ( a === b ) {
-                                    hasDuplicate = true;
-                                    return 0;
-                                }
-
-                                // Sort on method existence if only one input has compareDocumentPosition
-                                var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
-                                if ( compare ) {
-                                    return compare;
-                                }
-
-                                // Calculate position if both inputs belong to the same document
-                                compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
-                                        a.compareDocumentPosition( b ) :
-
-                                    // Otherwise we know they are disconnected
-                                        1;
-
-                                // Disconnected nodes
-                                if ( compare & 1 ||
-                                        (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
-
-                                    // Choose the first element that is related to our preferred document
-                                    if ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
-                                        return -1;
-                                    }
-                                    if ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
-                                        return 1;
-                                    }
-
-                                    // Maintain original order
-                                    return sortInput ?
-                                            ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
-                                            0;
-                                }
-
-                                return compare & 4 ? -1 : 1;
-                            } :
-                            function( a, b ) {
-                                // Exit early if the nodes are identical
-                                if ( a === b ) {
-                                    hasDuplicate = true;
-                                    return 0;
-                                }
-
-                                var cur,
-                                        i = 0,
-                                        aup = a.parentNode,
-                                        bup = b.parentNode,
-                                        ap = [ a ],
-                                        bp = [ b ];
-
-                                // Parentless nodes are either documents or disconnected
-                                if ( !aup || !bup ) {
-                                    return a === doc ? -1 :
-                                            b === doc ? 1 :
-                                                    aup ? -1 :
-                                                            bup ? 1 :
-                                                                    sortInput ?
-                                                                            ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
-                                                                            0;
-
-                                    // If the nodes are siblings, we can do a quick check
-                                } else if ( aup === bup ) {
-                                    return siblingCheck( a, b );
-                                }
-
-                                // Otherwise we need full lists of their ancestors for comparison
-                                cur = a;
-                                while ( (cur = cur.parentNode) ) {
-                                    ap.unshift( cur );
-                                }
-                                cur = b;
-                                while ( (cur = cur.parentNode) ) {
-                                    bp.unshift( cur );
-                                }
-
-                                // Walk down the tree looking for a discrepancy
-                                while ( ap[i] === bp[i] ) {
-                                    i++;
-                                }
-
-                                return i ?
-                                    // Do a sibling check if the nodes have a common ancestor
-                                        siblingCheck( ap[i], bp[i] ) :
-
-                                    // Otherwise nodes in our document sort first
-                                        ap[i] === preferredDoc ? -1 :
-                                                bp[i] === preferredDoc ? 1 :
-                                                        0;
-                            };
-
-                    return doc;
-                };
-
-                Sizzle.matches = function( expr, elements ) {
-                    return Sizzle( expr, null, null, elements );
-                };
-
-                Sizzle.matchesSelector = function( elem, expr ) {
-                    // Set document vars if needed
-                    if ( ( elem.ownerDocument || elem ) !== document ) {
-                        setDocument( elem );
-                    }
-
-                    // Make sure that attribute selectors are quoted
-                    expr = expr.replace( rattributeQuotes, "='$1']" );
-
-                    if ( support.matchesSelector && documentIsHTML &&
-                            ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
-                            ( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {
-
-                        try {
-                            var ret = matches.call( elem, expr );
-
-                            // IE 9's matchesSelector returns false on disconnected nodes
-                            if ( ret || support.disconnectedMatch ||
-                                // As well, disconnected nodes are said to be in a document
-                                // fragment in IE 9
-                                    elem.document && elem.document.nodeType !== 11 ) {
-                                return ret;
-                            }
-                        } catch(e) {}
-                    }
-
-                    return Sizzle( expr, document, null, [elem] ).length > 0;
-                };
-
-                Sizzle.contains = function( context, elem ) {
-                    // Set document vars if needed
-                    if ( ( context.ownerDocument || context ) !== document ) {
-                        setDocument( context );
-                    }
-                    return contains( context, elem );
-                };
-
-                Siz

<TRUNCATED>

[2/3] update jQuery to 1.11.1, update RequireJS to 2.1.11

Posted by jk...@apache.org.
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/5b12cea9/tapestry-core/src/main/resources/META-INF/assets/tapestry5/jquery.js
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/resources/META-INF/assets/tapestry5/jquery.js b/tapestry-core/src/main/resources/META-INF/assets/tapestry5/jquery.js
index 4c7d42c..d4b67f7 100644
--- a/tapestry-core/src/main/resources/META-INF/assets/tapestry5/jquery.js
+++ b/tapestry-core/src/main/resources/META-INF/assets/tapestry5/jquery.js
@@ -1,5 +1,5 @@
 /*!
- * jQuery JavaScript Library v1.11.0
+ * jQuery JavaScript Library v1.11.1
  * http://jquery.com/
  *
  * Includes Sizzle.js
@@ -9,30 +9,30 @@
  * Released under the MIT license
  * http://jquery.org/license
  *
- * Date: 2014-01-23T21:02Z
+ * Date: 2014-05-01T17:42Z
  */
 
 (function( global, factory ) {
 
-    if ( typeof module === "object" && typeof module.exports === "object" ) {
-        // For CommonJS and CommonJS-like environments where a proper window is present,
-        // execute the factory and get jQuery
-        // For environments that do not inherently posses a window with a document
-        // (such as Node.js), expose a jQuery-making factory as module.exports
-        // This accentuates the need for the creation of a real window
-        // e.g. var jQuery = require("jquery")(window);
-        // See ticket #14549 for more info
-        module.exports = global.document ?
-                factory( global, true ) :
-                function( w ) {
-                    if ( !w.document ) {
-                        throw new Error( "jQuery requires a window with a document" );
-                    }
-                    return factory( w );
-                };
-    } else {
-        factory( global );
-    }
+	if ( typeof module === "object" && typeof module.exports === "object" ) {
+		// For CommonJS and CommonJS-like environments where a proper window is present,
+		// execute the factory and get jQuery
+		// For environments that do not inherently posses a window with a document
+		// (such as Node.js), expose a jQuery-making factory as module.exports
+		// This accentuates the need for the creation of a real window
+		// e.g. var jQuery = require("jquery")(window);
+		// See ticket #14549 for more info
+		module.exports = global.document ?
+			factory( global, true ) :
+			function( w ) {
+				if ( !w.document ) {
+					throw new Error( "jQuery requires a window with a document" );
+				}
+				return factory( w );
+			};
+	} else {
+		factory( global );
+	}
 
 // Pass this if window is not defined yet
 }(typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
@@ -43,8423 +43,8388 @@
 // Support: Firefox 18+
 //
 
-    var deletedIds = [];
+var deletedIds = [];
 
-    var slice = deletedIds.slice;
+var slice = deletedIds.slice;
 
-    var concat = deletedIds.concat;
+var concat = deletedIds.concat;
 
-    var push = deletedIds.push;
+var push = deletedIds.push;
 
-    var indexOf = deletedIds.indexOf;
+var indexOf = deletedIds.indexOf;
 
-    var class2type = {};
+var class2type = {};
 
-    var toString = class2type.toString;
+var toString = class2type.toString;
 
-    var hasOwn = class2type.hasOwnProperty;
+var hasOwn = class2type.hasOwnProperty;
 
-    var trim = "".trim;
+var support = {};
 
-    var support = {};
 
 
+var
+	version = "1.11.1",
 
-    var
-            version = "1.11.0",
+	// Define a local copy of jQuery
+	jQuery = function( selector, context ) {
+		// The jQuery object is actually just the init constructor 'enhanced'
+		// Need init if jQuery is called (just allow error to be thrown if not included)
+		return new jQuery.fn.init( selector, context );
+	},
 
-    // Define a local copy of jQuery
-            jQuery = function( selector, context ) {
-                // The jQuery object is actually just the init constructor 'enhanced'
-                // Need init if jQuery is called (just allow error to be thrown if not included)
-                return new jQuery.fn.init( selector, context );
-            },
+	// Support: Android<4.1, IE<9
+	// Make sure we trim BOM and NBSP
+	rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
 
-    // Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE)
-            rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
+	// Matches dashed string for camelizing
+	rmsPrefix = /^-ms-/,
+	rdashAlpha = /-([\da-z])/gi,
 
-    // Matches dashed string for camelizing
-            rmsPrefix = /^-ms-/,
-            rdashAlpha = /-([\da-z])/gi,
+	// Used by jQuery.camelCase as callback to replace()
+	fcamelCase = function( all, letter ) {
+		return letter.toUpperCase();
+	};
 
-    // Used by jQuery.camelCase as callback to replace()
-            fcamelCase = function( all, letter ) {
-                return letter.toUpperCase();
-            };
+jQuery.fn = jQuery.prototype = {
+	// The current version of jQuery being used
+	jquery: version,
 
-    jQuery.fn = jQuery.prototype = {
-        // The current version of jQuery being used
-        jquery: version,
+	constructor: jQuery,
 
-        constructor: jQuery,
+	// Start with an empty selector
+	selector: "",
 
-        // Start with an empty selector
-        selector: "",
+	// The default length of a jQuery object is 0
+	length: 0,
 
-        // The default length of a jQuery object is 0
-        length: 0,
+	toArray: function() {
+		return slice.call( this );
+	},
 
-        toArray: function() {
-            return slice.call( this );
-        },
+	// Get the Nth element in the matched element set OR
+	// Get the whole matched element set as a clean array
+	get: function( num ) {
+		return num != null ?
 
-        // Get the Nth element in the matched element set OR
-        // Get the whole matched element set as a clean array
-        get: function( num ) {
-            return num != null ?
+			// Return just the one element from the set
+			( num < 0 ? this[ num + this.length ] : this[ num ] ) :
 
-                // Return a 'clean' array
-                    ( num < 0 ? this[ num + this.length ] : this[ num ] ) :
+			// Return all the elements in a clean array
+			slice.call( this );
+	},
 
-                // Return just the object
-                    slice.call( this );
-        },
+	// Take an array of elements and push it onto the stack
+	// (returning the new matched element set)
+	pushStack: function( elems ) {
 
-        // Take an array of elements and push it onto the stack
-        // (returning the new matched element set)
-        pushStack: function( elems ) {
+		// Build a new jQuery matched element set
+		var ret = jQuery.merge( this.constructor(), elems );
 
-            // Build a new jQuery matched element set
-            var ret = jQuery.merge( this.constructor(), elems );
+		// Add the old object onto the stack (as a reference)
+		ret.prevObject = this;
+		ret.context = this.context;
 
-            // Add the old object onto the stack (as a reference)
-            ret.prevObject = this;
-            ret.context = this.context;
+		// Return the newly-formed element set
+		return ret;
+	},
 
-            // Return the newly-formed element set
-            return ret;
-        },
+	// Execute a callback for every element in the matched set.
+	// (You can seed the arguments with an array of args, but this is
+	// only used internally.)
+	each: function( callback, args ) {
+		return jQuery.each( this, callback, args );
+	},
 
-        // Execute a callback for every element in the matched set.
-        // (You can seed the arguments with an array of args, but this is
-        // only used internally.)
-        each: function( callback, args ) {
-            return jQuery.each( this, callback, args );
-        },
+	map: function( callback ) {
+		return this.pushStack( jQuery.map(this, function( elem, i ) {
+			return callback.call( elem, i, elem );
+		}));
+	},
 
-        map: function( callback ) {
-            return this.pushStack( jQuery.map(this, function( elem, i ) {
-                return callback.call( elem, i, elem );
-            }));
-        },
-
-        slice: function() {
-            return this.pushStack( slice.apply( this, arguments ) );
-        },
-
-        first: function() {
-            return this.eq( 0 );
-        },
-
-        last: function() {
-            return this.eq( -1 );
-        },
-
-        eq: function( i ) {
-            var len = this.length,
-                    j = +i + ( i < 0 ? len : 0 );
-            return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );
-        },
-
-        end: function() {
-            return this.prevObject || this.constructor(null);
-        },
-
-        // For internal use only.
-        // Behaves like an Array's method, not like a jQuery method.
-        push: push,
-        sort: deletedIds.sort,
-        splice: deletedIds.splice
-    };
-
-    jQuery.extend = jQuery.fn.extend = function() {
-        var src, copyIsArray, copy, name, options, clone,
-                target = arguments[0] || {},
-                i = 1,
-                length = arguments.length,
-                deep = false;
-
-        // Handle a deep copy situation
-        if ( typeof target === "boolean" ) {
-            deep = target;
-
-            // skip the boolean and the target
-            target = arguments[ i ] || {};
-            i++;
-        }
-
-        // Handle case when target is a string or something (possible in deep copy)
-        if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
-            target = {};
-        }
-
-        // extend jQuery itself if only one argument is passed
-        if ( i === length ) {
-            target = this;
-            i--;
-        }
-
-        for ( ; i < length; i++ ) {
-            // Only deal with non-null/undefined values
-            if ( (options = arguments[ i ]) != null ) {
-                // Extend the base object
-                for ( name in options ) {
-                    src = target[ name ];
-                    copy = options[ name ];
-
-                    // Prevent never-ending loop
-                    if ( target === copy ) {
-                        continue;
-                    }
-
-                    // Recurse if we're merging plain objects or arrays
-                    if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
-                        if ( copyIsArray ) {
-                            copyIsArray = false;
-                            clone = src && jQuery.isArray(src) ? src : [];
-
-                        } else {
-                            clone = src && jQuery.isPlainObject(src) ? src : {};
-                        }
-
-                        // Never move original objects, clone them
-                        target[ name ] = jQuery.extend( deep, clone, copy );
-
-                        // Don't bring in undefined values
-                    } else if ( copy !== undefined ) {
-                        target[ name ] = copy;
-                    }
-                }
-            }
-        }
-
-        // Return the modified object
-        return target;
-    };
-
-    jQuery.extend({
-        // Unique for each copy of jQuery on the page
-        expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
-
-        // Assume jQuery is ready without the ready module
-        isReady: true,
-
-        error: function( msg ) {
-            throw new Error( msg );
-        },
-
-        noop: function() {},
-
-        // See test/unit/core.js for details concerning isFunction.
-        // Since version 1.3, DOM methods and functions like alert
-        // aren't supported. They return false on IE (#2968).
-        isFunction: function( obj ) {
-            return jQuery.type(obj) === "function";
-        },
-
-        isArray: Array.isArray || function( obj ) {
-            return jQuery.type(obj) === "array";
-        },
-
-        isWindow: function( obj ) {
-            /* jshint eqeqeq: false */
-            return obj != null && obj == obj.window;
-        },
-
-        isNumeric: function( obj ) {
-            // parseFloat NaNs numeric-cast false positives (null|true|false|"")
-            // ...but misinterprets leading-number strings, particularly hex literals ("0x...")
-            // subtraction forces infinities to NaN
-            return obj - parseFloat( obj ) >= 0;
-        },
-
-        isEmptyObject: function( obj ) {
-            var name;
-            for ( name in obj ) {
-                return false;
-            }
-            return true;
-        },
-
-        isPlainObject: function( obj ) {
-            var key;
-
-            // Must be an Object.
-            // Because of IE, we also have to check the presence of the constructor property.
-            // Make sure that DOM nodes and window objects don't pass through, as well
-            if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
-                return false;
-            }
-
-            try {
-                // Not own constructor property must be Object
-                if ( obj.constructor &&
-                        !hasOwn.call(obj, "constructor") &&
-                        !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
-                    return false;
-                }
-            } catch ( e ) {
-                // IE8,9 Will throw exceptions on certain host objects #9897
-                return false;
-            }
-
-            // Support: IE<9
-            // Handle iteration over inherited properties before own properties.
-            if ( support.ownLast ) {
-                for ( key in obj ) {
-                    return hasOwn.call( obj, key );
-                }
-            }
-
-            // Own properties are enumerated firstly, so to speed up,
-            // if last one is own, then all properties are own.
-            for ( key in obj ) {}
-
-            return key === undefined || hasOwn.call( obj, key );
-        },
-
-        type: function( obj ) {
-            if ( obj == null ) {
-                return obj + "";
-            }
-            return typeof obj === "object" || typeof obj === "function" ?
-                    class2type[ toString.call(obj) ] || "object" :
-                    typeof obj;
-        },
-
-        // Evaluates a script in a global context
-        // Workarounds based on findings by Jim Driscoll
-        // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context
-        globalEval: function( data ) {
-            if ( data && jQuery.trim( data ) ) {
-                // We use execScript on Internet Explorer
-                // We use an anonymous function so that context is window
-                // rather than jQuery in Firefox
-                ( window.execScript || function( data ) {
-                    window[ "eval" ].call( window, data );
-                } )( data );
-            }
-        },
-
-        // Convert dashed to camelCase; used by the css and data modules
-        // Microsoft forgot to hump their vendor prefix (#9572)
-        camelCase: function( string ) {
-            return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
-        },
-
-        nodeName: function( elem, name ) {
-            return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
-        },
-
-        // args is for internal usage only
-        each: function( obj, callback, args ) {
-            var value,
-                    i = 0,
-                    length = obj.length,
-                    isArray = isArraylike( obj );
-
-            if ( args ) {
-                if ( isArray ) {
-                    for ( ; i < length; i++ ) {
-                        value = callback.apply( obj[ i ], args );
-
-                        if ( value === false ) {
-                            break;
-                        }
-                    }
-                } else {
-                    for ( i in obj ) {
-                        value = callback.apply( obj[ i ], args );
-
-                        if ( value === false ) {
-                            break;
-                        }
-                    }
-                }
-
-                // A special, fast, case for the most common use of each
-            } else {
-                if ( isArray ) {
-                    for ( ; i < length; i++ ) {
-                        value = callback.call( obj[ i ], i, obj[ i ] );
-
-                        if ( value === false ) {
-                            break;
-                        }
-                    }
-                } else {
-                    for ( i in obj ) {
-                        value = callback.call( obj[ i ], i, obj[ i ] );
-
-                        if ( value === false ) {
-                            break;
-                        }
-                    }
-                }
-            }
-
-            return obj;
-        },
-
-        // Use native String.trim function wherever possible
-        trim: trim && !trim.call("\uFEFF\xA0") ?
-                function( text ) {
-                    return text == null ?
-                            "" :
-                            trim.call( text );
-                } :
-
-            // Otherwise use our own trimming functionality
-                function( text ) {
-                    return text == null ?
-                            "" :
-                            ( text + "" ).replace( rtrim, "" );
-                },
-
-        // results is for internal usage only
-        makeArray: function( arr, results ) {
-            var ret = results || [];
-
-            if ( arr != null ) {
-                if ( isArraylike( Object(arr) ) ) {
-                    jQuery.merge( ret,
-                            typeof arr === "string" ?
-                                    [ arr ] : arr
-                    );
-                } else {
-                    push.call( ret, arr );
-                }
-            }
-
-            return ret;
-        },
-
-        inArray: function( elem, arr, i ) {
-            var len;
-
-            if ( arr ) {
-                if ( indexOf ) {
-                    return indexOf.call( arr, elem, i );
-                }
-
-                len = arr.length;
-                i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;
-
-                for ( ; i < len; i++ ) {
-                    // Skip accessing in sparse arrays
-                    if ( i in arr && arr[ i ] === elem ) {
-                        return i;
-                    }
-                }
-            }
-
-            return -1;
-        },
-
-        merge: function( first, second ) {
-            var len = +second.length,
-                    j = 0,
-                    i = first.length;
-
-            while ( j < len ) {
-                first[ i++ ] = second[ j++ ];
-            }
-
-            // Support: IE<9
-            // Workaround casting of .length to NaN on otherwise arraylike objects (e.g., NodeLists)
-            if ( len !== len ) {
-                while ( second[j] !== undefined ) {
-                    first[ i++ ] = second[ j++ ];
-                }
-            }
-
-            first.length = i;
-
-            return first;
-        },
-
-        grep: function( elems, callback, invert ) {
-            var callbackInverse,
-                    matches = [],
-                    i = 0,
-                    length = elems.length,
-                    callbackExpect = !invert;
-
-            // Go through the array, only saving the items
-            // that pass the validator function
-            for ( ; i < length; i++ ) {
-                callbackInverse = !callback( elems[ i ], i );
-                if ( callbackInverse !== callbackExpect ) {
-                    matches.push( elems[ i ] );
-                }
-            }
-
-            return matches;
-        },
-
-        // arg is for internal usage only
-        map: function( elems, callback, arg ) {
-            var value,
-                    i = 0,
-                    length = elems.length,
-                    isArray = isArraylike( elems ),
-                    ret = [];
-
-            // Go through the array, translating each of the items to their new values
-            if ( isArray ) {
-                for ( ; i < length; i++ ) {
-                    value = callback( elems[ i ], i, arg );
-
-                    if ( value != null ) {
-                        ret.push( value );
-                    }
-                }
-
-                // Go through every key on the object,
-            } else {
-                for ( i in elems ) {
-                    value = callback( elems[ i ], i, arg );
-
-                    if ( value != null ) {
-                        ret.push( value );
-                    }
-                }
-            }
-
-            // Flatten any nested arrays
-            return concat.apply( [], ret );
-        },
-
-        // A global GUID counter for objects
-        guid: 1,
-
-        // Bind a function to a context, optionally partially applying any
-        // arguments.
-        proxy: function( fn, context ) {
-            var args, proxy, tmp;
-
-            if ( typeof context === "string" ) {
-                tmp = fn[ context ];
-                context = fn;
-                fn = tmp;
-            }
-
-            // Quick check to determine if target is callable, in the spec
-            // this throws a TypeError, but we will just return undefined.
-            if ( !jQuery.isFunction( fn ) ) {
-                return undefined;
-            }
-
-            // Simulated bind
-            args = slice.call( arguments, 2 );
-            proxy = function() {
-                return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
-            };
-
-            // Set the guid of unique handler to the same of original handler, so it can be removed
-            proxy.guid = fn.guid = fn.guid || jQuery.guid++;
-
-            return proxy;
-        },
-
-        now: function() {
-            return +( new Date() );
-        },
-
-        // jQuery.support is not used in Core but other projects attach their
-        // properties to it so it needs to exist.
-        support: support
-    });
+	slice: function() {
+		return this.pushStack( slice.apply( this, arguments ) );
+	},
+
+	first: function() {
+		return this.eq( 0 );
+	},
+
+	last: function() {
+		return this.eq( -1 );
+	},
+
+	eq: function( i ) {
+		var len = this.length,
+			j = +i + ( i < 0 ? len : 0 );
+		return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );
+	},
+
+	end: function() {
+		return this.prevObject || this.constructor(null);
+	},
+
+	// For internal use only.
+	// Behaves like an Array's method, not like a jQuery method.
+	push: push,
+	sort: deletedIds.sort,
+	splice: deletedIds.splice
+};
+
+jQuery.extend = jQuery.fn.extend = function() {
+	var src, copyIsArray, copy, name, options, clone,
+		target = arguments[0] || {},
+		i = 1,
+		length = arguments.length,
+		deep = false;
+
+	// Handle a deep copy situation
+	if ( typeof target === "boolean" ) {
+		deep = target;
+
+		// skip the boolean and the target
+		target = arguments[ i ] || {};
+		i++;
+	}
+
+	// Handle case when target is a string or something (possible in deep copy)
+	if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
+		target = {};
+	}
+
+	// extend jQuery itself if only one argument is passed
+	if ( i === length ) {
+		target = this;
+		i--;
+	}
+
+	for ( ; i < length; i++ ) {
+		// Only deal with non-null/undefined values
+		if ( (options = arguments[ i ]) != null ) {
+			// Extend the base object
+			for ( name in options ) {
+				src = target[ name ];
+				copy = options[ name ];
+
+				// Prevent never-ending loop
+				if ( target === copy ) {
+					continue;
+				}
+
+				// Recurse if we're merging plain objects or arrays
+				if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
+					if ( copyIsArray ) {
+						copyIsArray = false;
+						clone = src && jQuery.isArray(src) ? src : [];
+
+					} else {
+						clone = src && jQuery.isPlainObject(src) ? src : {};
+					}
+
+					// Never move original objects, clone them
+					target[ name ] = jQuery.extend( deep, clone, copy );
+
+				// Don't bring in undefined values
+				} else if ( copy !== undefined ) {
+					target[ name ] = copy;
+				}
+			}
+		}
+	}
+
+	// Return the modified object
+	return target;
+};
+
+jQuery.extend({
+	// Unique for each copy of jQuery on the page
+	expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
+
+	// Assume jQuery is ready without the ready module
+	isReady: true,
+
+	error: function( msg ) {
+		throw new Error( msg );
+	},
+
+	noop: function() {},
+
+	// See test/unit/core.js for details concerning isFunction.
+	// Since version 1.3, DOM methods and functions like alert
+	// aren't supported. They return false on IE (#2968).
+	isFunction: function( obj ) {
+		return jQuery.type(obj) === "function";
+	},
+
+	isArray: Array.isArray || function( obj ) {
+		return jQuery.type(obj) === "array";
+	},
+
+	isWindow: function( obj ) {
+		/* jshint eqeqeq: false */
+		return obj != null && obj == obj.window;
+	},
+
+	isNumeric: function( obj ) {
+		// parseFloat NaNs numeric-cast false positives (null|true|false|"")
+		// ...but misinterprets leading-number strings, particularly hex literals ("0x...")
+		// subtraction forces infinities to NaN
+		return !jQuery.isArray( obj ) && obj - parseFloat( obj ) >= 0;
+	},
+
+	isEmptyObject: function( obj ) {
+		var name;
+		for ( name in obj ) {
+			return false;
+		}
+		return true;
+	},
+
+	isPlainObject: function( obj ) {
+		var key;
+
+		// Must be an Object.
+		// Because of IE, we also have to check the presence of the constructor property.
+		// Make sure that DOM nodes and window objects don't pass through, as well
+		if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
+			return false;
+		}
+
+		try {
+			// Not own constructor property must be Object
+			if ( obj.constructor &&
+				!hasOwn.call(obj, "constructor") &&
+				!hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
+				return false;
+			}
+		} catch ( e ) {
+			// IE8,9 Will throw exceptions on certain host objects #9897
+			return false;
+		}
+
+		// Support: IE<9
+		// Handle iteration over inherited properties before own properties.
+		if ( support.ownLast ) {
+			for ( key in obj ) {
+				return hasOwn.call( obj, key );
+			}
+		}
+
+		// Own properties are enumerated firstly, so to speed up,
+		// if last one is own, then all properties are own.
+		for ( key in obj ) {}
+
+		return key === undefined || hasOwn.call( obj, key );
+	},
+
+	type: function( obj ) {
+		if ( obj == null ) {
+			return obj + "";
+		}
+		return typeof obj === "object" || typeof obj === "function" ?
+			class2type[ toString.call(obj) ] || "object" :
+			typeof obj;
+	},
+
+	// Evaluates a script in a global context
+	// Workarounds based on findings by Jim Driscoll
+	// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context
+	globalEval: function( data ) {
+		if ( data && jQuery.trim( data ) ) {
+			// We use execScript on Internet Explorer
+			// We use an anonymous function so that context is window
+			// rather than jQuery in Firefox
+			( window.execScript || function( data ) {
+				window[ "eval" ].call( window, data );
+			} )( data );
+		}
+	},
+
+	// Convert dashed to camelCase; used by the css and data modules
+	// Microsoft forgot to hump their vendor prefix (#9572)
+	camelCase: function( string ) {
+		return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
+	},
+
+	nodeName: function( elem, name ) {
+		return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
+	},
+
+	// args is for internal usage only
+	each: function( obj, callback, args ) {
+		var value,
+			i = 0,
+			length = obj.length,
+			isArray = isArraylike( obj );
+
+		if ( args ) {
+			if ( isArray ) {
+				for ( ; i < length; i++ ) {
+					value = callback.apply( obj[ i ], args );
+
+					if ( value === false ) {
+						break;
+					}
+				}
+			} else {
+				for ( i in obj ) {
+					value = callback.apply( obj[ i ], args );
+
+					if ( value === false ) {
+						break;
+					}
+				}
+			}
+
+		// A special, fast, case for the most common use of each
+		} else {
+			if ( isArray ) {
+				for ( ; i < length; i++ ) {
+					value = callback.call( obj[ i ], i, obj[ i ] );
+
+					if ( value === false ) {
+						break;
+					}
+				}
+			} else {
+				for ( i in obj ) {
+					value = callback.call( obj[ i ], i, obj[ i ] );
+
+					if ( value === false ) {
+						break;
+					}
+				}
+			}
+		}
+
+		return obj;
+	},
+
+	// Support: Android<4.1, IE<9
+	trim: function( text ) {
+		return text == null ?
+			"" :
+			( text + "" ).replace( rtrim, "" );
+	},
+
+	// results is for internal usage only
+	makeArray: function( arr, results ) {
+		var ret = results || [];
+
+		if ( arr != null ) {
+			if ( isArraylike( Object(arr) ) ) {
+				jQuery.merge( ret,
+					typeof arr === "string" ?
+					[ arr ] : arr
+				);
+			} else {
+				push.call( ret, arr );
+			}
+		}
+
+		return ret;
+	},
+
+	inArray: function( elem, arr, i ) {
+		var len;
+
+		if ( arr ) {
+			if ( indexOf ) {
+				return indexOf.call( arr, elem, i );
+			}
+
+			len = arr.length;
+			i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;
+
+			for ( ; i < len; i++ ) {
+				// Skip accessing in sparse arrays
+				if ( i in arr && arr[ i ] === elem ) {
+					return i;
+				}
+			}
+		}
+
+		return -1;
+	},
+
+	merge: function( first, second ) {
+		var len = +second.length,
+			j = 0,
+			i = first.length;
+
+		while ( j < len ) {
+			first[ i++ ] = second[ j++ ];
+		}
+
+		// Support: IE<9
+		// Workaround casting of .length to NaN on otherwise arraylike objects (e.g., NodeLists)
+		if ( len !== len ) {
+			while ( second[j] !== undefined ) {
+				first[ i++ ] = second[ j++ ];
+			}
+		}
+
+		first.length = i;
+
+		return first;
+	},
+
+	grep: function( elems, callback, invert ) {
+		var callbackInverse,
+			matches = [],
+			i = 0,
+			length = elems.length,
+			callbackExpect = !invert;
+
+		// Go through the array, only saving the items
+		// that pass the validator function
+		for ( ; i < length; i++ ) {
+			callbackInverse = !callback( elems[ i ], i );
+			if ( callbackInverse !== callbackExpect ) {
+				matches.push( elems[ i ] );
+			}
+		}
+
+		return matches;
+	},
+
+	// arg is for internal usage only
+	map: function( elems, callback, arg ) {
+		var value,
+			i = 0,
+			length = elems.length,
+			isArray = isArraylike( elems ),
+			ret = [];
+
+		// Go through the array, translating each of the items to their new values
+		if ( isArray ) {
+			for ( ; i < length; i++ ) {
+				value = callback( elems[ i ], i, arg );
+
+				if ( value != null ) {
+					ret.push( value );
+				}
+			}
+
+		// Go through every key on the object,
+		} else {
+			for ( i in elems ) {
+				value = callback( elems[ i ], i, arg );
+
+				if ( value != null ) {
+					ret.push( value );
+				}
+			}
+		}
+
+		// Flatten any nested arrays
+		return concat.apply( [], ret );
+	},
+
+	// A global GUID counter for objects
+	guid: 1,
+
+	// Bind a function to a context, optionally partially applying any
+	// arguments.
+	proxy: function( fn, context ) {
+		var args, proxy, tmp;
+
+		if ( typeof context === "string" ) {
+			tmp = fn[ context ];
+			context = fn;
+			fn = tmp;
+		}
+
+		// Quick check to determine if target is callable, in the spec
+		// this throws a TypeError, but we will just return undefined.
+		if ( !jQuery.isFunction( fn ) ) {
+			return undefined;
+		}
+
+		// Simulated bind
+		args = slice.call( arguments, 2 );
+		proxy = function() {
+			return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
+		};
+
+		// Set the guid of unique handler to the same of original handler, so it can be removed
+		proxy.guid = fn.guid = fn.guid || jQuery.guid++;
+
+		return proxy;
+	},
+
+	now: function() {
+		return +( new Date() );
+	},
+
+	// jQuery.support is not used in Core but other projects attach their
+	// properties to it so it needs to exist.
+	support: support
+});
 
 // Populate the class2type map
-    jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {
-        class2type[ "[object " + name + "]" ] = name.toLowerCase();
-    });
-
-    function isArraylike( obj ) {
-        var length = obj.length,
-                type = jQuery.type( obj );
-
-        if ( type === "function" || jQuery.isWindow( obj ) ) {
-            return false;
-        }
-
-        if ( obj.nodeType === 1 && length ) {
-            return true;
-        }
-
-        return type === "array" || length === 0 ||
-                typeof length === "number" && length > 0 && ( length - 1 ) in obj;
-    }
-    var Sizzle =
-        /*!
-         * Sizzle CSS Selector Engine v1.10.16
-         * http://sizzlejs.com/
-         *
-         * Copyright 2013 jQuery Foundation, Inc. and other contributors
-         * Released under the MIT license
-         * http://jquery.org/license
-         *
-         * Date: 2014-01-13
-         */
-            (function( window ) {
-
-                var i,
-                        support,
-                        Expr,
-                        getText,
-                        isXML,
-                        compile,
-                        outermostContext,
-                        sortInput,
-                        hasDuplicate,
-
-                // Local document vars
-                        setDocument,
-                        document,
-                        docElem,
-                        documentIsHTML,
-                        rbuggyQSA,
-                        rbuggyMatches,
-                        matches,
-                        contains,
-
-                // Instance-specific data
-                        expando = "sizzle" + -(new Date()),
-                        preferredDoc = window.document,
-                        dirruns = 0,
-                        done = 0,
-                        classCache = createCache(),
-                        tokenCache = createCache(),
-                        compilerCache = createCache(),
-                        sortOrder = function( a, b ) {
-                            if ( a === b ) {
-                                hasDuplicate = true;
-                            }
-                            return 0;
-                        },
-
-                // General-purpose constants
-                        strundefined = typeof undefined,
-                        MAX_NEGATIVE = 1 << 31,
-
-                // Instance methods
-                        hasOwn = ({}).hasOwnProperty,
-                        arr = [],
-                        pop = arr.pop,
-                        push_native = arr.push,
-                        push = arr.push,
-                        slice = arr.slice,
-                // Use a stripped-down indexOf if we can't use a native one
-                        indexOf = arr.indexOf || function( elem ) {
-                            var i = 0,
-                                    len = this.length;
-                            for ( ; i < len; i++ ) {
-                                if ( this[i] === elem ) {
-                                    return i;
-                                }
-                            }
-                            return -1;
-                        },
-
-                        booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
-
-                // Regular expressions
-
-                // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace
-                        whitespace = "[\\x20\\t\\r\\n\\f]",
-                // http://www.w3.org/TR/css3-syntax/#characters
-                        characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
-
-                // Loosely modeled on CSS identifier characters
-                // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors
-                // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
-                        identifier = characterEncoding.replace( "w", "w#" ),
-
-                // Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors
-                        attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace +
-                                "*(?:([*^$|!~]?=)" + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]",
-
-                // Prefer arguments quoted,
-                //   then not containing pseudos/brackets,
-                //   then attribute selectors/non-parenthetical expressions,
-                //   then anything else
-                // These preferences are here to reduce the number of selectors
-                //   needing tokenize in the PSEUDO preFilter
-                        pseudos = ":(" + characterEncoding + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + attributes.replace( 3, 8 ) + ")*)|.*)\\)|)",
-
-                // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
-                        rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
-
-                        rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
-                        rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
-
-                        rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ),
-
-                        rpseudo = new RegExp( pseudos ),
-                        ridentifier = new RegExp( "^" + identifier + "$" ),
-
-                        matchExpr = {
-                            "ID": new RegExp( "^#(" + characterEncoding + ")" ),
-                            "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ),
-                            "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ),
-                            "ATTR": new RegExp( "^" + attributes ),
-                            "PSEUDO": new RegExp( "^" + pseudos ),
-                            "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
-                                    "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
-                                    "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
-                            "bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
-                            // For use in libraries implementing .is()
-                            // We use this for POS matching in `select`
-                            "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
-                                    whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
-                        },
-
-                        rinputs = /^(?:input|select|textarea|button)$/i,
-                        rheader = /^h\d$/i,
-
-                        rnative = /^[^{]+\{\s*\[native \w/,
-
-                // Easily-parseable/retrievable ID or TAG or CLASS selectors
-                        rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
-
-                        rsibling = /[+~]/,
-                        rescape = /'|\\/g,
-
-                // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
-                        runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
-                        funescape = function( _, escaped, escapedWhitespace ) {
-                            var high = "0x" + escaped - 0x10000;
-                            // NaN means non-codepoint
-                            // Support: Firefox
-                            // Workaround erroneous numeric interpretation of +"0x"
-                            return high !== high || escapedWhitespace ?
-                                    escaped :
-                                    high < 0 ?
-                                        // BMP codepoint
-                                            String.fromCharCode( high + 0x10000 ) :
-                                        // Supplemental Plane codepoint (surrogate pair)
-                                            String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
-                        };
+jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {
+	class2type[ "[object " + name + "]" ] = name.toLowerCase();
+});
+
+function isArraylike( obj ) {
+	var length = obj.length,
+		type = jQuery.type( obj );
+
+	if ( type === "function" || jQuery.isWindow( obj ) ) {
+		return false;
+	}
+
+	if ( obj.nodeType === 1 && length ) {
+		return true;
+	}
+
+	return type === "array" || length === 0 ||
+		typeof length === "number" && length > 0 && ( length - 1 ) in obj;
+}
+var Sizzle =
+/*!
+ * Sizzle CSS Selector Engine v1.10.19
+ * http://sizzlejs.com/
+ *
+ * Copyright 2013 jQuery Foundation, Inc. and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2014-04-18
+ */
+(function( window ) {
+
+var i,
+	support,
+	Expr,
+	getText,
+	isXML,
+	tokenize,
+	compile,
+	select,
+	outermostContext,
+	sortInput,
+	hasDuplicate,
+
+	// Local document vars
+	setDocument,
+	document,
+	docElem,
+	documentIsHTML,
+	rbuggyQSA,
+	rbuggyMatches,
+	matches,
+	contains,
+
+	// Instance-specific data
+	expando = "sizzle" + -(new Date()),
+	preferredDoc = window.document,
+	dirruns = 0,
+	done = 0,
+	classCache = createCache(),
+	tokenCache = createCache(),
+	compilerCache = createCache(),
+	sortOrder = function( a, b ) {
+		if ( a === b ) {
+			hasDuplicate = true;
+		}
+		return 0;
+	},
+
+	// General-purpose constants
+	strundefined = typeof undefined,
+	MAX_NEGATIVE = 1 << 31,
+
+	// Instance methods
+	hasOwn = ({}).hasOwnProperty,
+	arr = [],
+	pop = arr.pop,
+	push_native = arr.push,
+	push = arr.push,
+	slice = arr.slice,
+	// Use a stripped-down indexOf if we can't use a native one
+	indexOf = arr.indexOf || function( elem ) {
+		var i = 0,
+			len = this.length;
+		for ( ; i < len; i++ ) {
+			if ( this[i] === elem ) {
+				return i;
+			}
+		}
+		return -1;
+	},
+
+	booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
+
+	// Regular expressions
+
+	// Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace
+	whitespace = "[\\x20\\t\\r\\n\\f]",
+	// http://www.w3.org/TR/css3-syntax/#characters
+	characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
+
+	// Loosely modeled on CSS identifier characters
+	// An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors
+	// Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
+	identifier = characterEncoding.replace( "w", "w#" ),
+
+	// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
+	attributes = "\\[" + whitespace + "*(" + characterEncoding + ")(?:" + whitespace +
+		// Operator (capture 2)
+		"*([*^$|!~]?=)" + whitespace +
+		// "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
+		"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
+		"*\\]",
+
+	pseudos = ":(" + characterEncoding + ")(?:\\((" +
+		// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
+		// 1. quoted (capture 3; capture 4 or capture 5)
+		"('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
+		// 2. simple (capture 6)
+		"((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
+		// 3. anything else (capture 2)
+		".*" +
+		")\\)|)",
+
+	// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
+	rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
+
+	rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
+	rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
+
+	rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ),
+
+	rpseudo = new RegExp( pseudos ),
+	ridentifier = new RegExp( "^" + identifier + "$" ),
+
+	matchExpr = {
+		"ID": new RegExp( "^#(" + characterEncoding + ")" ),
+		"CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ),
+		"TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ),
+		"ATTR": new RegExp( "^" + attributes ),
+		"PSEUDO": new RegExp( "^" + pseudos ),
+		"CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
+			"*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
+			"*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
+		"bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
+		// For use in libraries implementing .is()
+		// We use this for POS matching in `select`
+		"needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
+			whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
+	},
+
+	rinputs = /^(?:input|select|textarea|button)$/i,
+	rheader = /^h\d$/i,
+
+	rnative = /^[^{]+\{\s*\[native \w/,
+
+	// Easily-parseable/retrievable ID or TAG or CLASS selectors
+	rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
+
+	rsibling = /[+~]/,
+	rescape = /'|\\/g,
+
+	// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
+	runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
+	funescape = function( _, escaped, escapedWhitespace ) {
+		var high = "0x" + escaped - 0x10000;
+		// NaN means non-codepoint
+		// Support: Firefox<24
+		// Workaround erroneous numeric interpretation of +"0x"
+		return high !== high || escapedWhitespace ?
+			escaped :
+			high < 0 ?
+				// BMP codepoint
+				String.fromCharCode( high + 0x10000 ) :
+				// Supplemental Plane codepoint (surrogate pair)
+				String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
+	};
 
 // Optimize for push.apply( _, NodeList )
-                try {
-                    push.apply(
-                            (arr = slice.call( preferredDoc.childNodes )),
-                            preferredDoc.childNodes
-                    );
-                    // Support: Android<4.0
-                    // Detect silently failing push.apply
-                    arr[ preferredDoc.childNodes.length ].nodeType;
-                } catch ( e ) {
-                    push = { apply: arr.length ?
-
-                        // Leverage slice if possible
-                            function( target, els ) {
-                                push_native.apply( target, slice.call(els) );
-                            } :
-
-                        // Support: IE<9
-                        // Otherwise append directly
-                            function( target, els ) {
-                                var j = target.length,
-                                        i = 0;
-                                // Can't trust NodeList.length
-                                while ( (target[j++] = els[i++]) ) {}
-                                target.length = j - 1;
-                            }
-                    };
-                }
-
-                function Sizzle( selector, context, results, seed ) {
-                    var match, elem, m, nodeType,
-                    // QSA vars
-                            i, groups, old, nid, newContext, newSelector;
-
-                    if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
-                        setDocument( context );
-                    }
-
-                    context = context || document;
-                    results = results || [];
-
-                    if ( !selector || typeof selector !== "string" ) {
-                        return results;
-                    }
-
-                    if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) {
-                        return [];
-                    }
-
-                    if ( documentIsHTML && !seed ) {
-
-                        // Shortcuts
-                        if ( (match = rquickExpr.exec( selector )) ) {
-                            // Speed-up: Sizzle("#ID")
-                            if ( (m = match[1]) ) {
-                                if ( nodeType === 9 ) {
-                                    elem = context.getElementById( m );
-                                    // Check parentNode to catch when Blackberry 4.6 returns
-                                    // nodes that are no longer in the document (jQuery #6963)
-                                    if ( elem && elem.parentNode ) {
-                                        // Handle the case where IE, Opera, and Webkit return items
-                                        // by name instead of ID
-                                        if ( elem.id === m ) {
-                                            results.push( elem );
-                                            return results;
-                                        }
-                                    } else {
-                                        return results;
-                                    }
-                                } else {
-                                    // Context is not a document
-                                    if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&
-                                            contains( context, elem ) && elem.id === m ) {
-                                        results.push( elem );
-                                        return results;
-                                    }
-                                }
-
-                                // Speed-up: Sizzle("TAG")
-                            } else if ( match[2] ) {
-                                push.apply( results, context.getElementsByTagName( selector ) );
-                                return results;
-
-                                // Speed-up: Sizzle(".CLASS")
-                            } else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) {
-                                push.apply( results, context.getElementsByClassName( m ) );
-                                return results;
-                            }
-                        }
-
-                        // QSA path
-                        if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
-                            nid = old = expando;
-                            newContext = context;
-                            newSelector = nodeType === 9 && selector;
-
-                            // qSA works strangely on Element-rooted queries
-                            // We can work around this by specifying an extra ID on the root
-                            // and working up from there (Thanks to Andrew Dupont for the technique)
-                            // IE 8 doesn't work on object elements
-                            if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
-                                groups = tokenize( selector );
-
-                                if ( (old = context.getAttribute("id")) ) {
-                                    nid = old.replace( rescape, "\\$&" );
-                                } else {
-                                    context.setAttribute( "id", nid );
-                                }
-                                nid = "[id='" + nid + "'] ";
-
-                                i = groups.length;
-                                while ( i-- ) {
-                                    groups[i] = nid + toSelector( groups[i] );
-                                }
-                                newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context;
-                                newSelector = groups.join(",");
-                            }
-
-                            if ( newSelector ) {
-                                try {
-                                    push.apply( results,
-                                            newContext.querySelectorAll( newSelector )
-                                    );
-                                    return results;
-                                } catch(qsaError) {
-                                } finally {
-                                    if ( !old ) {
-                                        context.removeAttribute("id");
-                                    }
-                                }
-                            }
-                        }
-                    }
-
-                    // All others
-                    return select( selector.replace( rtrim, "$1" ), context, results, seed );
-                }
-
-                /**
-                 * Create key-value caches of limited size
-                 * @returns {Function(string, Object)} Returns the Object data after storing it on itself with
-                 *	property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
-                 *	deleting the oldest entry
-                 */
-                function createCache() {
-                    var keys = [];
-
-                    function cache( key, value ) {
-                        // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
-                        if ( keys.push( key + " " ) > Expr.cacheLength ) {
-                            // Only keep the most recent entries
-                            delete cache[ keys.shift() ];
-                        }
-                        return (cache[ key + " " ] = value);
-                    }
-                    return cache;
-                }
-
-                /**
-                 * Mark a function for special use by Sizzle
-                 * @param {Function} fn The function to mark
-                 */
-                function markFunction( fn ) {
-                    fn[ expando ] = true;
-                    return fn;
-                }
-
-                /**
-                 * Support testing using an element
-                 * @param {Function} fn Passed the created div and expects a boolean result
-                 */
-                function assert( fn ) {
-                    var div = document.createElement("div");
-
-                    try {
-                        return !!fn( div );
-                    } catch (e) {
-                        return false;
-                    } finally {
-                        // Remove from its parent by default
-                        if ( div.parentNode ) {
-                            div.parentNode.removeChild( div );
-                        }
-                        // release memory in IE
-                        div = null;
-                    }
-                }
-
-                /**
-                 * Adds the same handler for all of the specified attrs
-                 * @param {String} attrs Pipe-separated list of attributes
-                 * @param {Function} handler The method that will be applied
-                 */
-                function addHandle( attrs, handler ) {
-                    var arr = attrs.split("|"),
-                            i = attrs.length;
-
-                    while ( i-- ) {
-                        Expr.attrHandle[ arr[i] ] = handler;
-                    }
-                }
-
-                /**
-                 * Checks document order of two siblings
-                 * @param {Element} a
-                 * @param {Element} b
-                 * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
-                 */
-                function siblingCheck( a, b ) {
-                    var cur = b && a,
-                            diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
-                                    ( ~b.sourceIndex || MAX_NEGATIVE ) -
-                                            ( ~a.sourceIndex || MAX_NEGATIVE );
-
-                    // 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;
-                            }
-                        }
-                    }
-
-                    return a ? 1 : -1;
-                }
-
-                /**
-                 * Returns a function to use in pseudos for input types
-                 * @param {String} type
-                 */
-                function createInputPseudo( type ) {
-                    return function( elem ) {
-                        var name = elem.nodeName.toLowerCase();
-                        return name === "input" && elem.type === type;
-                    };
-                }
-
-                /**
-                 * Returns a function to use in pseudos for buttons
-                 * @param {String} type
-                 */
-                function createButtonPseudo( type ) {
-                    return function( elem ) {
-                        var name = elem.nodeName.toLowerCase();
-                        return (name === "input" || name === "button") && elem.type === type;
-                    };
-                }
-
-                /**
-                 * Returns a function to use in pseudos for positionals
-                 * @param {Function} fn
-                 */
-                function createPositionalPseudo( fn ) {
-                    return markFunction(function( argument ) {
-                        argument = +argument;
-                        return markFunction(function( seed, matches ) {
-                            var j,
-                                    matchIndexes = fn( [], seed.length, argument ),
-                                    i = matchIndexes.length;
-
-                            // Match elements found at the specified indexes
-                            while ( i-- ) {
-                                if ( seed[ (j = matchIndexes[i]) ] ) {
-                                    seed[j] = !(matches[j] = seed[j]);
-                                }
-                            }
-                        });
-                    });
-                }
-
-                /**
-                 * Checks a node for validity as a Sizzle context
-                 * @param {Element|Object=} context
-                 * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
-                 */
-                function testContext( context ) {
-                    return context && typeof context.getElementsByTagName !== strundefined && context;
-                }
+try {
+	push.apply(
+		(arr = slice.call( preferredDoc.childNodes )),
+		preferredDoc.childNodes
+	);
+	// Support: Android<4.0
+	// Detect silently failing push.apply
+	arr[ preferredDoc.childNodes.length ].nodeType;
+} catch ( e ) {
+	push = { apply: arr.length ?
+
+		// Leverage slice if possible
+		function( target, els ) {
+			push_native.apply( target, slice.call(els) );
+		} :
+
+		// Support: IE<9
+		// Otherwise append directly
+		function( target, els ) {
+			var j = target.length,
+				i = 0;
+			// Can't trust NodeList.length
+			while ( (target[j++] = els[i++]) ) {}
+			target.length = j - 1;
+		}
+	};
+}
+
+function Sizzle( selector, context, results, seed ) {
+	var match, elem, m, nodeType,
+		// QSA vars
+		i, groups, old, nid, newContext, newSelector;
+
+	if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
+		setDocument( context );
+	}
+
+	context = context || document;
+	results = results || [];
+
+	if ( !selector || typeof selector !== "string" ) {
+		return results;
+	}
+
+	if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) {
+		return [];
+	}
+
+	if ( documentIsHTML && !seed ) {
+
+		// Shortcuts
+		if ( (match = rquickExpr.exec( selector )) ) {
+			// Speed-up: Sizzle("#ID")
+			if ( (m = match[1]) ) {
+				if ( nodeType === 9 ) {
+					elem = context.getElementById( m );
+					// Check parentNode to catch when Blackberry 4.6 returns
+					// nodes that are no longer in the document (jQuery #6963)
+					if ( elem && elem.parentNode ) {
+						// Handle the case where IE, Opera, and Webkit return items
+						// by name instead of ID
+						if ( elem.id === m ) {
+							results.push( elem );
+							return results;
+						}
+					} else {
+						return results;
+					}
+				} else {
+					// Context is not a document
+					if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&
+						contains( context, elem ) && elem.id === m ) {
+						results.push( elem );
+						return results;
+					}
+				}
+
+			// Speed-up: Sizzle("TAG")
+			} else if ( match[2] ) {
+				push.apply( results, context.getElementsByTagName( selector ) );
+				return results;
+
+			// Speed-up: Sizzle(".CLASS")
+			} else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) {
+				push.apply( results, context.getElementsByClassName( m ) );
+				return results;
+			}
+		}
+
+		// QSA path
+		if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
+			nid = old = expando;
+			newContext = context;
+			newSelector = nodeType === 9 && selector;
+
+			// qSA works strangely on Element-rooted queries
+			// We can work around this by specifying an extra ID on the root
+			// and working up from there (Thanks to Andrew Dupont for the technique)
+			// IE 8 doesn't work on object elements
+			if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
+				groups = tokenize( selector );
+
+				if ( (old = context.getAttribute("id")) ) {
+					nid = old.replace( rescape, "\\$&" );
+				} else {
+					context.setAttribute( "id", nid );
+				}
+				nid = "[id='" + nid + "'] ";
+
+				i = groups.length;
+				while ( i-- ) {
+					groups[i] = nid + toSelector( groups[i] );
+				}
+				newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context;
+				newSelector = groups.join(",");
+			}
+
+			if ( newSelector ) {
+				try {
+					push.apply( results,
+						newContext.querySelectorAll( newSelector )
+					);
+					return results;
+				} catch(qsaError) {
+				} finally {
+					if ( !old ) {
+						context.removeAttribute("id");
+					}
+				}
+			}
+		}
+	}
+
+	// All others
+	return select( selector.replace( rtrim, "$1" ), context, results, seed );
+}
+
+/**
+ * Create key-value caches of limited size
+ * @returns {Function(string, Object)} Returns the Object data after storing it on itself with
+ *	property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
+ *	deleting the oldest entry
+ */
+function createCache() {
+	var keys = [];
+
+	function cache( key, value ) {
+		// Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
+		if ( keys.push( key + " " ) > Expr.cacheLength ) {
+			// Only keep the most recent entries
+			delete cache[ keys.shift() ];
+		}
+		return (cache[ key + " " ] = value);
+	}
+	return cache;
+}
+
+/**
+ * Mark a function for special use by Sizzle
+ * @param {Function} fn The function to mark
+ */
+function markFunction( fn ) {
+	fn[ expando ] = true;
+	return fn;
+}
+
+/**
+ * Support testing using an element
+ * @param {Function} fn Passed the created div and expects a boolean result
+ */
+function assert( fn ) {
+	var div = document.createElement("div");
+
+	try {
+		return !!fn( div );
+	} catch (e) {
+		return false;
+	} finally {
+		// Remove from its parent by default
+		if ( div.parentNode ) {
+			div.parentNode.removeChild( div );
+		}
+		// release memory in IE
+		div = null;
+	}
+}
+
+/**
+ * Adds the same handler for all of the specified attrs
+ * @param {String} attrs Pipe-separated list of attributes
+ * @param {Function} handler The method that will be applied
+ */
+function addHandle( attrs, handler ) {
+	var arr = attrs.split("|"),
+		i = attrs.length;
+
+	while ( i-- ) {
+		Expr.attrHandle[ arr[i] ] = handler;
+	}
+}
+
+/**
+ * Checks document order of two siblings
+ * @param {Element} a
+ * @param {Element} b
+ * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
+ */
+function siblingCheck( a, b ) {
+	var cur = b && a,
+		diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
+			( ~b.sourceIndex || MAX_NEGATIVE ) -
+			( ~a.sourceIndex || MAX_NEGATIVE );
+
+	// 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;
+			}
+		}
+	}
+
+	return a ? 1 : -1;
+}
+
+/**
+ * Returns a function to use in pseudos for input types
+ * @param {String} type
+ */
+function createInputPseudo( type ) {
+	return function( elem ) {
+		var name = elem.nodeName.toLowerCase();
+		return name === "input" && elem.type === type;
+	};
+}
+
+/**
+ * Returns a function to use in pseudos for buttons
+ * @param {String} type
+ */
+function createButtonPseudo( type ) {
+	return function( elem ) {
+		var name = elem.nodeName.toLowerCase();
+		return (name === "input" || name === "button") && elem.type === type;
+	};
+}
+
+/**
+ * Returns a function to use in pseudos for positionals
+ * @param {Function} fn
+ */
+function createPositionalPseudo( fn ) {
+	return markFunction(function( argument ) {
+		argument = +argument;
+		return markFunction(function( seed, matches ) {
+			var j,
+				matchIndexes = fn( [], seed.length, argument ),
+				i = matchIndexes.length;
+
+			// Match elements found at the specified indexes
+			while ( i-- ) {
+				if ( seed[ (j = matchIndexes[i]) ] ) {
+					seed[j] = !(matches[j] = seed[j]);
+				}
+			}
+		});
+	});
+}
+
+/**
+ * Checks a node for validity as a Sizzle context
+ * @param {Element|Object=} context
+ * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
+ */
+function testContext( context ) {
+	return context && typeof context.getElementsByTagName !== strundefined && context;
+}
 
 // Expose support vars for convenience
-                support = Sizzle.support = {};
-
-                /**
-                 * Detects XML nodes
-                 * @param {Element|Object} elem An element or a document
-                 * @returns {Boolean} True iff elem is a non-HTML XML node
-                 */
-                isXML = Sizzle.isXML = function( elem ) {
-                    // documentElement is verified for cases where it doesn't yet exist
-                    // (such as loading iframes in IE - #4833)
-                    var documentElement = elem && (elem.ownerDocument || elem).documentElement;
-                    return documentElement ? documentElement.nodeName !== "HTML" : false;
-                };
-
-                /**
-                 * Sets document-related variables once based on the current document
-                 * @param {Element|Object} [doc] An element or document object to use to set the document
-                 * @returns {Object} Returns the current document
-                 */
-                setDocument = Sizzle.setDocument = function( node ) {
-                    var hasCompare,
-                            doc = node ? node.ownerDocument || node : preferredDoc,
-                            parent = doc.defaultView;
-
-                    // If no document and documentElement is available, return
-                    if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
-                        return document;
-                    }
-
-                    // Set our document
-                    document = doc;
-                    docElem = doc.documentElement;
-
-                    // Support tests
-                    documentIsHTML = !isXML( doc );
-
-                    // Support: IE>8
-                    // If iframe document is assigned to "document" variable and if iframe has been reloaded,
-                    // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936
-                    // IE6-8 do not support the defaultView property so parent will be undefined
-                    if ( parent && parent !== parent.top ) {
-                        // IE11 does not have attachEvent, so all must suffer
-                        if ( parent.addEventListener ) {
-                            parent.addEventListener( "unload", function() {
-                                setDocument();
-                            }, false );
-                        } else if ( parent.attachEvent ) {
-                            parent.attachEvent( "onunload", function() {
-                                setDocument();
-                            });
-                        }
-                    }
-
-                    /* Attributes
-                     ---------------------------------------------------------------------- */
-
-                    // Support: IE<8
-                    // Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans)
-                    support.attributes = assert(function( div ) {
-                        div.className = "i";
-                        return !div.getAttribute("className");
-                    });
-
-                    /* getElement(s)By*
-                     ---------------------------------------------------------------------- */
-
-                    // Check if getElementsByTagName("*") returns only elements
-                    support.getElementsByTagName = assert(function( div ) {
-                        div.appendChild( doc.createComment("") );
-                        return !div.getElementsByTagName("*").length;
-                    });
-
-                    // Check if getElementsByClassName can be trusted
-                    support.getElementsByClassName = rnative.test( doc.getElementsByClassName ) && assert(function( div ) {
-                        div.innerHTML = "<div class='a'></div><div class='a i'></div>";
-
-                        // Support: Safari<4
-                        // Catch class over-caching
-                        div.firstChild.className = "i";
-                        // Support: Opera<10
-                        // Catch gEBCN failure to find non-leading classes
-                        return div.getElementsByClassName("i").length === 2;
-                    });
-
-                    // Support: IE<10
-                    // Check if getElementById returns elements by name
-                    // The broken getElementById methods don't pick up programatically-set names,
-                    // so use a roundabout getElementsByName test
-                    support.getById = assert(function( div ) {
-                        docElem.appendChild( div ).id = expando;
-                        return !doc.getElementsByName || !doc.getElementsByName( expando ).length;
-                    });
-
-                    // ID find and filter
-                    if ( support.getById ) {
-                        Expr.find["ID"] = function( id, context ) {
-                            if ( typeof context.getElementById !== strundefined && documentIsHTML ) {
-                                var m = context.getElementById( id );
-                                // Check parentNode to catch when Blackberry 4.6 returns
-                                // nodes that are no longer in the document #6963
-                                return m && m.parentNode ? [m] : [];
-                            }
-                        };
-                        Expr.filter["ID"] = function( id ) {
-                            var attrId = id.replace( runescape, funescape );
-                            return function( elem ) {
-                                return elem.getAttribute("id") === attrId;
-                            };
-                        };
-                    } else {
-                        // Support: IE6/7
-                        // getElementById is not reliable as a find shortcut
-                        delete Expr.find["ID"];
-
-                        Expr.filter["ID"] =  function( id ) {
-                            var attrId = id.replace( runescape, funescape );
-                            return function( elem ) {
-                                var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id");
-                                return node && node.value === attrId;
-                            };
-                        };
-                    }
-
-                    // Tag
-                    Expr.find["TAG"] = support.getElementsByTagName ?
-                            function( tag, context ) {
-                                if ( typeof context.getElementsByTagName !== strundefined ) {
-                                    return context.getElementsByTagName( tag );
-                                }
-                            } :
-                            function( tag, context ) {
-                                var elem,
-                                        tmp = [],
-                                        i = 0,
-                                        results = context.getElementsByTagName( tag );
-
-                                // Filter out possible comments
-                                if ( tag === "*" ) {
-                                    while ( (elem = results[i++]) ) {
-                                        if ( elem.nodeType === 1 ) {
-                                            tmp.push( elem );
-                                        }
-                                    }
-
-                                    return tmp;
-                                }
-                                return results;
-                            };
-
-                    // Class
-                    Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
-                        if ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) {
-                            return context.getElementsByClassName( className );
-                        }
-                    };
-
-                    /* QSA/matchesSelector
-                     ---------------------------------------------------------------------- */
-
-                    // QSA and matchesSelector support
-
-                    // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
-                    rbuggyMatches = [];
-
-                    // qSa(:focus) reports false when true (Chrome 21)
-                    // We allow this because of a bug in IE8/9 that throws an error
-                    // whenever `document.activeElement` is accessed on an iframe
-                    // So, we allow :focus to pass through QSA all the time to avoid the IE error
-                    // See http://bugs.jquery.com/ticket/13378
-                    rbuggyQSA = [];
-
-                    if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) {
-                        // Build QSA regex
-                        // Regex strategy adopted from Diego Perini
-                        assert(function( div ) {
-                            // Select is set to empty string on purpose
-                            // This is to test IE's treatment of not explicitly
-                            // setting a boolean content attribute,
-                            // since its presence should be enough
-                            // http://bugs.jquery.com/ticket/12359
-                            div.innerHTML = "<select t=''><option selected=''></option></select>";
-
-                            // Support: IE8, Opera 10-12
-                            // Nothing should be selected when empty strings follow ^= or $= or *=
-                            if ( div.querySelectorAll("[t^='']").length ) {
-                                rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
-                            }
-
-                            // Support: IE8
-                            // Boolean attributes and "value" are not treated correctly
-                            if ( !div.querySelectorAll("[selected]").length ) {
-                                rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
-                            }
-
-                            // Webkit/Opera - :checked should return selected option elements
-                            // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
-                            // IE8 throws error here and will not see later tests
-                            if ( !div.querySelectorAll(":checked").length ) {
-                                rbuggyQSA.push(":checked");
-                            }
-                        });
-
-                        assert(function( div ) {
-                            // Support: Windows 8 Native Apps
-                            // The type and name attributes are restricted during .innerHTML assignment
-                            var input = doc.createElement("input");
-                            input.setAttribute( "type", "hidden" );
-                            div.appendChild( input ).setAttribute( "name", "D" );
-
-                            // Support: IE8
-                            // Enforce case-sensitivity of name attribute
-                            if ( div.querySelectorAll("[name=d]").length ) {
-                                rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
-                            }
-
-                            // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
-                            // IE8 throws error here and will not see later tests
-                            if ( !div.querySelectorAll(":enabled").length ) {
-                                rbuggyQSA.push( ":enabled", ":disabled" );
-                            }
-
-                            // Opera 10-11 does not throw on post-comma invalid pseudos
-                            div.querySelectorAll("*,:x");
-                            rbuggyQSA.push(",.*:");
-                        });
-                    }
-
-                    if ( (support.matchesSelector = rnative.test( (matches = docElem.webkitMatchesSelector ||
-                            docElem.mozMatchesSelector ||
-                            docElem.oMatchesSelector ||
-                            docElem.msMatchesSelector) )) ) {
-
-                        assert(function( div ) {
-                            // Check to see if it's possible to do matchesSelector
-                            // on a disconnected node (IE 9)
-                            support.disconnectedMatch = matches.call( div, "div" );
-
-                            // This should fail with an exception
-                            // Gecko does not error, returns false instead
-                            matches.call( div, "[s!='']:x" );
-                            rbuggyMatches.push( "!=", pseudos );
-                        });
-                    }
-
-                    rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
-                    rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
-
-                    /* Contains
-                     ---------------------------------------------------------------------- */
-                    hasCompare = rnative.test( docElem.compareDocumentPosition );
-
-                    // Element contains another
-                    // Purposefully does not implement inclusive descendent
-                    // As in, an element does not contain itself
-                    contains = hasCompare || rnative.test( docElem.contains ) ?
-                            function( a, b ) {
-                                var adown = a.nodeType === 9 ? a.documentElement : a,
-                                        bup = b && b.parentNode;
-                                return a === bup || !!( bup && bup.nodeType === 1 && (
-                                        adown.contains ?
-                                                adown.contains( bup ) :
-                                                a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
-                                        ));
-                            } :
-                            function( a, b ) {
-                                if ( b ) {
-                                    while ( (b = b.parentNode) ) {
-                                        if ( b === a ) {
-                                            return true;
-                                        }
-                                    }
-                                }
-                                return false;
-                            };
-
-                    /* Sorting
-                     ---------------------------------------------------------------------- */
-
-                    // Document order sorting
-                    sortOrder = hasCompare ?
-                            function( a, b ) {
-
-                                // Flag for duplicate removal
-                                if ( a === b ) {
-                                    hasDuplicate = true;
-                                    return 0;
-                                }
-
-                                // Sort on method existence if only one input has compareDocumentPosition
-                                var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
-                                if ( compare ) {
-                                    return compare;
-                                }
-
-                                // Calculate position if both inputs belong to the same document
-                                compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
-                                        a.compareDocumentPosition( b ) :
-
-                                    // Otherwise we know they are disconnected
-                                        1;
-
-                                // Disconnected nodes
-                                if ( compare & 1 ||
-                                        (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
-
-                                    // Choose the first element that is related to our preferred document
-                                    if ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
-                                        return -1;
-                                    }
-                                    if ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
-                                        return 1;
-                                    }
-
-                                    // Maintain original order
-                                    return sortInput ?
-                                            ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
-                                            0;
-                                }
-
-                                return compare & 4 ? -1 : 1;
-                            } :
-                            function( a, b ) {
-                                // Exit early if the nodes are identical
-                                if ( a === b ) {
-                                    hasDuplicate = true;
-                                    return 0;
-                                }
-
-                                var cur,
-                                        i = 0,
-                                        aup = a.parentNode,
-                                        bup = b.parentNode,
-                                        ap = [ a ],
-                                        bp = [ b ];
-
-                                // Parentless nodes are either documents or disconnected
-                                if ( !aup || !bup ) {
-                                    return a === doc ? -1 :
-                                            b === doc ? 1 :
-                                                    aup ? -1 :
-                                                            bup ? 1 :
-                                                                    sortInput ?
-                                                                            ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
-                                                                            0;
-
-                                    // If the nodes are siblings, we can do a quick check
-                                } else if ( aup === bup ) {
-                                    return siblingCheck( a, b );
-                                }
-
-                                // Otherwise we need full lists of their ancestors for comparison
-                                cur = a;
-                                while ( (cur = cur.parentNode) ) {
-                                    ap.unshift( cur );
-                                }
-                                cur = b;
-                                while ( (cur = cur.parentNode) ) {
-                                    bp.unshift( cur );
-                                }
-
-                                // Walk down the tree looking for a discrepancy
-                                while ( ap[i] === bp[i] ) {
-                                    i++;
-                                }
-
-                                return i ?
-                                    // Do a sibling check if the nodes have a common ancestor
-                                        siblingCheck( ap[i], bp[i] ) :
-
-                                    // Otherwise nodes in our document sort first
-                                        ap[i] === preferredDoc ? -1 :
-                                                bp[i] === preferredDoc ? 1 :
-                                                        0;
-                            };
-
-                    return doc;
-                };
-
-                Sizzle.matches = function( expr, elements ) {
-                    return Sizzle( expr, null, null, elements );
-                };
-
-                Sizzle.matchesSelector = function( elem, expr ) {
-                    // Set document vars if needed
-                    if ( ( elem.ownerDocument || elem ) !== document ) {
-                        setDocument( elem );
-                    }
-
-                    // Make sure that attribute selectors are quoted
-                    expr = expr.replace( rattributeQuotes, "='$1']" );
-
-                    if ( support.matchesSelector && documentIsHTML &&
-                            ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
-                            ( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {
-
-                        try {
-                            var ret = matches.call( elem, expr );
-
-                            // IE 9's matchesSelector returns false on disconnected nodes
-                            if ( ret || support.disconnectedMatch ||
-                                // As well, disconnected nodes are said to be in a document
-                                // fragment in IE 9
-                                    elem.document && elem.document.nodeType !== 11 ) {
-                                return ret;
-                            }
-                        } catch(e) {}
-                    }
-
-                    return Sizzle( expr, document, null, [elem] ).length > 0;
-                };
-
-                Sizzle.contains = function( context, elem ) {
-                    // Set document vars if needed
-                    if ( ( context.ownerDocument || context ) !== document ) {
-                        setDocument( context );
-                    }
-                    return contains( context, elem );
-                };
-
-                Siz

<TRUNCATED>

[3/3] git commit: update jQuery to 1.11.1, update RequireJS to 2.1.11

Posted by jk...@apache.org.
update jQuery to 1.11.1, update RequireJS to 2.1.11


Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/5b12cea9
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/5b12cea9
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/5b12cea9

Branch: refs/heads/master
Commit: 5b12cea9f97e12b1433cf960b83e7bcc45bee63d
Parents: aae91f0
Author: Jochen Kemnade <jo...@eddyson.de>
Authored: Mon May 5 09:45:29 2014 +0200
Committer: Jochen Kemnade <jo...@eddyson.de>
Committed: Mon May 5 09:45:29 2014 +0200

----------------------------------------------------------------------
 .../META-INF/assets/tapestry5/jquery.js         | 19803 ++++++++---------
 .../META-INF/assets/tapestry5/require.js        |   328 +-
 2 files changed, 10051 insertions(+), 10080 deletions(-)
----------------------------------------------------------------------



[3/3] git commit: update jQuery to 1.11.1, update RequireJS to 2.1.11

Posted by jk...@apache.org.
update jQuery to 1.11.1, update RequireJS to 2.1.11


Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/5b12cea9
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/5b12cea9
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/5b12cea9

Branch: refs/heads/master
Commit: 5b12cea9f97e12b1433cf960b83e7bcc45bee63d
Parents: aae91f0
Author: Jochen Kemnade <jo...@eddyson.de>
Authored: Mon May 5 09:45:29 2014 +0200
Committer: Jochen Kemnade <jo...@eddyson.de>
Committed: Mon May 5 09:45:29 2014 +0200

----------------------------------------------------------------------
 .../META-INF/assets/tapestry5/jquery.js         | 19803 ++++++++---------
 .../META-INF/assets/tapestry5/require.js        |   328 +-
 2 files changed, 10051 insertions(+), 10080 deletions(-)
----------------------------------------------------------------------