|  | var LazyWrapper = require('./_LazyWrapper'), | 
|  | LodashWrapper = require('./_LodashWrapper'), | 
|  | baseAt = require('./_baseAt'), | 
|  | flatRest = require('./_flatRest'), | 
|  | isIndex = require('./_isIndex'), | 
|  | thru = require('./thru'); | 
|  |  | 
|  | /** | 
|  | * This method is the wrapper version of `_.at`. | 
|  | * | 
|  | * @name at | 
|  | * @memberOf _ | 
|  | * @since 1.0.0 | 
|  | * @category Seq | 
|  | * @param {...(string|string[])} [paths] The property paths to pick. | 
|  | * @returns {Object} Returns the new `lodash` wrapper instance. | 
|  | * @example | 
|  | * | 
|  | * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] }; | 
|  | * | 
|  | * _(object).at(['a[0].b.c', 'a[1]']).value(); | 
|  | * // => [3, 4] | 
|  | */ | 
|  | var wrapperAt = flatRest(function(paths) { | 
|  | var length = paths.length, | 
|  | start = length ? paths[0] : 0, | 
|  | value = this.__wrapped__, | 
|  | interceptor = function(object) { return baseAt(object, paths); }; | 
|  |  | 
|  | if (length > 1 || this.__actions__.length || | 
|  | !(value instanceof LazyWrapper) || !isIndex(start)) { | 
|  | return this.thru(interceptor); | 
|  | } | 
|  | value = value.slice(start, +start + (length ? 1 : 0)); | 
|  | value.__actions__.push({ | 
|  | 'func': thru, | 
|  | 'args': [interceptor], | 
|  | 'thisArg': undefined | 
|  | }); | 
|  | return new LodashWrapper(value, this.__chain__).thru(function(array) { | 
|  | if (length && !array.length) { | 
|  | array.push(undefined); | 
|  | } | 
|  | return array; | 
|  | }); | 
|  | }); | 
|  |  | 
|  | module.exports = wrapperAt; |