|  | var baseMerge = require('./_baseMerge'), | 
						
						
							|  |     isObject = require('./isObject'); | 
						
						
							|  | 
 | 
						
						
							|  | /** | 
						
						
							|  |  * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source | 
						
						
							|  |  * objects into destination objects that are passed thru. | 
						
						
							|  |  * | 
						
						
							|  |  * @private | 
						
						
							|  |  * @param {*} objValue The destination value. | 
						
						
							|  |  * @param {*} srcValue The source value. | 
						
						
							|  |  * @param {string} key The key of the property to merge. | 
						
						
							|  |  * @param {Object} object The parent object of `objValue`. | 
						
						
							|  |  * @param {Object} source The parent object of `srcValue`. | 
						
						
							|  |  * @param {Object} [stack] Tracks traversed source values and their merged | 
						
						
							|  |  *  counterparts. | 
						
						
							|  |  * @returns {*} Returns the value to assign. | 
						
						
							|  |  */ | 
						
						
							|  | function customDefaultsMerge(objValue, srcValue, key, object, source, stack) { | 
						
						
							|  |   if (isObject(objValue) && isObject(srcValue)) { | 
						
						
							|  |     // Recursively merge objects and arrays (susceptible to call stack limits). | 
						
						
							|  |     stack.set(srcValue, objValue); | 
						
						
							|  |     baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack); | 
						
						
							|  |     stack['delete'](srcValue); | 
						
						
							|  |   } | 
						
						
							|  |   return objValue; | 
						
						
							|  | } | 
						
						
							|  | 
 | 
						
						
							|  | module.exports = customDefaultsMerge;
 |