You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
	
	
		
			
				
					
						
							|  |  |  |  | define(function () { | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   // Some functions take a variable number of arguments, or a few expected
 | 
					
						
							|  |  |  |  |   // arguments at the beginning and then a variable number of values to operate
 | 
					
						
							|  |  |  |  |   // on. This helper accumulates all remaining arguments past the function’s
 | 
					
						
							|  |  |  |  |   // argument length (or an explicit `startIndex`), into an array that becomes
 | 
					
						
							|  |  |  |  |   // the last argument. Similar to ES6’s "rest parameter".
 | 
					
						
							|  |  |  |  |   function restArguments(func, startIndex) { | 
					
						
							|  |  |  |  |     startIndex = startIndex == null ? func.length - 1 : +startIndex; | 
					
						
							|  |  |  |  |     return function() { | 
					
						
							|  |  |  |  |       var length = Math.max(arguments.length - startIndex, 0), | 
					
						
							|  |  |  |  |           rest = Array(length), | 
					
						
							|  |  |  |  |           index = 0; | 
					
						
							|  |  |  |  |       for (; index < length; index++) { | 
					
						
							|  |  |  |  |         rest[index] = arguments[index + startIndex]; | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |       switch (startIndex) { | 
					
						
							|  |  |  |  |         case 0: return func.call(this, rest); | 
					
						
							|  |  |  |  |         case 1: return func.call(this, arguments[0], rest); | 
					
						
							|  |  |  |  |         case 2: return func.call(this, arguments[0], arguments[1], rest); | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |       var args = Array(startIndex + 1); | 
					
						
							|  |  |  |  |       for (index = 0; index < startIndex; index++) { | 
					
						
							|  |  |  |  |         args[index] = arguments[index]; | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |       args[startIndex] = rest; | 
					
						
							|  |  |  |  |       return func.apply(this, args); | 
					
						
							|  |  |  |  |     }; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   return restArguments; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | }); |