| define( [ | 
 | 	"../core", | 
 | 	"../var/document", | 
 | 	"../var/isFunction" | 
 | ], function( jQuery, document, isFunction ) { | 
 |  | 
 | "use strict"; | 
 |  | 
 | var readyCallbacks = [], | 
 | 	whenReady = function( fn ) { | 
 | 		readyCallbacks.push( fn ); | 
 | 	}, | 
 | 	executeReady = function( fn ) { | 
 |  | 
 | 		// Prevent errors from freezing future callback execution (gh-1823) | 
 | 		// Not backwards-compatible as this does not execute sync | 
 | 		window.setTimeout( function() { | 
 | 			fn.call( document, jQuery ); | 
 | 		} ); | 
 | 	}; | 
 |  | 
 | jQuery.fn.ready = function( fn ) { | 
 | 	whenReady( fn ); | 
 | 	return this; | 
 | }; | 
 |  | 
 | jQuery.extend( { | 
 |  | 
 | 	// Is the DOM ready to be used? Set to true once it occurs. | 
 | 	isReady: false, | 
 |  | 
 | 	// A counter to track how many items to wait for before | 
 | 	// the ready event fires. See trac-6781 | 
 | 	readyWait: 1, | 
 |  | 
 | 	ready: function( wait ) { | 
 |  | 
 | 		// Abort if there are pending holds or we're already ready | 
 | 		if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { | 
 | 			return; | 
 | 		} | 
 |  | 
 | 		// Remember that the DOM is ready | 
 | 		jQuery.isReady = true; | 
 |  | 
 | 		// If a normal DOM Ready event fired, decrement, and wait if need be | 
 | 		if ( wait !== true && --jQuery.readyWait > 0 ) { | 
 | 			return; | 
 | 		} | 
 |  | 
 | 		whenReady = function( fn ) { | 
 | 			readyCallbacks.push( fn ); | 
 |  | 
 | 			while ( readyCallbacks.length ) { | 
 | 				fn = readyCallbacks.shift(); | 
 | 				if ( isFunction( fn ) ) { | 
 | 					executeReady( fn ); | 
 | 				} | 
 | 			} | 
 | 		}; | 
 |  | 
 | 		whenReady(); | 
 | 	} | 
 | } ); | 
 |  | 
 | // Make jQuery.ready Promise consumable (gh-1778) | 
 | jQuery.ready.then = jQuery.fn.ready; | 
 |  | 
 | /** | 
 |  * The ready event handler and self cleanup method | 
 |  */ | 
 | function completed() { | 
 | 	document.removeEventListener( "DOMContentLoaded", completed ); | 
 | 	window.removeEventListener( "load", completed ); | 
 | 	jQuery.ready(); | 
 | } | 
 |  | 
 | // Catch cases where $(document).ready() is called | 
 | // after the browser event has already occurred. | 
 | // Support: IE9-10 only | 
 | // Older IE sometimes signals "interactive" too soon | 
 | if ( document.readyState === "complete" || | 
 | 	( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { | 
 |  | 
 | 	// Handle it asynchronously to allow scripts the opportunity to delay ready | 
 | 	window.setTimeout( jQuery.ready ); | 
 |  | 
 | } else { | 
 |  | 
 | 	// Use the handy event callback | 
 | 	document.addEventListener( "DOMContentLoaded", completed ); | 
 |  | 
 | 	// A fallback to window.onload, that will always work | 
 | 	window.addEventListener( "load", completed ); | 
 | } | 
 |  | 
 | } ); |