|  | /* global Symbol */ | 
|  | // Defining this global in .eslintrc.json would create a danger of using the global | 
|  | // unguarded in another place, it seems safer to define global only for this module | 
|  |  | 
|  | define( [ | 
|  | "./var/arr", | 
|  | "./var/getProto", | 
|  | "./var/slice", | 
|  | "./var/flat", | 
|  | "./var/push", | 
|  | "./var/indexOf", | 
|  | "./var/class2type", | 
|  | "./var/toString", | 
|  | "./var/hasOwn", | 
|  | "./var/fnToString", | 
|  | "./var/ObjectFunctionString", | 
|  | "./var/support", | 
|  | "./var/isFunction", | 
|  | "./var/isWindow", | 
|  | "./core/DOMEval", | 
|  | "./core/toType" | 
|  | ], function( arr, getProto, slice, flat, push, indexOf, | 
|  | class2type, toString, hasOwn, fnToString, ObjectFunctionString, | 
|  | support, isFunction, isWindow, DOMEval, toType ) { | 
|  |  | 
|  | "use strict"; | 
|  |  | 
|  | var | 
|  | version = "@VERSION", | 
|  |  | 
|  | // 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 ); | 
|  | }; | 
|  |  | 
|  | jQuery.fn = jQuery.prototype = { | 
|  |  | 
|  | // The current version of jQuery being used | 
|  | jquery: version, | 
|  |  | 
|  | constructor: jQuery, | 
|  |  | 
|  | // The default length of a jQuery object is 0 | 
|  | length: 0, | 
|  |  | 
|  | 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 all the elements in a clean array | 
|  | if ( num == null ) { | 
|  | return slice.call( this ); | 
|  | } | 
|  |  | 
|  | // Return just the one element from the set | 
|  | return num < 0 ? this[ num + this.length ] : this[ num ]; | 
|  | }, | 
|  |  | 
|  | // 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 ); | 
|  |  | 
|  | // Add the old object onto the stack (as a reference) | 
|  | ret.prevObject = this; | 
|  |  | 
|  | // Return the newly-formed element set | 
|  | return ret; | 
|  | }, | 
|  |  | 
|  | // Execute a callback for every element in the matched set. | 
|  | each: function( callback ) { | 
|  | return jQuery.each( this, callback ); | 
|  | }, | 
|  |  | 
|  | 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 ); | 
|  | }, | 
|  |  | 
|  | even: function() { | 
|  | return this.pushStack( jQuery.grep( this, function( _elem, i ) { | 
|  | return ( i + 1 ) % 2; | 
|  | } ) ); | 
|  | }, | 
|  |  | 
|  | odd: function() { | 
|  | return this.pushStack( jQuery.grep( this, function( _elem, i ) { | 
|  | return i % 2; | 
|  | } ) ); | 
|  | }, | 
|  |  | 
|  | 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(); | 
|  | }, | 
|  |  | 
|  | // For internal use only. | 
|  | // Behaves like an Array's method, not like a jQuery method. | 
|  | push: push, | 
|  | sort: arr.sort, | 
|  | splice: arr.splice | 
|  | }; | 
|  |  | 
|  | jQuery.extend = jQuery.fn.extend = function() { | 
|  | var options, name, src, copy, copyIsArray, 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" && !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 ) { | 
|  | copy = options[ name ]; | 
|  |  | 
|  | // Prevent Object.prototype pollution | 
|  | // Prevent never-ending loop | 
|  | if ( name === "__proto__" || target === copy ) { | 
|  | continue; | 
|  | } | 
|  |  | 
|  | // Recurse if we're merging plain objects or arrays | 
|  | if ( deep && copy && ( jQuery.isPlainObject( copy ) || | 
|  | ( copyIsArray = Array.isArray( copy ) ) ) ) { | 
|  | src = target[ name ]; | 
|  |  | 
|  | // Ensure proper type for the source value | 
|  | if ( copyIsArray && !Array.isArray( src ) ) { | 
|  | clone = []; | 
|  | } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) { | 
|  | clone = {}; | 
|  | } else { | 
|  | clone = src; | 
|  | } | 
|  | copyIsArray = false; | 
|  |  | 
|  | // 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() {}, | 
|  |  | 
|  | isPlainObject: function( obj ) { | 
|  | var proto, Ctor; | 
|  |  | 
|  | // Detect obvious negatives | 
|  | // Use toString instead of jQuery.type to catch host objects | 
|  | if ( !obj || toString.call( obj ) !== "[object Object]" ) { | 
|  | return false; | 
|  | } | 
|  |  | 
|  | proto = getProto( obj ); | 
|  |  | 
|  | // Objects with no prototype (e.g., `Object.create( null )`) are plain | 
|  | if ( !proto ) { | 
|  | return true; | 
|  | } | 
|  |  | 
|  | // Objects with prototype are plain iff they were constructed by a global Object function | 
|  | Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; | 
|  | return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; | 
|  | }, | 
|  |  | 
|  | isEmptyObject: function( obj ) { | 
|  | var name; | 
|  |  | 
|  | for ( name in obj ) { | 
|  | return false; | 
|  | } | 
|  | return true; | 
|  | }, | 
|  |  | 
|  | // Evaluates a script in a provided context; falls back to the global one | 
|  | // if not specified. | 
|  | globalEval: function( code, options, doc ) { | 
|  | DOMEval( code, { nonce: options && options.nonce }, doc ); | 
|  | }, | 
|  |  | 
|  | each: function( obj, callback ) { | 
|  | var length, i = 0; | 
|  |  | 
|  | if ( isArrayLike( obj ) ) { | 
|  | length = obj.length; | 
|  | for ( ; i < length; i++ ) { | 
|  | if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { | 
|  | break; | 
|  | } | 
|  | } | 
|  | } else { | 
|  | for ( i in obj ) { | 
|  | if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { | 
|  | break; | 
|  | } | 
|  | } | 
|  | } | 
|  |  | 
|  | return obj; | 
|  | }, | 
|  |  | 
|  | // 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 ) { | 
|  | return arr == null ? -1 : indexOf.call( arr, elem, i ); | 
|  | }, | 
|  |  | 
|  | // Support: Android <=4.0 only, PhantomJS 1 only | 
|  | // push.apply(_, arraylike) throws on ancient WebKit | 
|  | merge: function( first, second ) { | 
|  | var len = +second.length, | 
|  | j = 0, | 
|  | i = first.length; | 
|  |  | 
|  | for ( ; j < len; j++ ) { | 
|  | 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 length, value, | 
|  | i = 0, | 
|  | ret = []; | 
|  |  | 
|  | // Go through the array, translating each of the items to their new values | 
|  | if ( isArrayLike( elems ) ) { | 
|  | length = elems.length; | 
|  | 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 flat( ret ); | 
|  | }, | 
|  |  | 
|  | // A global GUID counter for objects | 
|  | guid: 1, | 
|  |  | 
|  | // jQuery.support is not used in Core but other projects attach their | 
|  | // properties to it so it needs to exist. | 
|  | support: support | 
|  | } ); | 
|  |  | 
|  | if ( typeof Symbol === "function" ) { | 
|  | jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; | 
|  | } | 
|  |  | 
|  | // Populate the class2type map | 
|  | jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), | 
|  | function( _i, name ) { | 
|  | class2type[ "[object " + name + "]" ] = name.toLowerCase(); | 
|  | } ); | 
|  |  | 
|  | function isArrayLike( obj ) { | 
|  |  | 
|  | // Support: real iOS 8.2 only (not reproducible in simulator) | 
|  | // `in` check used to prevent JIT error (gh-2145) | 
|  | // hasOwn isn't used here due to false negatives | 
|  | // regarding Nodelist length in IE | 
|  | var length = !!obj && "length" in obj && obj.length, | 
|  | type = toType( obj ); | 
|  |  | 
|  | if ( isFunction( obj ) || isWindow( obj ) ) { | 
|  | return false; | 
|  | } | 
|  |  | 
|  | return type === "array" || length === 0 || | 
|  | typeof length === "number" && length > 0 && ( length - 1 ) in obj; | 
|  | } | 
|  |  | 
|  | return jQuery; | 
|  | } ); |