{"version":3,"sources":["pdfmake.js"],"names":["modules","__webpack_require__","moduleId","installedModules","exports","module","id","loaded","call","m","c","p","global","this","Buffer","Document","docDefinition","fonts","vfs","defaultClientFonts","PdfPrinter","FileSaver","saveAs","Roboto","normal","bold","italics","bolditalics","prototype","_createDoc","options","callback","printer","fs","bindFS","result","doc","createPdfKitDocument","chunks","on","chunk","push","concat","_pdfMakePages","end","_getPages","cb","ignoreBuffer","pages","open","message","win","window","getDataUrl","location","href","e","close","print","dataUrl","iFrame","document","createElement","style","position","left","src","onload","removeIFrame","body","removeChild","removeEventListener","addEventListener","appendChild","autoPrint","download","defaultFileName","getBuffer","blob","Blob","type","name","byteArray","Uint8Array","buffer","getBase64","toString","createPdf","pdfMake","typedArraySupport","Bar","arr","foo","constructor","subarray","byteLength","kMaxLength","TYPED_ARRAY_SUPPORT","arg","length","parent","undefined","fromNumber","fromString","arguments","fromObject","that","allocate","checked","i","string","encoding","write","object","isBuffer","fromBuffer","isArray","fromArray","TypeError","ArrayBuffer","fromTypedArray","fromArrayBuffer","fromArrayLike","fromJsonObject","copy","array","_augment","data","__proto__","_isBuffer","fromPool","poolSize","rootParent","RangeError","SlowBuffer","subject","buf","len","loweredCase","utf8ToBytes","base64ToBytes","toLowerCase","slowToString","start","Infinity","hexSlice","utf8Slice","asciiSlice","binarySlice","base64Slice","utf16leSlice","hexWrite","offset","Number","remaining","strLen","Error","parsed","parseInt","substr","isNaN","utf8Write","blitBuffer","asciiWrite","asciiToBytes","binaryWrite","base64Write","ucs2Write","utf16leToBytes","base64","fromByteArray","slice","Math","min","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","decodeCodePointsArray","codePoints","MAX_ARGUMENTS_LENGTH","String","fromCharCode","apply","ret","out","toHex","bytes","checkOffset","ext","checkInt","value","max","objectWriteUInt16","littleEndian","j","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","ieee754","writeDouble","base64clean","str","stringtrim","replace","INVALID_BASE64_RE","trim","n","units","leadSurrogate","charCodeAt","hi","lo","toByteArray","dst","INSPECT_MAX_BYTES","b","compare","a","x","y","isEncoding","list","pos","item","equals","inspect","match","join","indexOf","val","byteOffset","arrayIndexOf","foundIndex","get","readUInt8","set","v","writeUInt8","isFinite","swap","toJSON","Array","_arr","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt16LE","readUInt16BE","readUInt32LE","readUInt32BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","read","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","floor","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","target","targetStart","_set","fill","toArrayBuffer","BP","toLocaleString","lookup","decode","elt","code","PLUS","PLUS_URL_SAFE","SLASH","SLASH_URL_SAFE","NUMBER","UPPER","LOWER","b64ToByteArray","b64","L","l","tmp","placeHolders","charAt","Arr","uint8ToBase64","uint8","encode","num","tripletToBase64","temp","extraBytes","output","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","d","s","NaN","rt","abs","log","LN2","Object","fontDescriptors","fixPageMargins","margin","right","top","bottom","registerDefaultTableLayouts","layoutBuilder","registerTableLayouts","noBorders","hLineWidth","vLineWidth","paddingLeft","paddingRight","node","table","widths","headerLineOnly","headerRows","lightHorizontalLines","hLineColor","pageSize2widthAndHeight","pageSize","size","sizes","toUpperCase","width","height","updatePageOrientationInOptions","currentPage","pdfKitDoc","previousPageOrientation","orientation","renderPages","fontProvider","addPage","page","ii","il","items","renderVector","renderLine","renderImage","watermark","renderWatermark","setFontRefsToPdfDoc","line","lineHeight","getHeight","ascenderHeight","getAscenderHeight","textDecorator","drawBackground","inlines","inline","color","save","transform","encoded","font","text","addContent","fontId","fontSize","encodedText","link","restore","drawDecorations","opacity","angle","atan2","PI","rotate","origin","vector","pdfDoc","lineWidth","dash","space","undash","fillOpacity","strokeOpacity","lineJoin","ellipse","r1","r2","r","roundedRect","w","h","rect","moveTo","x1","y1","lineTo","x2","y2","points","p1","pn","closePath","lineColor","fillAndStroke","stroke","image","_width","_height","_","FontProvider","LayoutBuilder","PdfKit","ImageMeasure","noConflict","pageOrientation","compress","info","Producer","Creator","Title","title","Author","author","Subject","Keywords","keywords","images","builder","pageMargins","tableLayouts","layoutDocument","content","styles","defaultStyle","background","header","footer","pageBreakBefore","printActionRef","ref","Type","S","N","_root","OpenAction","__WEBPACK_AMD_DEFINE_RESULT__","baseCompareAscending","other","valIsNull","valIsUndef","valIsReflexive","othIsNull","othIsUndef","othIsReflexive","baseFindIndex","predicate","fromRight","index","baseIndexOf","fromIndex","indexOfNaN","baseIsFunction","baseToString","charsLeftIndex","chars","charsRightIndex","compareAscending","criteria","compareMultiple","orders","objCriteria","othCriteria","ordersLength","order","deburrLetter","letter","deburredLetters","escapeHtmlChar","chr","htmlEscapes","escapeRegExpChar","leadingChar","whitespaceChar","regexpEscapes","stringEscapes","escapeStringChar","isObjectLike","isSpace","charCode","replaceHolders","placeholder","resIndex","PLACEHOLDER","sortedUniq","iteratee","seen","computed","trimmedLeftIndex","trimmedRightIndex","unescapeHtmlChar","htmlUnescapes","runInContext","context","lodash","LazyWrapper","LodashWrapper","hasOwnProperty","wrapperClone","baseLodash","chainAll","actions","__wrapped__","__actions__","__chain__","__dir__","__filtered__","__iteratees__","__takeCount__","POSITIVE_INFINITY","__views__","lazyClone","arrayCopy","lazyReverse","clone","lazyValue","dir","isArr","isRight","arrLength","view","getView","iteratees","iterLength","takeCount","nativeMin","LARGE_ARRAY_SIZE","baseWrapperValue","reverse","outer","iterIndex","LAZY_MAP_FLAG","LAZY_FILTER_FLAG","MapCache","__data__","mapDelete","key","has","mapGet","mapHas","mapSet","SetCache","values","hash","nativeCreate","Set","cacheIndexOf","cache","isObject","cachePush","add","arrayConcat","othIndex","othLength","source","arrayEach","arrayEachRight","arrayEvery","arrayExtremum","comparator","exValue","current","arrayFilter","arrayMap","arrayPush","arrayReduce","accumulator","initFromArray","arrayReduceRight","arraySome","arraySum","assignDefaults","objectValue","sourceValue","assignOwnDefaults","assignWith","customizer","props","keys","baseAssign","baseCopy","baseAt","collection","isNil","isArrayLike","propsLength","isIndex","baseCallback","func","thisArg","argCount","bindCallback","identity","baseMatches","property","baseMatchesProperty","baseClone","isDeep","stackA","stackB","initCloneArray","tag","objToString","isFunc","funcTag","objectTag","argsTag","cloneableTags","initCloneByTag","initCloneObject","baseForOwn","subValue","baseDelay","wait","args","FUNC_ERROR_TEXT","setTimeout","baseDifference","getIndexOf","isCommon","createCache","valuesLength","valuesIndex","baseEvery","baseEach","baseExtremum","baseFill","baseFilter","baseFind","eachFunc","retKey","baseFlatten","isStrict","isArguments","baseForIn","baseFor","keysIn","baseForOwnRight","baseForRight","baseFunctions","isFunction","baseGet","path","pathKey","toObject","baseIsEqual","isLoose","baseIsEqualDeep","equalFunc","objIsArr","othIsArr","objTag","arrayTag","othTag","isTypedArray","objIsObj","othIsObj","isSameTag","equalByTag","objIsWrapped","othIsWrapped","equalArrays","equalObjects","pop","baseIsMatch","matchData","noCustomizer","objValue","srcValue","baseMap","getMatchData","isKey","isStrictComparable","toPath","baseSlice","last","baseMerge","isSrcArr","baseMergeDeep","mergeFunc","isPlainObject","toPlainObject","baseProperty","basePropertyDeep","basePullAt","indexes","previous","splice","baseRandom","nativeFloor","nativeRandom","baseReduce","initFromCollection","baseSome","baseSortBy","comparer","sort","baseSortByOrder","getCallback","baseSum","baseUniq","isLarge","seenIndex","baseValues","baseWhile","isDrop","action","binaryIndex","retHighest","low","high","HALF_MAX_ARRAY_LENGTH","mid","binaryIndexBy","valIsNaN","isDef","isReflexive","setLow","MAX_ARRAY_INDEX","bufferClone","composeArgs","partials","holders","holdersLength","argsIndex","argsLength","nativeMax","leftIndex","leftLength","composeArgsRight","holdersIndex","rightIndex","rightLength","createAggregator","setter","initializer","createAssigner","assigner","restParam","sources","guard","isIterateeCall","createBaseEach","getLength","isLength","iterable","createBaseFor","keysFunc","createBindWrapper","wrapper","fn","root","Ctor","createCtorWrapper","createCompounder","words","deburr","thisBinding","baseCreate","createCurry","flag","curryFunc","arity","createWrapper","createDefaults","createExtremum","toIterable","createFind","createFindIndex","createFindKey","objectFunc","createFlow","funcs","thru","getFuncName","funcName","getData","isLaziable","ARY_FLAG","CURRY_FLAG","PARTIAL_FLAG","REARG_FLAG","plant","createForEach","arrayFunc","createForIn","createForOwn","createObjectMapper","isMapKeys","mapped","createPadDir","createPadding","createPartial","partialFunc","createReduce","createHybridWrapper","bitmask","partialsRight","holdersRight","argPos","ary","isCurry","isCurryRight","argsHolders","newArgPos","newArity","newsHolders","newHoldersRight","newPartials","newPartialsRight","PARTIAL_RIGHT_FLAG","isCurryBound","BIND_FLAG","BIND_KEY_FLAG","newData","setData","isBind","isBindKey","reorder","isAry","CURRY_BOUND_FLAG","CURRY_RIGHT_FLAG","strLength","nativeIsFinite","padLength","repeat","nativeCeil","createPartialWrapper","createRound","methodName","number","precision","createSortedIndex","mergeData","baseSetData","arrValue","othValue","boolTag","dateTag","errorTag","numberTag","regexpTag","stringTag","objProps","objLength","othProps","skipCtor","objCtor","othCtor","realNames","otherFunc","pairs","getNative","isNative","transforms","input","arrayBufferTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reFlags","exec","lastIndex","invokePath","reIsUint","test","MAX_SAFE_INTEGER","reIsPlainProp","reIsDeepProp","srcBitmask","newBitmask","isCombo","mergeDefaults","merge","pickByArray","pickByCallback","oldArray","shimKeys","allowIndexes","rePropName","quote","reEscapeChar","compact","drop","dropRight","dropRightWhile","dropWhile","first","flatten","flattenDeep","initial","lastIndexOf","pull","remove","rest","take","takeRight","takeRightWhile","takeWhile","uniq","isSorted","unzip","group","unzipWith","xor","zipObject","chain","tap","interceptor","wrapperChain","wrapperCommit","wrapperPlant","wrapperReverse","wrapped","wrapperToString","wrapperValue","every","filter","findWhere","find","includes","isString","map","pluck","reject","sample","toArray","rand","shuffle","some","sortBy","sortByOrder","where","after","before","debounce","cancel","timeoutId","clearTimeout","maxTimeoutId","lastCalled","trailingCall","complete","isCalled","now","delayed","stamp","maxDelayed","trailing","debounced","leading","maxWait","leadingCall","memoize","resolver","memoized","Cache","negate","once","otherArgs","spread","throttle","wrap","cloneDeep","gt","gte","propertyIsEnumerable","isBoolean","isDate","isElement","nodeType","isEmpty","isEqual","isError","isMatch","isNumber","reIsNative","fnToString","reIsHostCtor","isNull","isRegExp","typedArrayTags","isUndefined","lt","lte","create","properties","functions","defaultValue","invert","multiValue","isProto","skipIndexes","nested","valuesIn","inRange","random","floating","noMin","noMax","parseFloat","capitalize","reLatin1","reComboMark","endsWith","escape","reHasUnescapedHtml","reUnescapedHtml","escapeRegExp","reHasRegExpChars","reRegExpChars","pad","radix","nativeParseInt","reHasHexPrefix","startsWith","template","otherOptions","settings","templateSettings","isEscaping","isEvaluating","imports","importsKeys","importsValues","interpolate","reNoMatch","reDelimiters","RegExp","reInterpolate","reEsTemplate","evaluate","sourceURL","templateCounter","escapeValue","interpolateValue","esTemplateValue","evaluateValue","reUnescapedString","variable","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","attempt","Function","trimLeft","trimRight","trunc","DEFAULT_TRUNC_LENGTH","omission","DEFAULT_TRUNC_OMISSION","separator","search","newEnd","substring","unescape","reHasEscapedHtml","reEscapedHtml","pattern","reWords","matches","constant","matchesProperty","mixin","isObj","methodNames","oldDash","noop","propertyOf","range","step","times","MAX_ARRAY_LENGTH","uniqueId","prefix","idCounter","augend","addend","sum","defaults","pick","contextProps","Date","arrayProto","objectProto","stringProto","WeakMap","ceil","nativeIsArray","nativeKeys","nativeNow","NEGATIVE_INFINITY","metaMap","support","reEscape","reEvaluate","baseEachRight","count","HOT_SPAN","HOT_COUNT","difference","findIndex","findLastIndex","intersection","arrays","caches","pullAt","sortedIndex","sortedLastIndex","union","without","zip","zipWith","wrapperConcat","at","countBy","findLast","forEach","forEachRight","groupBy","indexBy","invoke","isProp","partition","reduce","reduceRight","sortByAll","getTime","bind","bindAll","bindKey","curry","curryRight","defer","delay","flow","flowRight","modArgs","partial","partialRight","rearg","assign","defaultsDeep","findKey","findLastKey","forIn","forInRight","forOwn","forOwnRight","mapKeys","mapValues","omit","camelCase","word","kebabCase","padLeft","padRight","snakeCase","startCase","method","methodOf","round","backflow","collect","compose","each","eachRight","extend","methods","select","tail","unique","all","any","contains","eq","detect","foldl","foldr","head","include","inject","VERSION","filtered","isFilter","takeName","dropName","operationName","createCallback","checkIteratee","retUnwrapped","lodashFunc","isHybrid","isLazy","useLazy","onlyLazy","chainName","names","commit","run","valueOf","mapTag","setTag","weakMapTag","upper","lower","À","Á","Â","Ã","Ä","Å","à","á","â","ã","ä","å","Ç","ç","Ð","ð","È","É","Ê","Ë","è","é","ê","ë","Ì","Í","Î","Ï","ì","í","î","ï","Ñ","ñ","Ò","Ó","Ô","Õ","Ö","Ø","ò","ó","ô","õ","ö","ø","Ù","Ú","Û","Ü","ù","ú","û","ü","Ý","ý","ÿ","Æ","æ","Þ","þ","ß","&","<",">","\"","'","`","&","<",">",""","'","`","objectTypes","function","0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","f","t","u","\\","\n","\r","
","
","freeExports","freeModule","freeGlobal","freeSelf","self","freeWindow","webpackPolyfill","deprecate","paths","children","typeName","fontWrappers","fontDef","FontWrapper","provideFont","familyName","fontFamily","fontWrapper","pdfFonts","pdfkitDoc","fontName","MAX_CHAR_TYPES","charCatalogue","defineProperty","getFont","ascender","decender","pseudoName","postscriptName","_fontFamilies","_font","widthOfString","toCharCode","char","charTypesInInline","split","characterFitInFontWithIndex","use","addAll","otherArray","imageMeasure","tracker","TraversalTracker","decorateNode","positions","canvas","resetXY","DocMeasure","DocumentContext","PageElementWriter","ColumnCalculator","TableProcessor","Line","pack","offsetVector","fontStringify","TextTools","StyleContextStack","docStructure","styleDictionary","pageBreakBeforeFct","addPageBreaksIfNecessary","linearNodeList","nodeInfo","startPosition","pageNumbers","stack","followingNodeList","pageBreak","pageBreakCalculated","pageNumber","followingNodesOnPage","node0","nodesOnNextPage","previousNodesOnPage","resetXYs","docMeasure","tryLayoutDocument","measureDocument","writer","_this","startTracking","addBackground","processNode","addHeadersAndFooters","addWatermark","backgroundGetter","pageBackground","getCurrentPage","beginUnbreakableBlock","commitUnbreakableBlock","addStaticRepeatable","headerOrFooter","sizeFunction","addDynamicRepeatable","nodeGetter","pageIndex","headerSizeFct","footerSizeFct","getSize","targetWidth","sqrt","textTools","styleContextStack","sizeOfString","defaultFont","getOwnPropertyNames","watermarkObject","applyMargins","_margin","moveToNextPage","moveDown","addMargin","absPosition","absolutePosition","beginDetachedBlock","processVerticalContainer","columns","processColumns","ul","processList","ol","processTable","processLeaf","processImage","processCanvas","qr","processQr","_span","JSON","stringify","endDetachedBlock","columnNode","gapArray","gap","gaps","availableWidth","_gap","buildColumnWidths","processRow","tableBody","tableRow","storePageBreakData","pageDesc","pageBreaks","desc","prevPage","prevY","colLeftOffset","getEndingCell","column","columnIndex","rowSpan","endingRow","auto","beginColumnGroup","_calcWidth","leftOffset","colSpan","beginColumn","_columnEndingContext","markEnding","completeColumnGroup","orderedList","addMarkerToFirstLeaf","nextMarker","marker","_minWidth","addVector","markerLine","addInline","_inlines","addLine","gapSize","_gapSize","listMarker","tableNode","processor","beginTable","beginRow","_offsets","offsets","endRow","endTable","buildNextLine","currentHeight","maxHeight","textNode","hasEnoughSpaceForInline","shift","lastLineInParagraph","addImage","_minHeight","availableHeight","addQr","events","event","callbacks","stopTracking","emit","innerBlock","styleStack","autoImageIndex","qrEncoder","measureNode","extendMargins","_maxWidth","getNodeMargin","processSingleMargins","currentMargin","marginLeft","marginTop","marginRight","marginBottom","flattenStyleArray","styleArray","flattenedStyles","styleName","convertMargin","flattenedStyleArray","measureColumns","measureVerticalContainer","measureList","measureTable","measureLeaf","measureImage","measureCanvas","measureQr","convertIfBase64Image","label","imageSize","fit","factor","_alignment","getProperty","buildInlines","minWidth","maxWidth","gapSizeForList","isOrderedList","listItems","longestNo","buildMarker","counter","radius","_maxHeight","isOrdered","nextItem","measures","measureMinMax","measureCb","fillColor","getLayout","layout","defaultLayout","vLineColor","paddingTop","paddingBottom","getOffsets","totalOffset","prevRightPadding","lOffset","total","extendWidthsForColSpans","q","colSpans","span","currentMinMax","getMinMax","col","minDifference","maxDifference","markSpans","rowData","markVSpans","row","extendTableWidths","_layout","cols","rows","i2","l2","measure","splitWords","noWrap","results","WORD_RE","isNewLine","shouldAddLine","lineEnd","copyStyle","destination","normalizeTextArray","removeDiacritics","diacriticsMap","getStyleProperty","textArray","normalized","decoration","decorationColor","decorationStyle","leadingSpaces","LEADING","trailingSpaces","TRAILING","leadingCut","trailingCut","alignment","getTrimmedWidth","currentLineWidth","measured","Ą","Ć","Ę","Ł","Ń","Ś","Ź","Ż","ą","ć","ę","ł","ń","ś","ź","ż","styleOverrides","styleNameOrOverride","howMany","autopush","styleNames","styleOverrideObject","pushSOO","pushedItems","autoColumns","autoMin","autoMax","starColumns","starMaxMin","starMaxMax","fixedColumns","initial_availableWidth","isAutoColumn","isStarColumn","elasticWidth","minW","maxW","W","starSize","maxStar","starCount","obj","functionToCheck","getType","generateFrame","MODES","numeric","MODE_NUMERIC","alphanumeric","MODE_ALPHANUMERIC","octet","MODE_OCTET","ECCLEVELS","ECCLEVEL_L","M","ECCLEVEL_M","Q","ECCLEVEL_Q","H","ECCLEVEL_H","ver","version","ecclevel","eccLevel","mode","mask","NUMERIC_REGEXP","ALPHANUMERIC_OUT_REGEXP","validatedata","getmaxdatalen","generate","buildCanvas","foreground","matrix","modSize","cd","_canvas","VERSIONS","MODE_TERMINATOR","MODE_KANJI","ALPHANUMERIC_REGEXP","GF256_MAP","GF256_INVMAP","GF256_GENPOLY","prevpoly","poly","ALPHANUMERIC_MAP","MASKFUNCS","needsverinfo","getsizebyver","nfullbits","nbits","ndatabits","ndatalenbits","newdata","ch","maxbuflen","bits","datalen","nlenbits","calculateecc","genpoly","modulus","polylen","genpolylen","quotient","augumenteccs","nblocks","subsizes","subsize","subsize0","pivot","eccs","nitemsperblock","augumentbch","makebasematrix","reserved","blit","aligns","minj","maxj","k","putdata","jj","maskdata","maskf","putformatinfo","evaluatematrix","PENALTY_CONSECUTIVE","PENALTY_TWOBYTWO","PENALTY_FINDERLIKE","PENALTY_DENSITY","evaluategroup","groups","score","nblacks","nextrow","bestmask","bestscore","snapshots","endingCell","pageOrientationString","currentPageOrientation","bottomMostContext","c1","c2","bottomMost","lastColumnWidth","saved","calculateBottomMost","destContext","saveContextInEndingCell","initializePage","pageSnapshot","getPageSize","newPageOrientation","nextPageIndex","createNewPage","newPageCreated","getCurrentPosition","innerHeight","innerWidth","pageInnerHeight","pageInnerWidth","verticalRatio","horizontalRatio","transactionLevel","repeatables","ElementWriter","fitOnPage","addFct","dontUpdateContextPosition","ignoreContextX","ignoreContextY","addFragment","fragment","useBlockXOffset","useBlockYOffset","nextPage","rep","originalX","pushContext","forcedX","forcedY","unbreakableContext","popContext","nbPages","xOffset","yOffset","currentBlockToRepeatable","pushToRepeatables","popFromRepeatables","contextStack","addPageItem","cloneLine","getCurrentPositionOnPage","alignLine","getWidth","newLineForced","additionalSpacing","alignImage","imageWidth","block","ctx","img","contextOrWidth","inlineWidths","getTableInnerContentWidth","prepareRowSpanData","rsd","lastWidth","paddings","lBorder","tableWidth","rowSpanData","cleanUpRepeatables","rowsWithoutPageBreak","keepWithHeaderRows","dontBreakRows","drawHorizontalLine","onRowBreak","rowIndex","rowPaddingTop","topLineWidth","bottomLineWidth","rowPaddingBottom","rowCallback","rowTopY","reservedAtBottom","lineIndex","overrideY","currentLine","shouldDrawLine","drawVerticalLine","y0","vLineIndex","getLineXs","_colSpan","endingPage","endingY","xs","ys","hasBreaks","skipOrphanePadding","yi","yl","willBreak","rowBreakWithoutHeader","hzLineOffset","colIndex","wBorder","xf","yf","hLineWhenBroken","headerRepeatable","PDFDocument","PDFObject","PDFPage","PDFReference","stream","__hasProp","__extends","child","ctor","__super__","_super","_ref","_ref1","_pageBuffer","_pageBufferStart","_waiting","_ended","_offset","Pages","Count","Kids","initColor","initVector","initFonts","initText","initImages","CreationDate","_write","_results","bufferPages","flushPages","dictionary","margins","_ctm","bufferedPageRange","switchToPage","_i","_len","_read","_refEnd","_finalize","filename","err","pipe","createWriteStream","_info","embed","xRefOffset","convert","Size","Root","Info","Readable","Stream","EE","EventEmitter","inherits","Writable","Duplex","Transform","PassThrough","dest","ondata","writable","pause","ondrain","readable","resume","onend","didOnEnd","onclose","destroy","onerror","er","cleanup","listenerCount","removeListener","_isStdio","_events","_maxListeners","defaultMaxListeners","setMaxListeners","handler","listeners","error","addListener","listener","newListener","warned","console","trace","g","fired","removeAllListeners","evlistener","emitter","superCtor","super_","enumerable","configurable","TempCtor","process","ReadableState","hwm","highWaterMark","defaultHwm","objectMode","pipes","pipesCount","flowing","ended","endEmitted","reading","sync","needReadable","emittedReadable","readableListening","readableObjectMode","defaultEncoding","ranOut","awaitDrain","readingMore","decoder","StringDecoder","_readableState","readableAddChunk","state","addToFront","chunkInvalid","util","isNullOrUndefined","onEofChunk","unshift","emitReadable","maybeReadMore","needMoreData","roundUpToNextPowerOf2","MAX_HWM","howMuchToRead","debug","nextTick","emitReadable_","maybeReadMore_","pipeOnDrain","resumeScheduled","resume_","fromList","stringMode","cpy","endReadable","debuglog","setEncoding","enc","nOrig","doRead","pipeOpts","onunpipe","onfinish","_writableState","needDrain","unpipe","doEnd","stdout","stderr","endFn","dests","ev","paused","_fromList","cleanUpNextTick","draining","currentQueue","queue","queueIndex","drainQueue","timeout","Item","fun","browser","env","argv","versions","off","binding","cwd","chdir","umask","objectToString","isSymbol","re","isPrimitive","o","allowHalfOpen","objectKeys","WriteReq","WritableState","writableObjectMode","ending","finished","noDecode","decodeStrings","writing","corked","bufferProcessing","onwrite","writecb","writelen","pendingcb","prefinished","errorEmitted","writeAfterEnd","validChunk","valid","decodeChunk","writeOrBuffer","doWrite","writev","_writev","onwriteError","onwriteStateUpdate","needFinish","clearBuffer","afterWrite","onwriteDrain","finishMaybe","cbs","entry","prefinish","need","endWritable","cork","uncork","assertEncoding","isBufferEncoding","passThroughWrite","utf16DetectIncompleteChar","charReceived","charLength","base64DetectIncompleteChar","surrogateSize","detectIncompleteChar","charBuffer","charStr","available","cr","TransformState","afterTransform","needTransform","transforming","writechunk","ts","_transformState","rs","_flush","done","ws","_transform","writeencoding","__dirname","VirtualFileSystem","fileSystem","baseSystem","fixFilename","readFileSync","base64content","writeFileSync","escapable","escapableRe","swapBytes","\t","\b","\f","(",")","buff","isUnicode","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","_j","zlib","__bind","me","finalize","gen","deflate","Filter","uncompressedLength","initDeflate","createDeflate","Length","_base","zlibBuffer","engine","buffers","nread","onError","onEnd","zlibBufferSync","flushFlag","Z_FINISH","_processChunk","Deflate","opts","Zlib","DEFLATE","Inflate","INFLATE","Gzip","GZIP","Gunzip","GUNZIP","DeflateRaw","DEFLATERAW","InflateRaw","INFLATERAW","Unzip","UNZIP","_opts","_chunkSize","chunkSize","Z_DEFAULT_CHUNK","flush","Z_NO_FLUSH","Z_PARTIAL_FLUSH","Z_SYNC_FLUSH","Z_FULL_FLUSH","Z_BLOCK","_flushFlag","Z_MIN_CHUNK","Z_MAX_CHUNK","windowBits","Z_MIN_WINDOWBITS","Z_MAX_WINDOWBITS","level","Z_MIN_LEVEL","Z_MAX_LEVEL","memLevel","Z_MIN_MEMLEVEL","Z_MAX_MEMLEVEL","strategy","Z_FILTERED","Z_HUFFMAN_ONLY","Z_RLE","Z_FIXED","Z_DEFAULT_STRATEGY","_binding","_hadError","errno","codes","Z_DEFAULT_COMPRESSION","init","Z_DEFAULT_WINDOWBITS","Z_DEFAULT_MEMLEVEL","_buffer","_closed","_level","_strategy","assert","ok","Z_DEFAULT_LEVEL","Z_OK","Z_STREAM_END","Z_NEED_DICT","Z_ERRNO","Z_STREAM_ERROR","Z_DATA_ERROR","Z_MEM_ERROR","Z_BUF_ERROR","Z_VERSION_ERROR","createInflate","createDeflateRaw","createInflateRaw","createGzip","createGunzip","createUnzip","deflateSync","gzip","gzipSync","deflateRaw","deflateRawSync","unzipSync","inflate","inflateSync","gunzip","gunzipSync","inflateRaw","inflateRawSync","params","reset","kind","availInAfter","availOutAfter","have","availOutBefore","async","inOff","availInBefore","newReq","writeSync","req","init_done","write_in_progress","pending_close","bufferSet","msg","zstream","zlib_deflate","zlib_inflate","constants","NONE","strm","status","deflateInit2","Z_DEFLATED","inflateInit2","_error","_writeCheck","in_off","in_len","out_off","out_len","avail_in","next_in","avail_out","next_out","deflateEnd","inflateEnd","deflateReset","inflateReset","-1","-2","-3","-4","-5","-6","ZStream","total_in","total_out","data_type","adler","errorCode","rank","zero","flush_pending","pending","utils","arraySet","pending_buf","pending_out","flush_block_only","trees","_tr_flush_block","block_start","strstart","put_byte","putShortMSB","read_buf","adler32","crc32","longest_match","cur_match","chain_length","max_chain_length","scan","best_len","prev_length","nice_match","w_size","MIN_LOOKAHEAD","_win","wmask","w_mask","prev","strend","MAX_MATCH","scan_end1","scan_end","good_match","lookahead","match_start","fill_window","more","_w_size","window_size","hash_size","insert","MIN_MATCH","ins_h","hash_shift","hash_mask","deflate_stored","max_block_size","pending_buf_size","BS_NEED_MORE","max_start","BS_FINISH_STARTED","BS_FINISH_DONE","deflate_fast","hash_head","bflush","match_length","_tr_tally","max_lazy_match","last_lit","BS_BLOCK_DONE","deflate_slow","max_insert","prev_match","match_available","deflate_rle","deflate_huff","lm_init","configuration_table","max_lazy","good_length","nice_length","max_chain","DeflateState","gzhead","gzindex","last_flush","w_bits","hash_bits","dyn_ltree","Buf16","HEAP_SIZE","dyn_dtree","D_CODES","bl_tree","BL_CODES","l_desc","d_desc","bl_desc","bl_count","MAX_BITS","heap","L_CODES","heap_len","heap_max","depth","l_buf","lit_bufsize","d_buf","opt_len","static_len","bi_buf","bi_valid","deflateResetKeep","Z_UNKNOWN","INIT_STATE","BUSY_STATE","_tr_init","deflateSetHeader","MAX_MEM_LEVEL","Buf8","deflateInit","MAX_WBITS","DEF_MEM_LEVEL","old_flush","beg","FINISH_STATE","hcrc","extra","comment","time","os","EXTRA_STATE","OS_CODE","level_flags","PRESET_DICT","NAME_STATE","COMMENT_STATE","HCRC_STATE","bstate","_tr_align","_tr_stored_block","LENGTH_CODES","LITERALS","Config","deflateInfo","TYPED_OK","Uint16Array","Int32Array","shrinkBuf","fnTyped","src_offs","dest_offs","flattenChunks","fnUntyped","setTyped","Buf32","d_code","dist","_dist_code","put_short","send_bits","Buf_size","send_code","tree","bi_reverse","bi_flush","gen_bitlen","xbits","dyn_tree","max_code","stree","stat_desc","static_tree","has_stree","extra_bits","base","extra_base","max_length","overflow","gen_codes","next_code","tr_static_init","base_length","extra_lbits","_length_code","base_dist","extra_dbits","static_ltree","static_dtree","static_l_desc","StaticTreeDesc","static_d_desc","static_bl_desc","extra_blbits","MAX_BL_BITS","init_block","END_BLOCK","bi_windup","copy_block","smaller","_n2","_m2","pqdownheap","compress_block","ltree","dtree","lc","lx","build_tree","elems","scan_tree","curlen","prevlen","nextlen","max_count","min_count","REP_3_6","REPZ_3_10","REPZ_11_138","send_tree","build_bl_tree","max_blindex","bl_order","send_all_trees","lcodes","dcodes","blcodes","detect_data_type","black_mask","Z_BINARY","Z_TEXT","static_init_done","TreeDesc","stored_len","STORED_BLOCK","STATIC_TREES","opt_lenb","static_lenb","DYN_TREES","DIST_CODE_LEN","s1","s2","makeTable","crc","crcTable","ZSWAP32","InflateState","havedict","flags","dmax","check","wbits","wsize","whave","wnext","hold","lencode","distcode","lenbits","distbits","ncode","nlen","ndist","next","lens","work","lendyn","distdyn","sane","back","was","inflateResetKeep","HEAD","ENOUGH_LENS","ENOUGH_DISTS","inflateReset2","inflateInit","DEF_WBITS","fixedtables","virgin","sym","lenfix","distfix","inflate_table","LENS","DISTS","updatewindow","put","_in","_out","from","from_source","here_bits","here_op","here_val","last_bits","last_op","last_val","here","hbuf","TYPE","TYPEDO","inf_leave","FLAGS","BAD","DICTID","TIME","OS","xflags","EXLEN","extra_len","EXTRA","NAME","COMMENT","HCRC","DICT","Z_TREES","CHECK","STORED","LEN_","TABLE","COPY_","COPY","LENLENS","CODES","CODELENS","LEN","inflate_fast","LIT","LENEXT","DIST","DISTEXT","MATCH","LENGTH","DONE","MEM","SYNC","inflateGetHeader","inflateInfo","s_window","lcode","dcode","lmask","dmask","op","dolen","dodist","MAXBITS","lbase","lext","dbase","dext","lens_index","table_index","incr","curr","used","huff","base_index","offs","extra_index","Z_NO_COMPRESSION","Z_BEST_SPEED","Z_BEST_COMPRESSION","stylize","stylizeNoColor","colors","showHidden","_extend","customInspect","stylizeWithColor","formatValue","styleType","arrayToHash","idx","recurseTimes","primitive","formatPrimitive","visibleKeys","formatError","braces","toUTCString","formatArray","formatProperty","reduceToSingleString","simple","getOwnPropertyDescriptor","numLinesEst","cur","ar","prop","formatRegExp","format","objects","deprecated","throwDeprecation","traceDeprecation","noDeprecation","debugEnviron","debugs","NODE_DEBUG","pid","italic","underline","inverse","white","grey","black","blue","cyan","green","magenta","red","yellow","special","boolean","null","date","regexp","replacer","truncate","getMessage","actual","operator","expected","fail","stackStartFunction","AssertionError","_deepEqual","multiline","ignoreCase","objEquiv","aIsArgs","bIsArgs","pSlice","ka","kb","expectedException","_throws","shouldThrow","hasOwn","generatedMessage","captureStackTrace","fn_name","next_line","equal","notEqual","deepEqual","notDeepEqual","strictEqual","notStrictEqual","doesNotThrow","ifError","dimensions","DEFAULT_MARGINS","SIZES","resources","ProcSet","defineProperties","Font","xobjects","XObject","ext_gstates","ExtGState","patterns","Pattern","annotations","Annots","Parent","MediaBox","Contents","Resources","maxY","4A0","2A0","A0","A1","A2","A3","A4","A5","A6","A7","A8","A9","A10","B0","B1","B2","B3","B4","B5","B6","B7","B8","B9","B10","C0","C1","C2","C3","C4","C5","C6","C7","C8","C9","C10","RA0","RA1","RA2","RA3","RA4","SRA0","SRA1","SRA2","SRA3","SRA4","EXECUTIVE","FOLIO","LEGAL","LETTER","TABLOID","PDFGradient","PDFLinearGradient","PDFRadialGradient","namedColors","_opacityRegistry","_opacityCount","_gradCount","_normalizeColor","hex","part","_setColor","gstate","_sMasked","SMask","_setColorSpace","_fillColor","strokeColor","_doOpacity","ca","CA","linearGradient","radialGradient","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","blanchedalmond","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","whitesmoke","yellowgreen","stops","embedded","_colorSpace","stop","bounds","dx","dy","form","grad","m0","m1","m11","m12","m2","m21","m22","m3","m4","m5","sMask","shader","_ref2","FunctionType","Domain","Functions","Bounds","Encode","PatternType","Shading","Matrix","toFixed","opacityGradient","CS","Sh1","Subtype","FormType","BBox","Group","G","opacity_id","ShadingType","ColorSpace","Coords","Extend","KAPPA","SVGPath","__slice","_ctmStack","_CAP_STYLES","BUTT","ROUND","SQUARE","lineCap","_JOIN_STYLES","MITER","BEVEL","miterLimit","phase","bezierCurveTo","cp1x","cp1y","cp2x","cp2y","quadraticCurveTo","cpx","ox","oy","xe","xm","ye","ym","circle","polygon","point","_windingRule","rule","isFillRule","clip","translate","cos","rad","sin","scale","xFactor","yFactor","arcToSegments","cx","cy","parameters","parse","px","py","runners","segmentToBezier","solveArc","sx","sy","commands","T","V","Z","z","cmd","curArg","foundDecimal","_name","coords","bez","ex","ey","large","rot","rx","ry","seg","segs","sweep","rotateX","a00","a01","a10","a11","cos_th","pl","segments","sfactor","sfactor_sq","sin_th","th","th0","th1","th2","th3","th_arc","x0","xc","yc","th_half","x3","y3","PDFFont","_fontCount","_fontSize","_registeredFonts","family","cacheKey","currentLineHeight","includeGap","registerFont","AFMFont","Subset","TTFFont","STANDARD_FONTS","isAFM","registerAFM","fromDFont","subset","registerTTF","toUnicodeCmap","Courier","Courier-Bold","Courier-Oblique","Courier-BoldOblique","Helvetica","Helvetica-Bold","Helvetica-Oblique","Helvetica-BoldOblique","Times-Roman","Times-Bold","Times-Italic","Times-BoldItalic","Symbol","ZapfDingbats","characters","embedAFM","embedTTF","encodeText","raw","scaleFactor","unitsPerEm","bbox","stemV","post","exists","italic_angle","italicAngle","lineGap","capHeight","os2","xHeight","familyClass","isSerif","isScript","isFixedPitch","cmap","unicode","charWidths","descriptor","firstChar","fontfile","glyph","Length1","FontName","FontFile2","FontBBox","Flags","StemV","ItalicAngle","Ascent","Descent","CapHeight","XHeight","widthOfGlyph","BaseFont","FontDescriptor","FirstChar","LastChar","Widths","Encoding","ToUnicode","unicodeMap","characterToGlyph","CmapTable","DFont","Data","Directory","GlyfTable","HeadTable","HheaTable","HmtxTable","LocaTable","MaxpTable","NameTable","OS2Table","PostTable","rawData","numFonts","contents","readString","readInt","dfont","getNamedFont","ttf","directory","hhea","maxp","hmtx","loca","glyf","xMin","yMin","xMax","yMax","character","codeMap","forGlyph","advance","readByte","writeByte","byte","byteAt","readBool","writeBool","readUInt32","b1","b2","b3","b4","writeUInt32","readInt32","int","writeInt32","readUInt16","writeUInt16","readInt16","writeInt16","writeString","stringAt","readShort","writeShort","readLongLong","b5","b6","b7","b8","writeLongLong","writeInt","attr","dataLength","dataOffset","dataOfs","handle","mapLength","mapOffset","maxIndex","maxTypeIndex","nameListOffset","nameOfs","refListOffset","typeListOffset","named","attributes","sfnt","scalarType","tableCount","searchRange","entrySelector","rangeShift","tables","checksum","adjustment","directoryLength","headOffset","log2","tableData","NameEntry","Table","subsetTag","entries","stringOffset","strings","platformID","encodingID","languageID","nameID","copyright","fontSubfamily","uniqueSubfamily","trademark","manufacturer","designer","description","vendorUrl","designerUrl","license","licenseUrl","preferredFamily","preferredSubfamily","compatibleFull","sampleText","nameTable","strCount","strTable","successorOf","file","added","alphabet","carry","isUpperCase","revision","checkSumAdjustment","magicNumber","created","modified","macStyle","lowestRecPPEM","fontDirectionHint","indexToLocFormat","glyphDataFormat","CmapEntry","charmap","subtable","endCode","glyphId","glyphIds","idDelta","idRangeOffset","saveOffset","segCount","segCountX2","startCode","_k","language","charMap","delta","deltas","diff","endCodes","glyphIDs","nextID","old","rangeOffsets","startCodes","startGlyph","_l","_len1","_len2","_len3","_len4","_len5","_len6","_len7","_m","_n","_o","_p","_q","new","maxGlyphID","lsbCount","metrics","numberOfMetrics","lsb","numGlyphs","leftSideBearings","mapping","metric","advanceWidthMax","minLeftSideBearing","minRightSideBearing","xMaxExtent","caretSlopeRise","caretSlopeRun","caretOffset","metricDataFormat","ids","maxPoints","maxContours","maxCompositePoints","maxComponentContours","maxZones","maxTwilightPoints","maxStorage","maxFunctionDefs","maxInstructionDefs","maxStackElements","maxSizeOfInstructions","maxComponentElements","maxComponentDepth","POSTSCRIPT_GLYPHS","numberOfGlyphs","underlinePosition","underlineThickness","minMemType42","maxMemType42","minMemType1","maxMemType1","glyphNameIndex","_results1","glyphFor","averageCharWidth","weightClass","widthClass","ySubscriptXSize","ySubscriptYSize","ySubscriptXOffset","ySubscriptYOffset","ySuperscriptXSize","ySuperscriptYSize","ySuperscriptXOffset","ySuperscriptYOffset","yStrikeoutSize","yStrikeoutPosition","panose","charRange","vendorID","selection","firstCharIndex","lastCharIndex","ascent","descent","winAscent","winDescent","codePageRange","defaultChar","breakChar","maxContext","lengthOf","CompoundGlyph","SimpleGlyph","numberOfContours","glyphs","old2new","compound","glyphOffsets","MORE_COMPONENTS","ARG_1_AND_2_ARE_WORDS","WE_HAVE_A_TWO_BY_TWO","WE_HAVE_AN_X_AND_Y_SCALE","WE_HAVE_A_SCALE","WE_HAVE_INSTRUCTIONS","glyphWidths","boundingBoxes","WIN_ANSI_MAP","section",402,8211,8212,8216,8217,8218,8220,8221,8222,8224,8225,8226,8230,8364,8240,8249,8250,710,8482,338,339,732,352,353,376,381,382,"__indexOf","unicodes","generateCmap","roman","unicodeCmap","glyphsFor","additionalIDs","new2old","newIDs","nextGlyphID","oldID","oldIDs","LineWrapper","_lineGap","lines","moveUp","_text","lineCallback","_initOptions","wordSpacing","_wrapper","continued","_textOptions","_line","characterSpacing","heightOfString","indent","itemIndent","levels","textIndent","bulletIndent","lineBreak","columnGap","_fragment","align","lineY","renderedWidth","spaceWidth","textWidth","wordCount","strike","LineBreaker","spaceLeft","startX","startY","ellipsis","continuedX","lastLine","paragraphGap","wordWidth","eachWord","bk","breaker","fbk","lbk","shouldContinue","wordWidths","nextBreak","required","emitLine","nextY","wc","nextSection","lh","AI","AL","BA","BK","CB","CI_BRK","CJ","CP_BRK","CR","DI_BRK","ID","IN_BRK","LF","NL","NS","PR_BRK","SA","SG","SP","UnicodeTrie","WJ","XX","characterClasses","classTrie","pairTable","lastPos","curClass","nextClass","Break","mapClass","mapFirst","nextCodePoint","nextCharClass","lastClass","shouldBreak","json","highStart","errorValue","DATA_BLOCK_LENGTH","DATA_GRANULARITY","DATA_MASK","INDEX_1_OFFSET","INDEX_2_BLOCK_LENGTH","INDEX_2_BMP_LENGTH","INDEX_2_MASK","INDEX_SHIFT","LSCP_INDEX_2_LENGTH","LSCP_INDEX_2_OFFSET","OMITTED_BMP_INDEX_1_LENGTH","SHIFT_1","SHIFT_1_2","SHIFT_2","UTF8_2B_INDEX_2_LENGTH","UTF8_2B_INDEX_2_OFFSET","BB","CL","CM","CP","EX","GL","H2","H3","HL","HY","IN","IS","JL","JT","JV","NU","OP","PO","PR","QU","RI","SY","ZW","PDFImage","_imageRegistry","_imageCount","bh","bp","bw","hp","ip","wp","valign","JPEG","PNG","channels","MARKERS","colorSpace","BitsPerComponent","Width","Height","PNGImage","imgData","palette","rgb","hasAlphaChannel","Predictor","Colors","Columns","transparency","grayscale","greyscale","indexed","loadIndexedAlphaChannel","splitAlphaChannel","alphaChannel","Decode","decodePixels","pixels","colorByteSize","pixelCount","short","colorType","compressionMethod","filterMethod","interlaceMethod","pixelBitlength","readFile","png","load","pa","paeth","pb","pc","pixelBytes","scanlineLength","upperLeft","decodePalette","copyToImageData","imageData","alpha","_decodedPalette","annotate","Rect","_convertRect","Border","Dest","note","Name","url","URI","_markup","QuadPoints","highlight","lineAnnotation","rectAnnotation","ellipseAnnotation","textAnnotation","DA","imageDictionary","realImageSrc","groupDecorations","curGroup","ll","deco","drawDecoration","maxInline","inl","firstInline","biggerInline","totalWidth","lineAscent","lw","nbDashes","rdx","nbDots","sh","sv","nbWaves","rwx","iii","__WEBPACK_AMD_DEFINE_ARRAY__","navigator","userAgent","get_URL","URL","webkitURL","save_link","createElementNS","can_use_save_link","click","MouseEvent","dispatchEvent","webkit_req_fs","webkitRequestFileSystem","req_fs","requestFileSystem","mozRequestFileSystem","throw_outside","setImmediate","force_saveable_type","fs_min_size","arbitrary_revoke_timeout","revoke","revoker","revokeObjectURL","chrome","dispatch","filesaver","event_types","auto_bom","no_auto_bom","object_url","target_view","blob_changed","dispatch_all","fs_error","createObjectURL","new_tab","safari","readyState","abortable","create_if_not_found","exclusive","INIT","webkitSlice","TEMPORARY","getDirectory","getFile","createWriter","onwriteend","toURL","ABORT_ERR","abort","WRITING","NOT_FOUND_ERR","FS_proto","msSaveOrOpenBlob","onwritestart","onprogress","onabort","__webpack_amd_options__"],"mappings":"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AASne,KAAKkH,KAAKiD,GAAa26G,IAAYN,IAAgBr6G,EAAYg6G,GACjEnkH,KAAKkH,KAAKiX,IAEF,OAAbhU,GACFgU,GAASne,KAAKkH,KAAKw9G,GAAwBv6G,EAAY,OAAW26G,KAAaN,IAAgBr6G,EAAYg6G,GACpGnkH,KAAKkH,KAAKiX,IAEfhU,EAAYnK,KAAK+jH,WACnB5lG,EAAQne,KAAKkH,KAAMk9G,EAAiBO,GAA+Bx6G,GAAay6G,IAChFzmG,EAAQne,KAAKkH,KAAKiX,GAAUhU,GAAa26G,EAAWP,IACpDpmG,GAASA,GAASqmG,IAAgBr6G,EAAYg6G,GACvCnkH,KAAKkH,KAAKiX,IAEZne,KAAKkH,KAAKlH,KAAKkH,KAAK5B,OAAS4+G,IAGtCpB,EAAY/hH,UAAU0N,OAAS,WAC7B,GAAIxE,EAMJ,OALAA,IACE/C,KAAMu5F,EAAQ9gG,KAAKK,KAAKkH,MACxB68G,UAAW/jH,KAAK+jH,UAChBC,WAAYhkH,KAAKgkH,aAKdlB,KAITtjH,EAAOD,QAAUujH,GAKZ,SAAStjH,EAAQD,GAEtBC,EAAOD,SACN2H,MACC,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,EACA,GACA,GACA,EACA,EACA,EACA,GACA,EACA,EACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,EACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,EACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,EACA,GACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,EACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,EACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA;AAED68G,UAAa,OACbC,WAAc,IAKV,SAASxkH,EAAQD,IAGtB,WACE,GAAIoiH,GAAIC,EAAIpwB,EAAIqwB,EAAIoD,EAAInD,EAAIC,EAAIE,EAAIiD,EAAIC,EAAIC,EAAIjD,EAAIkD,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIrD,EAAIsD,EAAIC,EAAIC,EAAIC,EAAIC,EAAIxD,EAAIC,EAAIC,EAAIuD,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAI1D,EAAIC,EAAIC,EAAIyD,EAAIvD,EAAIC,EAAIuD,CAEhKhnH,GAAQ0mH,GAAKA,EAAK,EAElB1mH,EAAQ2lH,GAAKA,EAAK,EAElB3lH,EAAQ6lH,GAAKA,EAAK,EAElB7lH,EAAQ6mH,GAAKA,EAAK,EAElB7mH,EAAQ+lH,GAAKA,EAAK,EAElB/lH,EAAQkjH,GAAKA,EAAK,EAElBljH,EAAQ8lH,GAAKA,EAAK,EAElB9lH,EAAQ+mH,GAAKA,EAAK,EAElB/mH,EAAQqmH,GAAKA,EAAK,EAElBrmH,EAAQ4mH,GAAKA,EAAK,EAElB5mH,EAAQ2mH,GAAKA,EAAK,GAElB3mH,EAAQymH,GAAKA,EAAK,GAElBzmH,EAAQqiH,GAAKA,EAAK,GAElBriH,EAAQkmH,GAAKA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","file":"pdfmake.min.js","sourcesContent":["/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(global) {module.exports = global[\"pdfMake\"] = __webpack_require__(1);\n\t/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {/* jslint node: true */\n\t/* jslint browser: true */\n\t/* global BlobBuilder */\n\t'use strict';\n\n\tvar PdfPrinter = __webpack_require__(6);\n\tvar FileSaver = __webpack_require__(105);\n\tvar saveAs = FileSaver.saveAs;\n\n\tvar defaultClientFonts = {\n\t\tRoboto: {\n\t\t\tnormal: 'Roboto-Regular.ttf',\n\t\t\tbold: 'Roboto-Medium.ttf',\n\t\t\titalics: 'Roboto-Italic.ttf',\n\t\t\tbolditalics: 'Roboto-Italic.ttf'\n\t\t}\n\t};\n\n\tfunction Document(docDefinition, fonts, vfs) {\n\t\tthis.docDefinition = docDefinition;\n\t\tthis.fonts = fonts || defaultClientFonts;\n\t\tthis.vfs = vfs;\n\t}\n\n\tDocument.prototype._createDoc = function(options, callback) {\n\t\tvar printer = new PdfPrinter(this.fonts);\n\t\tprinter.fs.bindFS(this.vfs);\n\n\t\tvar doc = printer.createPdfKitDocument(this.docDefinition, options);\n\t\tvar chunks = [];\n\t\tvar result;\n\n\t\tdoc.on('data', function(chunk) {\n\t\t\tchunks.push(chunk);\n\t\t});\n\t\tdoc.on('end', function() {\n\t\t\tresult = Buffer.concat(chunks);\n\t\t\tcallback(result, doc._pdfMakePages);\n\t\t});\n\t\tdoc.end();\n\t};\n\n\tDocument.prototype._getPages = function(options, cb){\n\t if (!cb) throw 'getBuffer is an async method and needs a callback argument';\n\t this._createDoc(options, function(ignoreBuffer, pages){\n\t cb(pages);\n\t });\n\t};\n\n\tDocument.prototype.open = function(message) {\n\t\t// we have to open the window immediately and store the reference\n\t\t// otherwise popup blockers will stop us\n\t\tvar win = window.open('', '_blank');\n\n\t\ttry {\n\t\t\tthis.getDataUrl(function(result) {\n\t\t\t\twin.location.href = result;\n\t\t\t});\n\t\t} catch(e) {\n\t\t\twin.close();\n\t\t\tthrow e;\n\t\t}\n\t};\n\n\n\tDocument.prototype.print = function() {\n\t this.getDataUrl(function(dataUrl) {\n\t var iFrame = document.createElement('iframe');\n\t iFrame.style.position = 'absolute';\n\t iFrame.style.left = '-99999px';\n\t iFrame.src = dataUrl;\n\t iFrame.onload = function() {\n\t function removeIFrame(){\n\t document.body.removeChild(iFrame);\n\t document.removeEventListener('click', removeIFrame);\n\t }\n\t document.addEventListener('click', removeIFrame, false);\n\t };\n\n\t document.body.appendChild(iFrame);\n\t }, { autoPrint: true });\n\t};\n\n\tDocument.prototype.download = function(defaultFileName, cb) {\n\t if(typeof defaultFileName === \"function\") {\n\t cb = defaultFileName;\n\t defaultFileName = null;\n\t }\n\n\t defaultFileName = defaultFileName || 'file.pdf';\n\t this.getBuffer(function (result) {\n\t var blob;\n\t try {\n\t blob = new Blob([result], { type: 'application/pdf' });\n\t }\n\t catch (e) {\n\t // Old browser which can't handle it without making it an byte array (ie10) \n\t if (e.name == \"InvalidStateError\") {\n\t var byteArray = new Uint8Array(result);\n\t blob = new Blob([byteArray.buffer], { type: 'application/pdf' });\n\t }\n\t }\n\t if (blob) {\n\t saveAs(blob, defaultFileName);\n\t }\n\t else {\n\t throw 'Could not generate blob';\n\t }\n\t if (typeof cb === \"function\") {\n\t cb();\n\t }\n\t });\n\t};\n\n\tDocument.prototype.getBase64 = function(cb, options) {\n\t\tif (!cb) throw 'getBase64 is an async method and needs a callback argument';\n\t\tthis._createDoc(options, function(buffer) {\n\t\t\tcb(buffer.toString('base64'));\n\t\t});\n\t};\n\n\tDocument.prototype.getDataUrl = function(cb, options) {\n\t\tif (!cb) throw 'getDataUrl is an async method and needs a callback argument';\n\t\tthis._createDoc(options, function(buffer) {\n\t\t\tcb('data:application/pdf;base64,' + buffer.toString('base64'));\n\t\t});\n\t};\n\n\tDocument.prototype.getBuffer = function(cb, options) {\n\t\tif (!cb) throw 'getBuffer is an async method and needs a callback argument';\n\t\tthis._createDoc(options, function(buffer){\n\t cb(buffer);\n\t });\n\t};\n\n\tmodule.exports = {\n\t\tcreatePdf: function(docDefinition) {\n\t\t\treturn new Document(docDefinition, window.pdfMake.fonts, window.pdfMake.vfs);\n\t\t}\n\t};\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2).Buffer))\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer, global) {/*!\n\t * The buffer module from node.js, for the browser.\n\t *\n\t * @author Feross Aboukhadijeh \n\t * @license MIT\n\t */\n\t/* eslint-disable no-proto */\n\n\tvar base64 = __webpack_require__(3)\n\tvar ieee754 = __webpack_require__(4)\n\tvar isArray = __webpack_require__(5)\n\n\texports.Buffer = Buffer\n\texports.SlowBuffer = SlowBuffer\n\texports.INSPECT_MAX_BYTES = 50\n\tBuffer.poolSize = 8192 // not used by this implementation\n\n\tvar rootParent = {}\n\n\t/**\n\t * If `Buffer.TYPED_ARRAY_SUPPORT`:\n\t * === true Use Uint8Array implementation (fastest)\n\t * === false Use Object implementation (most compatible, even IE6)\n\t *\n\t * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n\t * Opera 11.6+, iOS 4.2+.\n\t *\n\t * Due to various browser bugs, sometimes the Object implementation will be used even\n\t * when the browser supports typed arrays.\n\t *\n\t * Note:\n\t *\n\t * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n\t * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n\t *\n\t * - Safari 5-7 lacks support for changing the `Object.prototype.constructor` property\n\t * on objects.\n\t *\n\t * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n\t *\n\t * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n\t * incorrect length in some situations.\n\n\t * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n\t * get the Object implementation, which is slower but behaves correctly.\n\t */\n\tBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n\t ? global.TYPED_ARRAY_SUPPORT\n\t : typedArraySupport()\n\n\tfunction typedArraySupport () {\n\t function Bar () {}\n\t try {\n\t var arr = new Uint8Array(1)\n\t arr.foo = function () { return 42 }\n\t arr.constructor = Bar\n\t return arr.foo() === 42 && // typed array instances can be augmented\n\t arr.constructor === Bar && // constructor can be set\n\t typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n\t arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n\t } catch (e) {\n\t return false\n\t }\n\t}\n\n\tfunction kMaxLength () {\n\t return Buffer.TYPED_ARRAY_SUPPORT\n\t ? 0x7fffffff\n\t : 0x3fffffff\n\t}\n\n\t/**\n\t * Class: Buffer\n\t * =============\n\t *\n\t * The Buffer constructor returns instances of `Uint8Array` that are augmented\n\t * with function properties for all the node `Buffer` API functions. We use\n\t * `Uint8Array` so that square bracket notation works as expected -- it returns\n\t * a single octet.\n\t *\n\t * By augmenting the instances, we can avoid modifying the `Uint8Array`\n\t * prototype.\n\t */\n\tfunction Buffer (arg) {\n\t if (!(this instanceof Buffer)) {\n\t // Avoid going through an ArgumentsAdaptorTrampoline in the common case.\n\t if (arguments.length > 1) return new Buffer(arg, arguments[1])\n\t return new Buffer(arg)\n\t }\n\n\t this.length = 0\n\t this.parent = undefined\n\n\t // Common case.\n\t if (typeof arg === 'number') {\n\t return fromNumber(this, arg)\n\t }\n\n\t // Slightly less common case.\n\t if (typeof arg === 'string') {\n\t return fromString(this, arg, arguments.length > 1 ? arguments[1] : 'utf8')\n\t }\n\n\t // Unusual.\n\t return fromObject(this, arg)\n\t}\n\n\tfunction fromNumber (that, length) {\n\t that = allocate(that, length < 0 ? 0 : checked(length) | 0)\n\t if (!Buffer.TYPED_ARRAY_SUPPORT) {\n\t for (var i = 0; i < length; i++) {\n\t that[i] = 0\n\t }\n\t }\n\t return that\n\t}\n\n\tfunction fromString (that, string, encoding) {\n\t if (typeof encoding !== 'string' || encoding === '') encoding = 'utf8'\n\n\t // Assumption: byteLength() return value is always < kMaxLength.\n\t var length = byteLength(string, encoding) | 0\n\t that = allocate(that, length)\n\n\t that.write(string, encoding)\n\t return that\n\t}\n\n\tfunction fromObject (that, object) {\n\t if (Buffer.isBuffer(object)) return fromBuffer(that, object)\n\n\t if (isArray(object)) return fromArray(that, object)\n\n\t if (object == null) {\n\t throw new TypeError('must start with number, buffer, array or string')\n\t }\n\n\t if (typeof ArrayBuffer !== 'undefined') {\n\t if (object.buffer instanceof ArrayBuffer) {\n\t return fromTypedArray(that, object)\n\t }\n\t if (object instanceof ArrayBuffer) {\n\t return fromArrayBuffer(that, object)\n\t }\n\t }\n\n\t if (object.length) return fromArrayLike(that, object)\n\n\t return fromJsonObject(that, object)\n\t}\n\n\tfunction fromBuffer (that, buffer) {\n\t var length = checked(buffer.length) | 0\n\t that = allocate(that, length)\n\t buffer.copy(that, 0, 0, length)\n\t return that\n\t}\n\n\tfunction fromArray (that, array) {\n\t var length = checked(array.length) | 0\n\t that = allocate(that, length)\n\t for (var i = 0; i < length; i += 1) {\n\t that[i] = array[i] & 255\n\t }\n\t return that\n\t}\n\n\t// Duplicate of fromArray() to keep fromArray() monomorphic.\n\tfunction fromTypedArray (that, array) {\n\t var length = checked(array.length) | 0\n\t that = allocate(that, length)\n\t // Truncating the elements is probably not what people expect from typed\n\t // arrays with BYTES_PER_ELEMENT > 1 but it's compatible with the behavior\n\t // of the old Buffer constructor.\n\t for (var i = 0; i < length; i += 1) {\n\t that[i] = array[i] & 255\n\t }\n\t return that\n\t}\n\n\tfunction fromArrayBuffer (that, array) {\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t // Return an augmented `Uint8Array` instance, for best performance\n\t array.byteLength\n\t that = Buffer._augment(new Uint8Array(array))\n\t } else {\n\t // Fallback: Return an object instance of the Buffer class\n\t that = fromTypedArray(that, new Uint8Array(array))\n\t }\n\t return that\n\t}\n\n\tfunction fromArrayLike (that, array) {\n\t var length = checked(array.length) | 0\n\t that = allocate(that, length)\n\t for (var i = 0; i < length; i += 1) {\n\t that[i] = array[i] & 255\n\t }\n\t return that\n\t}\n\n\t// Deserialize { type: 'Buffer', data: [1,2,3,...] } into a Buffer object.\n\t// Returns a zero-length buffer for inputs that don't conform to the spec.\n\tfunction fromJsonObject (that, object) {\n\t var array\n\t var length = 0\n\n\t if (object.type === 'Buffer' && isArray(object.data)) {\n\t array = object.data\n\t length = checked(array.length) | 0\n\t }\n\t that = allocate(that, length)\n\n\t for (var i = 0; i < length; i += 1) {\n\t that[i] = array[i] & 255\n\t }\n\t return that\n\t}\n\n\tif (Buffer.TYPED_ARRAY_SUPPORT) {\n\t Buffer.prototype.__proto__ = Uint8Array.prototype\n\t Buffer.__proto__ = Uint8Array\n\t}\n\n\tfunction allocate (that, length) {\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t // Return an augmented `Uint8Array` instance, for best performance\n\t that = Buffer._augment(new Uint8Array(length))\n\t that.__proto__ = Buffer.prototype\n\t } else {\n\t // Fallback: Return an object instance of the Buffer class\n\t that.length = length\n\t that._isBuffer = true\n\t }\n\n\t var fromPool = length !== 0 && length <= Buffer.poolSize >>> 1\n\t if (fromPool) that.parent = rootParent\n\n\t return that\n\t}\n\n\tfunction checked (length) {\n\t // Note: cannot use `length < kMaxLength` here because that fails when\n\t // length is NaN (which is otherwise coerced to zero.)\n\t if (length >= kMaxLength()) {\n\t throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n\t 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n\t }\n\t return length | 0\n\t}\n\n\tfunction SlowBuffer (subject, encoding) {\n\t if (!(this instanceof SlowBuffer)) return new SlowBuffer(subject, encoding)\n\n\t var buf = new Buffer(subject, encoding)\n\t delete buf.parent\n\t return buf\n\t}\n\n\tBuffer.isBuffer = function isBuffer (b) {\n\t return !!(b != null && b._isBuffer)\n\t}\n\n\tBuffer.compare = function compare (a, b) {\n\t if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n\t throw new TypeError('Arguments must be Buffers')\n\t }\n\n\t if (a === b) return 0\n\n\t var x = a.length\n\t var y = b.length\n\n\t var i = 0\n\t var len = Math.min(x, y)\n\t while (i < len) {\n\t if (a[i] !== b[i]) break\n\n\t ++i\n\t }\n\n\t if (i !== len) {\n\t x = a[i]\n\t y = b[i]\n\t }\n\n\t if (x < y) return -1\n\t if (y < x) return 1\n\t return 0\n\t}\n\n\tBuffer.isEncoding = function isEncoding (encoding) {\n\t switch (String(encoding).toLowerCase()) {\n\t case 'hex':\n\t case 'utf8':\n\t case 'utf-8':\n\t case 'ascii':\n\t case 'binary':\n\t case 'base64':\n\t case 'raw':\n\t case 'ucs2':\n\t case 'ucs-2':\n\t case 'utf16le':\n\t case 'utf-16le':\n\t return true\n\t default:\n\t return false\n\t }\n\t}\n\n\tBuffer.concat = function concat (list, length) {\n\t if (!isArray(list)) throw new TypeError('list argument must be an Array of Buffers.')\n\n\t if (list.length === 0) {\n\t return new Buffer(0)\n\t }\n\n\t var i\n\t if (length === undefined) {\n\t length = 0\n\t for (i = 0; i < list.length; i++) {\n\t length += list[i].length\n\t }\n\t }\n\n\t var buf = new Buffer(length)\n\t var pos = 0\n\t for (i = 0; i < list.length; i++) {\n\t var item = list[i]\n\t item.copy(buf, pos)\n\t pos += item.length\n\t }\n\t return buf\n\t}\n\n\tfunction byteLength (string, encoding) {\n\t if (typeof string !== 'string') string = '' + string\n\n\t var len = string.length\n\t if (len === 0) return 0\n\n\t // Use a for loop to avoid recursion\n\t var loweredCase = false\n\t for (;;) {\n\t switch (encoding) {\n\t case 'ascii':\n\t case 'binary':\n\t // Deprecated\n\t case 'raw':\n\t case 'raws':\n\t return len\n\t case 'utf8':\n\t case 'utf-8':\n\t return utf8ToBytes(string).length\n\t case 'ucs2':\n\t case 'ucs-2':\n\t case 'utf16le':\n\t case 'utf-16le':\n\t return len * 2\n\t case 'hex':\n\t return len >>> 1\n\t case 'base64':\n\t return base64ToBytes(string).length\n\t default:\n\t if (loweredCase) return utf8ToBytes(string).length // assume utf8\n\t encoding = ('' + encoding).toLowerCase()\n\t loweredCase = true\n\t }\n\t }\n\t}\n\tBuffer.byteLength = byteLength\n\n\t// pre-set for values that may exist in the future\n\tBuffer.prototype.length = undefined\n\tBuffer.prototype.parent = undefined\n\n\tfunction slowToString (encoding, start, end) {\n\t var loweredCase = false\n\n\t start = start | 0\n\t end = end === undefined || end === Infinity ? this.length : end | 0\n\n\t if (!encoding) encoding = 'utf8'\n\t if (start < 0) start = 0\n\t if (end > this.length) end = this.length\n\t if (end <= start) return ''\n\n\t while (true) {\n\t switch (encoding) {\n\t case 'hex':\n\t return hexSlice(this, start, end)\n\n\t case 'utf8':\n\t case 'utf-8':\n\t return utf8Slice(this, start, end)\n\n\t case 'ascii':\n\t return asciiSlice(this, start, end)\n\n\t case 'binary':\n\t return binarySlice(this, start, end)\n\n\t case 'base64':\n\t return base64Slice(this, start, end)\n\n\t case 'ucs2':\n\t case 'ucs-2':\n\t case 'utf16le':\n\t case 'utf-16le':\n\t return utf16leSlice(this, start, end)\n\n\t default:\n\t if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n\t encoding = (encoding + '').toLowerCase()\n\t loweredCase = true\n\t }\n\t }\n\t}\n\n\tBuffer.prototype.toString = function toString () {\n\t var length = this.length | 0\n\t if (length === 0) return ''\n\t if (arguments.length === 0) return utf8Slice(this, 0, length)\n\t return slowToString.apply(this, arguments)\n\t}\n\n\tBuffer.prototype.equals = function equals (b) {\n\t if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n\t if (this === b) return true\n\t return Buffer.compare(this, b) === 0\n\t}\n\n\tBuffer.prototype.inspect = function inspect () {\n\t var str = ''\n\t var max = exports.INSPECT_MAX_BYTES\n\t if (this.length > 0) {\n\t str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n\t if (this.length > max) str += ' ... '\n\t }\n\t return ''\n\t}\n\n\tBuffer.prototype.compare = function compare (b) {\n\t if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n\t if (this === b) return 0\n\t return Buffer.compare(this, b)\n\t}\n\n\tBuffer.prototype.indexOf = function indexOf (val, byteOffset) {\n\t if (byteOffset > 0x7fffffff) byteOffset = 0x7fffffff\n\t else if (byteOffset < -0x80000000) byteOffset = -0x80000000\n\t byteOffset >>= 0\n\n\t if (this.length === 0) return -1\n\t if (byteOffset >= this.length) return -1\n\n\t // Negative offsets start from the end of the buffer\n\t if (byteOffset < 0) byteOffset = Math.max(this.length + byteOffset, 0)\n\n\t if (typeof val === 'string') {\n\t if (val.length === 0) return -1 // special case: looking for empty string always fails\n\t return String.prototype.indexOf.call(this, val, byteOffset)\n\t }\n\t if (Buffer.isBuffer(val)) {\n\t return arrayIndexOf(this, val, byteOffset)\n\t }\n\t if (typeof val === 'number') {\n\t if (Buffer.TYPED_ARRAY_SUPPORT && Uint8Array.prototype.indexOf === 'function') {\n\t return Uint8Array.prototype.indexOf.call(this, val, byteOffset)\n\t }\n\t return arrayIndexOf(this, [ val ], byteOffset)\n\t }\n\n\t function arrayIndexOf (arr, val, byteOffset) {\n\t var foundIndex = -1\n\t for (var i = 0; byteOffset + i < arr.length; i++) {\n\t if (arr[byteOffset + i] === val[foundIndex === -1 ? 0 : i - foundIndex]) {\n\t if (foundIndex === -1) foundIndex = i\n\t if (i - foundIndex + 1 === val.length) return byteOffset + foundIndex\n\t } else {\n\t foundIndex = -1\n\t }\n\t }\n\t return -1\n\t }\n\n\t throw new TypeError('val must be string, number or Buffer')\n\t}\n\n\t// `get` is deprecated\n\tBuffer.prototype.get = function get (offset) {\n\t console.log('.get() is deprecated. Access using array indexes instead.')\n\t return this.readUInt8(offset)\n\t}\n\n\t// `set` is deprecated\n\tBuffer.prototype.set = function set (v, offset) {\n\t console.log('.set() is deprecated. Access using array indexes instead.')\n\t return this.writeUInt8(v, offset)\n\t}\n\n\tfunction hexWrite (buf, string, offset, length) {\n\t offset = Number(offset) || 0\n\t var remaining = buf.length - offset\n\t if (!length) {\n\t length = remaining\n\t } else {\n\t length = Number(length)\n\t if (length > remaining) {\n\t length = remaining\n\t }\n\t }\n\n\t // must be an even number of digits\n\t var strLen = string.length\n\t if (strLen % 2 !== 0) throw new Error('Invalid hex string')\n\n\t if (length > strLen / 2) {\n\t length = strLen / 2\n\t }\n\t for (var i = 0; i < length; i++) {\n\t var parsed = parseInt(string.substr(i * 2, 2), 16)\n\t if (isNaN(parsed)) throw new Error('Invalid hex string')\n\t buf[offset + i] = parsed\n\t }\n\t return i\n\t}\n\n\tfunction utf8Write (buf, string, offset, length) {\n\t return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n\t}\n\n\tfunction asciiWrite (buf, string, offset, length) {\n\t return blitBuffer(asciiToBytes(string), buf, offset, length)\n\t}\n\n\tfunction binaryWrite (buf, string, offset, length) {\n\t return asciiWrite(buf, string, offset, length)\n\t}\n\n\tfunction base64Write (buf, string, offset, length) {\n\t return blitBuffer(base64ToBytes(string), buf, offset, length)\n\t}\n\n\tfunction ucs2Write (buf, string, offset, length) {\n\t return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n\t}\n\n\tBuffer.prototype.write = function write (string, offset, length, encoding) {\n\t // Buffer#write(string)\n\t if (offset === undefined) {\n\t encoding = 'utf8'\n\t length = this.length\n\t offset = 0\n\t // Buffer#write(string, encoding)\n\t } else if (length === undefined && typeof offset === 'string') {\n\t encoding = offset\n\t length = this.length\n\t offset = 0\n\t // Buffer#write(string, offset[, length][, encoding])\n\t } else if (isFinite(offset)) {\n\t offset = offset | 0\n\t if (isFinite(length)) {\n\t length = length | 0\n\t if (encoding === undefined) encoding = 'utf8'\n\t } else {\n\t encoding = length\n\t length = undefined\n\t }\n\t // legacy write(string, encoding, offset, length) - remove in v0.13\n\t } else {\n\t var swap = encoding\n\t encoding = offset\n\t offset = length | 0\n\t length = swap\n\t }\n\n\t var remaining = this.length - offset\n\t if (length === undefined || length > remaining) length = remaining\n\n\t if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n\t throw new RangeError('attempt to write outside buffer bounds')\n\t }\n\n\t if (!encoding) encoding = 'utf8'\n\n\t var loweredCase = false\n\t for (;;) {\n\t switch (encoding) {\n\t case 'hex':\n\t return hexWrite(this, string, offset, length)\n\n\t case 'utf8':\n\t case 'utf-8':\n\t return utf8Write(this, string, offset, length)\n\n\t case 'ascii':\n\t return asciiWrite(this, string, offset, length)\n\n\t case 'binary':\n\t return binaryWrite(this, string, offset, length)\n\n\t case 'base64':\n\t // Warning: maxLength not taken into account in base64Write\n\t return base64Write(this, string, offset, length)\n\n\t case 'ucs2':\n\t case 'ucs-2':\n\t case 'utf16le':\n\t case 'utf-16le':\n\t return ucs2Write(this, string, offset, length)\n\n\t default:\n\t if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n\t encoding = ('' + encoding).toLowerCase()\n\t loweredCase = true\n\t }\n\t }\n\t}\n\n\tBuffer.prototype.toJSON = function toJSON () {\n\t return {\n\t type: 'Buffer',\n\t data: Array.prototype.slice.call(this._arr || this, 0)\n\t }\n\t}\n\n\tfunction base64Slice (buf, start, end) {\n\t if (start === 0 && end === buf.length) {\n\t return base64.fromByteArray(buf)\n\t } else {\n\t return base64.fromByteArray(buf.slice(start, end))\n\t }\n\t}\n\n\tfunction utf8Slice (buf, start, end) {\n\t end = Math.min(buf.length, end)\n\t var res = []\n\n\t var i = start\n\t while (i < end) {\n\t var firstByte = buf[i]\n\t var codePoint = null\n\t var bytesPerSequence = (firstByte > 0xEF) ? 4\n\t : (firstByte > 0xDF) ? 3\n\t : (firstByte > 0xBF) ? 2\n\t : 1\n\n\t if (i + bytesPerSequence <= end) {\n\t var secondByte, thirdByte, fourthByte, tempCodePoint\n\n\t switch (bytesPerSequence) {\n\t case 1:\n\t if (firstByte < 0x80) {\n\t codePoint = firstByte\n\t }\n\t break\n\t case 2:\n\t secondByte = buf[i + 1]\n\t if ((secondByte & 0xC0) === 0x80) {\n\t tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n\t if (tempCodePoint > 0x7F) {\n\t codePoint = tempCodePoint\n\t }\n\t }\n\t break\n\t case 3:\n\t secondByte = buf[i + 1]\n\t thirdByte = buf[i + 2]\n\t if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n\t tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n\t if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n\t codePoint = tempCodePoint\n\t }\n\t }\n\t break\n\t case 4:\n\t secondByte = buf[i + 1]\n\t thirdByte = buf[i + 2]\n\t fourthByte = buf[i + 3]\n\t if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n\t tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n\t if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n\t codePoint = tempCodePoint\n\t }\n\t }\n\t }\n\t }\n\n\t if (codePoint === null) {\n\t // we did not generate a valid codePoint so insert a\n\t // replacement char (U+FFFD) and advance only 1 byte\n\t codePoint = 0xFFFD\n\t bytesPerSequence = 1\n\t } else if (codePoint > 0xFFFF) {\n\t // encode to utf16 (surrogate pair dance)\n\t codePoint -= 0x10000\n\t res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n\t codePoint = 0xDC00 | codePoint & 0x3FF\n\t }\n\n\t res.push(codePoint)\n\t i += bytesPerSequence\n\t }\n\n\t return decodeCodePointsArray(res)\n\t}\n\n\t// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n\t// the lowest limit is Chrome, with 0x10000 args.\n\t// We go 1 magnitude less, for safety\n\tvar MAX_ARGUMENTS_LENGTH = 0x1000\n\n\tfunction decodeCodePointsArray (codePoints) {\n\t var len = codePoints.length\n\t if (len <= MAX_ARGUMENTS_LENGTH) {\n\t return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n\t }\n\n\t // Decode in chunks to avoid \"call stack size exceeded\".\n\t var res = ''\n\t var i = 0\n\t while (i < len) {\n\t res += String.fromCharCode.apply(\n\t String,\n\t codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n\t )\n\t }\n\t return res\n\t}\n\n\tfunction asciiSlice (buf, start, end) {\n\t var ret = ''\n\t end = Math.min(buf.length, end)\n\n\t for (var i = start; i < end; i++) {\n\t ret += String.fromCharCode(buf[i] & 0x7F)\n\t }\n\t return ret\n\t}\n\n\tfunction binarySlice (buf, start, end) {\n\t var ret = ''\n\t end = Math.min(buf.length, end)\n\n\t for (var i = start; i < end; i++) {\n\t ret += String.fromCharCode(buf[i])\n\t }\n\t return ret\n\t}\n\n\tfunction hexSlice (buf, start, end) {\n\t var len = buf.length\n\n\t if (!start || start < 0) start = 0\n\t if (!end || end < 0 || end > len) end = len\n\n\t var out = ''\n\t for (var i = start; i < end; i++) {\n\t out += toHex(buf[i])\n\t }\n\t return out\n\t}\n\n\tfunction utf16leSlice (buf, start, end) {\n\t var bytes = buf.slice(start, end)\n\t var res = ''\n\t for (var i = 0; i < bytes.length; i += 2) {\n\t res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n\t }\n\t return res\n\t}\n\n\tBuffer.prototype.slice = function slice (start, end) {\n\t var len = this.length\n\t start = ~~start\n\t end = end === undefined ? len : ~~end\n\n\t if (start < 0) {\n\t start += len\n\t if (start < 0) start = 0\n\t } else if (start > len) {\n\t start = len\n\t }\n\n\t if (end < 0) {\n\t end += len\n\t if (end < 0) end = 0\n\t } else if (end > len) {\n\t end = len\n\t }\n\n\t if (end < start) end = start\n\n\t var newBuf\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t newBuf = Buffer._augment(this.subarray(start, end))\n\t } else {\n\t var sliceLen = end - start\n\t newBuf = new Buffer(sliceLen, undefined)\n\t for (var i = 0; i < sliceLen; i++) {\n\t newBuf[i] = this[i + start]\n\t }\n\t }\n\n\t if (newBuf.length) newBuf.parent = this.parent || this\n\n\t return newBuf\n\t}\n\n\t/*\n\t * Need to make sure that buffer isn't trying to write out of bounds.\n\t */\n\tfunction checkOffset (offset, ext, length) {\n\t if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n\t if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n\t}\n\n\tBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n\t offset = offset | 0\n\t byteLength = byteLength | 0\n\t if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n\t var val = this[offset]\n\t var mul = 1\n\t var i = 0\n\t while (++i < byteLength && (mul *= 0x100)) {\n\t val += this[offset + i] * mul\n\t }\n\n\t return val\n\t}\n\n\tBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n\t offset = offset | 0\n\t byteLength = byteLength | 0\n\t if (!noAssert) {\n\t checkOffset(offset, byteLength, this.length)\n\t }\n\n\t var val = this[offset + --byteLength]\n\t var mul = 1\n\t while (byteLength > 0 && (mul *= 0x100)) {\n\t val += this[offset + --byteLength] * mul\n\t }\n\n\t return val\n\t}\n\n\tBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 1, this.length)\n\t return this[offset]\n\t}\n\n\tBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 2, this.length)\n\t return this[offset] | (this[offset + 1] << 8)\n\t}\n\n\tBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 2, this.length)\n\t return (this[offset] << 8) | this[offset + 1]\n\t}\n\n\tBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 4, this.length)\n\n\t return ((this[offset]) |\n\t (this[offset + 1] << 8) |\n\t (this[offset + 2] << 16)) +\n\t (this[offset + 3] * 0x1000000)\n\t}\n\n\tBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 4, this.length)\n\n\t return (this[offset] * 0x1000000) +\n\t ((this[offset + 1] << 16) |\n\t (this[offset + 2] << 8) |\n\t this[offset + 3])\n\t}\n\n\tBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n\t offset = offset | 0\n\t byteLength = byteLength | 0\n\t if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n\t var val = this[offset]\n\t var mul = 1\n\t var i = 0\n\t while (++i < byteLength && (mul *= 0x100)) {\n\t val += this[offset + i] * mul\n\t }\n\t mul *= 0x80\n\n\t if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n\t return val\n\t}\n\n\tBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n\t offset = offset | 0\n\t byteLength = byteLength | 0\n\t if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n\t var i = byteLength\n\t var mul = 1\n\t var val = this[offset + --i]\n\t while (i > 0 && (mul *= 0x100)) {\n\t val += this[offset + --i] * mul\n\t }\n\t mul *= 0x80\n\n\t if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n\t return val\n\t}\n\n\tBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 1, this.length)\n\t if (!(this[offset] & 0x80)) return (this[offset])\n\t return ((0xff - this[offset] + 1) * -1)\n\t}\n\n\tBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 2, this.length)\n\t var val = this[offset] | (this[offset + 1] << 8)\n\t return (val & 0x8000) ? val | 0xFFFF0000 : val\n\t}\n\n\tBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 2, this.length)\n\t var val = this[offset + 1] | (this[offset] << 8)\n\t return (val & 0x8000) ? val | 0xFFFF0000 : val\n\t}\n\n\tBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 4, this.length)\n\n\t return (this[offset]) |\n\t (this[offset + 1] << 8) |\n\t (this[offset + 2] << 16) |\n\t (this[offset + 3] << 24)\n\t}\n\n\tBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 4, this.length)\n\n\t return (this[offset] << 24) |\n\t (this[offset + 1] << 16) |\n\t (this[offset + 2] << 8) |\n\t (this[offset + 3])\n\t}\n\n\tBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 4, this.length)\n\t return ieee754.read(this, offset, true, 23, 4)\n\t}\n\n\tBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 4, this.length)\n\t return ieee754.read(this, offset, false, 23, 4)\n\t}\n\n\tBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 8, this.length)\n\t return ieee754.read(this, offset, true, 52, 8)\n\t}\n\n\tBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 8, this.length)\n\t return ieee754.read(this, offset, false, 52, 8)\n\t}\n\n\tfunction checkInt (buf, value, offset, ext, max, min) {\n\t if (!Buffer.isBuffer(buf)) throw new TypeError('buffer must be a Buffer instance')\n\t if (value > max || value < min) throw new RangeError('value is out of bounds')\n\t if (offset + ext > buf.length) throw new RangeError('index out of range')\n\t}\n\n\tBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t byteLength = byteLength | 0\n\t if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0)\n\n\t var mul = 1\n\t var i = 0\n\t this[offset] = value & 0xFF\n\t while (++i < byteLength && (mul *= 0x100)) {\n\t this[offset + i] = (value / mul) & 0xFF\n\t }\n\n\t return offset + byteLength\n\t}\n\n\tBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t byteLength = byteLength | 0\n\t if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0)\n\n\t var i = byteLength - 1\n\t var mul = 1\n\t this[offset + i] = value & 0xFF\n\t while (--i >= 0 && (mul *= 0x100)) {\n\t this[offset + i] = (value / mul) & 0xFF\n\t }\n\n\t return offset + byteLength\n\t}\n\n\tBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n\t if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n\t this[offset] = (value & 0xff)\n\t return offset + 1\n\t}\n\n\tfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n\t if (value < 0) value = 0xffff + value + 1\n\t for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; i++) {\n\t buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n\t (littleEndian ? i : 1 - i) * 8\n\t }\n\t}\n\n\tBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t this[offset] = (value & 0xff)\n\t this[offset + 1] = (value >>> 8)\n\t } else {\n\t objectWriteUInt16(this, value, offset, true)\n\t }\n\t return offset + 2\n\t}\n\n\tBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t this[offset] = (value >>> 8)\n\t this[offset + 1] = (value & 0xff)\n\t } else {\n\t objectWriteUInt16(this, value, offset, false)\n\t }\n\t return offset + 2\n\t}\n\n\tfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n\t if (value < 0) value = 0xffffffff + value + 1\n\t for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; i++) {\n\t buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n\t }\n\t}\n\n\tBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t this[offset + 3] = (value >>> 24)\n\t this[offset + 2] = (value >>> 16)\n\t this[offset + 1] = (value >>> 8)\n\t this[offset] = (value & 0xff)\n\t } else {\n\t objectWriteUInt32(this, value, offset, true)\n\t }\n\t return offset + 4\n\t}\n\n\tBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t this[offset] = (value >>> 24)\n\t this[offset + 1] = (value >>> 16)\n\t this[offset + 2] = (value >>> 8)\n\t this[offset + 3] = (value & 0xff)\n\t } else {\n\t objectWriteUInt32(this, value, offset, false)\n\t }\n\t return offset + 4\n\t}\n\n\tBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) {\n\t var limit = Math.pow(2, 8 * byteLength - 1)\n\n\t checkInt(this, value, offset, byteLength, limit - 1, -limit)\n\t }\n\n\t var i = 0\n\t var mul = 1\n\t var sub = value < 0 ? 1 : 0\n\t this[offset] = value & 0xFF\n\t while (++i < byteLength && (mul *= 0x100)) {\n\t this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n\t }\n\n\t return offset + byteLength\n\t}\n\n\tBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) {\n\t var limit = Math.pow(2, 8 * byteLength - 1)\n\n\t checkInt(this, value, offset, byteLength, limit - 1, -limit)\n\t }\n\n\t var i = byteLength - 1\n\t var mul = 1\n\t var sub = value < 0 ? 1 : 0\n\t this[offset + i] = value & 0xFF\n\t while (--i >= 0 && (mul *= 0x100)) {\n\t this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n\t }\n\n\t return offset + byteLength\n\t}\n\n\tBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n\t if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n\t if (value < 0) value = 0xff + value + 1\n\t this[offset] = (value & 0xff)\n\t return offset + 1\n\t}\n\n\tBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t this[offset] = (value & 0xff)\n\t this[offset + 1] = (value >>> 8)\n\t } else {\n\t objectWriteUInt16(this, value, offset, true)\n\t }\n\t return offset + 2\n\t}\n\n\tBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t this[offset] = (value >>> 8)\n\t this[offset + 1] = (value & 0xff)\n\t } else {\n\t objectWriteUInt16(this, value, offset, false)\n\t }\n\t return offset + 2\n\t}\n\n\tBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t this[offset] = (value & 0xff)\n\t this[offset + 1] = (value >>> 8)\n\t this[offset + 2] = (value >>> 16)\n\t this[offset + 3] = (value >>> 24)\n\t } else {\n\t objectWriteUInt32(this, value, offset, true)\n\t }\n\t return offset + 4\n\t}\n\n\tBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n\t if (value < 0) value = 0xffffffff + value + 1\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t this[offset] = (value >>> 24)\n\t this[offset + 1] = (value >>> 16)\n\t this[offset + 2] = (value >>> 8)\n\t this[offset + 3] = (value & 0xff)\n\t } else {\n\t objectWriteUInt32(this, value, offset, false)\n\t }\n\t return offset + 4\n\t}\n\n\tfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n\t if (value > max || value < min) throw new RangeError('value is out of bounds')\n\t if (offset + ext > buf.length) throw new RangeError('index out of range')\n\t if (offset < 0) throw new RangeError('index out of range')\n\t}\n\n\tfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n\t if (!noAssert) {\n\t checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n\t }\n\t ieee754.write(buf, value, offset, littleEndian, 23, 4)\n\t return offset + 4\n\t}\n\n\tBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n\t return writeFloat(this, value, offset, true, noAssert)\n\t}\n\n\tBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n\t return writeFloat(this, value, offset, false, noAssert)\n\t}\n\n\tfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n\t if (!noAssert) {\n\t checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n\t }\n\t ieee754.write(buf, value, offset, littleEndian, 52, 8)\n\t return offset + 8\n\t}\n\n\tBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n\t return writeDouble(this, value, offset, true, noAssert)\n\t}\n\n\tBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n\t return writeDouble(this, value, offset, false, noAssert)\n\t}\n\n\t// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\n\tBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n\t if (!start) start = 0\n\t if (!end && end !== 0) end = this.length\n\t if (targetStart >= target.length) targetStart = target.length\n\t if (!targetStart) targetStart = 0\n\t if (end > 0 && end < start) end = start\n\n\t // Copy 0 bytes; we're done\n\t if (end === start) return 0\n\t if (target.length === 0 || this.length === 0) return 0\n\n\t // Fatal error conditions\n\t if (targetStart < 0) {\n\t throw new RangeError('targetStart out of bounds')\n\t }\n\t if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n\t if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n\t // Are we oob?\n\t if (end > this.length) end = this.length\n\t if (target.length - targetStart < end - start) {\n\t end = target.length - targetStart + start\n\t }\n\n\t var len = end - start\n\t var i\n\n\t if (this === target && start < targetStart && targetStart < end) {\n\t // descending copy from end\n\t for (i = len - 1; i >= 0; i--) {\n\t target[i + targetStart] = this[i + start]\n\t }\n\t } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n\t // ascending copy from start\n\t for (i = 0; i < len; i++) {\n\t target[i + targetStart] = this[i + start]\n\t }\n\t } else {\n\t target._set(this.subarray(start, start + len), targetStart)\n\t }\n\n\t return len\n\t}\n\n\t// fill(value, start=0, end=buffer.length)\n\tBuffer.prototype.fill = function fill (value, start, end) {\n\t if (!value) value = 0\n\t if (!start) start = 0\n\t if (!end) end = this.length\n\n\t if (end < start) throw new RangeError('end < start')\n\n\t // Fill 0 bytes; we're done\n\t if (end === start) return\n\t if (this.length === 0) return\n\n\t if (start < 0 || start >= this.length) throw new RangeError('start out of bounds')\n\t if (end < 0 || end > this.length) throw new RangeError('end out of bounds')\n\n\t var i\n\t if (typeof value === 'number') {\n\t for (i = start; i < end; i++) {\n\t this[i] = value\n\t }\n\t } else {\n\t var bytes = utf8ToBytes(value.toString())\n\t var len = bytes.length\n\t for (i = start; i < end; i++) {\n\t this[i] = bytes[i % len]\n\t }\n\t }\n\n\t return this\n\t}\n\n\t/**\n\t * Creates a new `ArrayBuffer` with the *copied* memory of the buffer instance.\n\t * Added in Node 0.12. Only available in browsers that support ArrayBuffer.\n\t */\n\tBuffer.prototype.toArrayBuffer = function toArrayBuffer () {\n\t if (typeof Uint8Array !== 'undefined') {\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t return (new Buffer(this)).buffer\n\t } else {\n\t var buf = new Uint8Array(this.length)\n\t for (var i = 0, len = buf.length; i < len; i += 1) {\n\t buf[i] = this[i]\n\t }\n\t return buf.buffer\n\t }\n\t } else {\n\t throw new TypeError('Buffer.toArrayBuffer not supported in this browser')\n\t }\n\t}\n\n\t// HELPER FUNCTIONS\n\t// ================\n\n\tvar BP = Buffer.prototype\n\n\t/**\n\t * Augment a Uint8Array *instance* (not the Uint8Array class!) with Buffer methods\n\t */\n\tBuffer._augment = function _augment (arr) {\n\t arr.constructor = Buffer\n\t arr._isBuffer = true\n\n\t // save reference to original Uint8Array set method before overwriting\n\t arr._set = arr.set\n\n\t // deprecated\n\t arr.get = BP.get\n\t arr.set = BP.set\n\n\t arr.write = BP.write\n\t arr.toString = BP.toString\n\t arr.toLocaleString = BP.toString\n\t arr.toJSON = BP.toJSON\n\t arr.equals = BP.equals\n\t arr.compare = BP.compare\n\t arr.indexOf = BP.indexOf\n\t arr.copy = BP.copy\n\t arr.slice = BP.slice\n\t arr.readUIntLE = BP.readUIntLE\n\t arr.readUIntBE = BP.readUIntBE\n\t arr.readUInt8 = BP.readUInt8\n\t arr.readUInt16LE = BP.readUInt16LE\n\t arr.readUInt16BE = BP.readUInt16BE\n\t arr.readUInt32LE = BP.readUInt32LE\n\t arr.readUInt32BE = BP.readUInt32BE\n\t arr.readIntLE = BP.readIntLE\n\t arr.readIntBE = BP.readIntBE\n\t arr.readInt8 = BP.readInt8\n\t arr.readInt16LE = BP.readInt16LE\n\t arr.readInt16BE = BP.readInt16BE\n\t arr.readInt32LE = BP.readInt32LE\n\t arr.readInt32BE = BP.readInt32BE\n\t arr.readFloatLE = BP.readFloatLE\n\t arr.readFloatBE = BP.readFloatBE\n\t arr.readDoubleLE = BP.readDoubleLE\n\t arr.readDoubleBE = BP.readDoubleBE\n\t arr.writeUInt8 = BP.writeUInt8\n\t arr.writeUIntLE = BP.writeUIntLE\n\t arr.writeUIntBE = BP.writeUIntBE\n\t arr.writeUInt16LE = BP.writeUInt16LE\n\t arr.writeUInt16BE = BP.writeUInt16BE\n\t arr.writeUInt32LE = BP.writeUInt32LE\n\t arr.writeUInt32BE = BP.writeUInt32BE\n\t arr.writeIntLE = BP.writeIntLE\n\t arr.writeIntBE = BP.writeIntBE\n\t arr.writeInt8 = BP.writeInt8\n\t arr.writeInt16LE = BP.writeInt16LE\n\t arr.writeInt16BE = BP.writeInt16BE\n\t arr.writeInt32LE = BP.writeInt32LE\n\t arr.writeInt32BE = BP.writeInt32BE\n\t arr.writeFloatLE = BP.writeFloatLE\n\t arr.writeFloatBE = BP.writeFloatBE\n\t arr.writeDoubleLE = BP.writeDoubleLE\n\t arr.writeDoubleBE = BP.writeDoubleBE\n\t arr.fill = BP.fill\n\t arr.inspect = BP.inspect\n\t arr.toArrayBuffer = BP.toArrayBuffer\n\n\t return arr\n\t}\n\n\tvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\n\tfunction base64clean (str) {\n\t // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n\t str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n\t // Node converts strings with length < 2 to ''\n\t if (str.length < 2) return ''\n\t // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n\t while (str.length % 4 !== 0) {\n\t str = str + '='\n\t }\n\t return str\n\t}\n\n\tfunction stringtrim (str) {\n\t if (str.trim) return str.trim()\n\t return str.replace(/^\\s+|\\s+$/g, '')\n\t}\n\n\tfunction toHex (n) {\n\t if (n < 16) return '0' + n.toString(16)\n\t return n.toString(16)\n\t}\n\n\tfunction utf8ToBytes (string, units) {\n\t units = units || Infinity\n\t var codePoint\n\t var length = string.length\n\t var leadSurrogate = null\n\t var bytes = []\n\n\t for (var i = 0; i < length; i++) {\n\t codePoint = string.charCodeAt(i)\n\n\t // is surrogate component\n\t if (codePoint > 0xD7FF && codePoint < 0xE000) {\n\t // last char was a lead\n\t if (!leadSurrogate) {\n\t // no lead yet\n\t if (codePoint > 0xDBFF) {\n\t // unexpected trail\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n\t continue\n\t } else if (i + 1 === length) {\n\t // unpaired lead\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n\t continue\n\t }\n\n\t // valid lead\n\t leadSurrogate = codePoint\n\n\t continue\n\t }\n\n\t // 2 leads in a row\n\t if (codePoint < 0xDC00) {\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n\t leadSurrogate = codePoint\n\t continue\n\t }\n\n\t // valid surrogate pair\n\t codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n\t } else if (leadSurrogate) {\n\t // valid bmp char, but last char was a lead\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n\t }\n\n\t leadSurrogate = null\n\n\t // encode utf8\n\t if (codePoint < 0x80) {\n\t if ((units -= 1) < 0) break\n\t bytes.push(codePoint)\n\t } else if (codePoint < 0x800) {\n\t if ((units -= 2) < 0) break\n\t bytes.push(\n\t codePoint >> 0x6 | 0xC0,\n\t codePoint & 0x3F | 0x80\n\t )\n\t } else if (codePoint < 0x10000) {\n\t if ((units -= 3) < 0) break\n\t bytes.push(\n\t codePoint >> 0xC | 0xE0,\n\t codePoint >> 0x6 & 0x3F | 0x80,\n\t codePoint & 0x3F | 0x80\n\t )\n\t } else if (codePoint < 0x110000) {\n\t if ((units -= 4) < 0) break\n\t bytes.push(\n\t codePoint >> 0x12 | 0xF0,\n\t codePoint >> 0xC & 0x3F | 0x80,\n\t codePoint >> 0x6 & 0x3F | 0x80,\n\t codePoint & 0x3F | 0x80\n\t )\n\t } else {\n\t throw new Error('Invalid code point')\n\t }\n\t }\n\n\t return bytes\n\t}\n\n\tfunction asciiToBytes (str) {\n\t var byteArray = []\n\t for (var i = 0; i < str.length; i++) {\n\t // Node's code seems to be doing this and not & 0x7F..\n\t byteArray.push(str.charCodeAt(i) & 0xFF)\n\t }\n\t return byteArray\n\t}\n\n\tfunction utf16leToBytes (str, units) {\n\t var c, hi, lo\n\t var byteArray = []\n\t for (var i = 0; i < str.length; i++) {\n\t if ((units -= 2) < 0) break\n\n\t c = str.charCodeAt(i)\n\t hi = c >> 8\n\t lo = c % 256\n\t byteArray.push(lo)\n\t byteArray.push(hi)\n\t }\n\n\t return byteArray\n\t}\n\n\tfunction base64ToBytes (str) {\n\t return base64.toByteArray(base64clean(str))\n\t}\n\n\tfunction blitBuffer (src, dst, offset, length) {\n\t for (var i = 0; i < length; i++) {\n\t if ((i + offset >= dst.length) || (i >= src.length)) break\n\t dst[i + offset] = src[i]\n\t }\n\t return i\n\t}\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2).Buffer, (function() { return this; }())))\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n\t;(function (exports) {\n\t\t'use strict';\n\n\t var Arr = (typeof Uint8Array !== 'undefined')\n\t ? Uint8Array\n\t : Array\n\n\t\tvar PLUS = '+'.charCodeAt(0)\n\t\tvar SLASH = '/'.charCodeAt(0)\n\t\tvar NUMBER = '0'.charCodeAt(0)\n\t\tvar LOWER = 'a'.charCodeAt(0)\n\t\tvar UPPER = 'A'.charCodeAt(0)\n\t\tvar PLUS_URL_SAFE = '-'.charCodeAt(0)\n\t\tvar SLASH_URL_SAFE = '_'.charCodeAt(0)\n\n\t\tfunction decode (elt) {\n\t\t\tvar code = elt.charCodeAt(0)\n\t\t\tif (code === PLUS ||\n\t\t\t code === PLUS_URL_SAFE)\n\t\t\t\treturn 62 // '+'\n\t\t\tif (code === SLASH ||\n\t\t\t code === SLASH_URL_SAFE)\n\t\t\t\treturn 63 // '/'\n\t\t\tif (code < NUMBER)\n\t\t\t\treturn -1 //no match\n\t\t\tif (code < NUMBER + 10)\n\t\t\t\treturn code - NUMBER + 26 + 26\n\t\t\tif (code < UPPER + 26)\n\t\t\t\treturn code - UPPER\n\t\t\tif (code < LOWER + 26)\n\t\t\t\treturn code - LOWER + 26\n\t\t}\n\n\t\tfunction b64ToByteArray (b64) {\n\t\t\tvar i, j, l, tmp, placeHolders, arr\n\n\t\t\tif (b64.length % 4 > 0) {\n\t\t\t\tthrow new Error('Invalid string. Length must be a multiple of 4')\n\t\t\t}\n\n\t\t\t// the number of equal signs (place holders)\n\t\t\t// if there are two placeholders, than the two characters before it\n\t\t\t// represent one byte\n\t\t\t// if there is only one, then the three characters before it represent 2 bytes\n\t\t\t// this is just a cheap hack to not do indexOf twice\n\t\t\tvar len = b64.length\n\t\t\tplaceHolders = '=' === b64.charAt(len - 2) ? 2 : '=' === b64.charAt(len - 1) ? 1 : 0\n\n\t\t\t// base64 is 4/3 + up to two characters of the original data\n\t\t\tarr = new Arr(b64.length * 3 / 4 - placeHolders)\n\n\t\t\t// if there are placeholders, only get up to the last complete 4 chars\n\t\t\tl = placeHolders > 0 ? b64.length - 4 : b64.length\n\n\t\t\tvar L = 0\n\n\t\t\tfunction push (v) {\n\t\t\t\tarr[L++] = v\n\t\t\t}\n\n\t\t\tfor (i = 0, j = 0; i < l; i += 4, j += 3) {\n\t\t\t\ttmp = (decode(b64.charAt(i)) << 18) | (decode(b64.charAt(i + 1)) << 12) | (decode(b64.charAt(i + 2)) << 6) | decode(b64.charAt(i + 3))\n\t\t\t\tpush((tmp & 0xFF0000) >> 16)\n\t\t\t\tpush((tmp & 0xFF00) >> 8)\n\t\t\t\tpush(tmp & 0xFF)\n\t\t\t}\n\n\t\t\tif (placeHolders === 2) {\n\t\t\t\ttmp = (decode(b64.charAt(i)) << 2) | (decode(b64.charAt(i + 1)) >> 4)\n\t\t\t\tpush(tmp & 0xFF)\n\t\t\t} else if (placeHolders === 1) {\n\t\t\t\ttmp = (decode(b64.charAt(i)) << 10) | (decode(b64.charAt(i + 1)) << 4) | (decode(b64.charAt(i + 2)) >> 2)\n\t\t\t\tpush((tmp >> 8) & 0xFF)\n\t\t\t\tpush(tmp & 0xFF)\n\t\t\t}\n\n\t\t\treturn arr\n\t\t}\n\n\t\tfunction uint8ToBase64 (uint8) {\n\t\t\tvar i,\n\t\t\t\textraBytes = uint8.length % 3, // if we have 1 byte left, pad 2 bytes\n\t\t\t\toutput = \"\",\n\t\t\t\ttemp, length\n\n\t\t\tfunction encode (num) {\n\t\t\t\treturn lookup.charAt(num)\n\t\t\t}\n\n\t\t\tfunction tripletToBase64 (num) {\n\t\t\t\treturn encode(num >> 18 & 0x3F) + encode(num >> 12 & 0x3F) + encode(num >> 6 & 0x3F) + encode(num & 0x3F)\n\t\t\t}\n\n\t\t\t// go through the array every three bytes, we'll deal with trailing stuff later\n\t\t\tfor (i = 0, length = uint8.length - extraBytes; i < length; i += 3) {\n\t\t\t\ttemp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])\n\t\t\t\toutput += tripletToBase64(temp)\n\t\t\t}\n\n\t\t\t// pad the end with zeros, but make sure to not forget the extra bytes\n\t\t\tswitch (extraBytes) {\n\t\t\t\tcase 1:\n\t\t\t\t\ttemp = uint8[uint8.length - 1]\n\t\t\t\t\toutput += encode(temp >> 2)\n\t\t\t\t\toutput += encode((temp << 4) & 0x3F)\n\t\t\t\t\toutput += '=='\n\t\t\t\t\tbreak\n\t\t\t\tcase 2:\n\t\t\t\t\ttemp = (uint8[uint8.length - 2] << 8) + (uint8[uint8.length - 1])\n\t\t\t\t\toutput += encode(temp >> 10)\n\t\t\t\t\toutput += encode((temp >> 4) & 0x3F)\n\t\t\t\t\toutput += encode((temp << 2) & 0x3F)\n\t\t\t\t\toutput += '='\n\t\t\t\t\tbreak\n\t\t\t}\n\n\t\t\treturn output\n\t\t}\n\n\t\texports.toByteArray = b64ToByteArray\n\t\texports.fromByteArray = uint8ToBase64\n\t}( false ? (this.base64js = {}) : exports))\n\n\n/***/ },\n/* 4 */\n/***/ function(module, exports) {\n\n\texports.read = function (buffer, offset, isLE, mLen, nBytes) {\n\t var e, m\n\t var eLen = nBytes * 8 - mLen - 1\n\t var eMax = (1 << eLen) - 1\n\t var eBias = eMax >> 1\n\t var nBits = -7\n\t var i = isLE ? (nBytes - 1) : 0\n\t var d = isLE ? -1 : 1\n\t var s = buffer[offset + i]\n\n\t i += d\n\n\t e = s & ((1 << (-nBits)) - 1)\n\t s >>= (-nBits)\n\t nBits += eLen\n\t for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n\t m = e & ((1 << (-nBits)) - 1)\n\t e >>= (-nBits)\n\t nBits += mLen\n\t for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n\t if (e === 0) {\n\t e = 1 - eBias\n\t } else if (e === eMax) {\n\t return m ? NaN : ((s ? -1 : 1) * Infinity)\n\t } else {\n\t m = m + Math.pow(2, mLen)\n\t e = e - eBias\n\t }\n\t return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n\t}\n\n\texports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n\t var e, m, c\n\t var eLen = nBytes * 8 - mLen - 1\n\t var eMax = (1 << eLen) - 1\n\t var eBias = eMax >> 1\n\t var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n\t var i = isLE ? 0 : (nBytes - 1)\n\t var d = isLE ? 1 : -1\n\t var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n\t value = Math.abs(value)\n\n\t if (isNaN(value) || value === Infinity) {\n\t m = isNaN(value) ? 1 : 0\n\t e = eMax\n\t } else {\n\t e = Math.floor(Math.log(value) / Math.LN2)\n\t if (value * (c = Math.pow(2, -e)) < 1) {\n\t e--\n\t c *= 2\n\t }\n\t if (e + eBias >= 1) {\n\t value += rt / c\n\t } else {\n\t value += rt * Math.pow(2, 1 - eBias)\n\t }\n\t if (value * c >= 2) {\n\t e++\n\t c /= 2\n\t }\n\n\t if (e + eBias >= eMax) {\n\t m = 0\n\t e = eMax\n\t } else if (e + eBias >= 1) {\n\t m = (value * c - 1) * Math.pow(2, mLen)\n\t e = e + eBias\n\t } else {\n\t m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n\t e = 0\n\t }\n\t }\n\n\t for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n\t e = (e << mLen) | m\n\t eLen += mLen\n\t for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n\t buffer[offset + i - d] |= s * 128\n\t}\n\n\n/***/ },\n/* 5 */\n/***/ function(module, exports) {\n\n\t\n\t/**\n\t * isArray\n\t */\n\n\tvar isArray = Array.isArray;\n\n\t/**\n\t * toString\n\t */\n\n\tvar str = Object.prototype.toString;\n\n\t/**\n\t * Whether or not the given `val`\n\t * is an array.\n\t *\n\t * example:\n\t *\n\t * isArray([]);\n\t * // > true\n\t * isArray(arguments);\n\t * // > false\n\t * isArray('');\n\t * // > false\n\t *\n\t * @param {mixed} val\n\t * @return {bool}\n\t */\n\n\tmodule.exports = isArray || function (val) {\n\t return !! val && '[object Array]' == str.call(val);\n\t};\n\n\n/***/ },\n/* 6 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* jslint node: true */\n\t/* global window */\n\t'use strict';\n\n\tvar _ = __webpack_require__(7);\n\tvar FontProvider = __webpack_require__(9);\n\tvar LayoutBuilder = __webpack_require__(11);\n\tvar PdfKit = __webpack_require__(24);\n\tvar PDFReference = __webpack_require__(46);\n\tvar sizes = __webpack_require__(102);\n\tvar ImageMeasure = __webpack_require__(103);\n\tvar textDecorator = __webpack_require__(104);\n\tvar FontProvider = __webpack_require__(9);\n\n\t_.noConflict();\n\n\t////////////////////////////////////////\n\t// PdfPrinter\n\n\t/**\n\t * @class Creates an instance of a PdfPrinter which turns document definition into a pdf\n\t *\n\t * @param {Object} fontDescriptors font definition dictionary\n\t *\n\t * @example\n\t * var fontDescriptors = {\n\t *\tRoboto: {\n\t *\t\tnormal: 'fonts/Roboto-Regular.ttf',\n\t *\t\tbold: 'fonts/Roboto-Medium.ttf',\n\t *\t\titalics: 'fonts/Roboto-Italic.ttf',\n\t *\t\tbolditalics: 'fonts/Roboto-Italic.ttf'\n\t *\t}\n\t * };\n\t *\n\t * var printer = new PdfPrinter(fontDescriptors);\n\t */\n\tfunction PdfPrinter(fontDescriptors) {\n\t\tthis.fontDescriptors = fontDescriptors;\n\t}\n\n\t/**\n\t * Executes layout engine for the specified document and renders it into a pdfkit document\n\t * ready to be saved.\n\t *\n\t * @param {Object} docDefinition document definition\n\t * @param {Object} docDefinition.content an array describing the pdf structure (for more information take a look at the examples in the /examples folder)\n\t * @param {Object} [docDefinition.defaultStyle] default (implicit) style definition\n\t * @param {Object} [docDefinition.styles] dictionary defining all styles which can be used in the document\n\t * @param {Object} [docDefinition.pageSize] page size (pdfkit units, A4 dimensions by default)\n\t * @param {Number} docDefinition.pageSize.width width\n\t * @param {Number} docDefinition.pageSize.height height\n\t * @param {Object} [docDefinition.pageMargins] page margins (pdfkit units)\n\t *\n\t * @example\n\t *\n\t * var docDefinition = {\n\t * \tinfo: {\n\t *\t\ttitle: 'awesome Document',\n\t *\t\tauthor: 'john doe',\n\t *\t\tsubject: 'subject of document',\n\t *\t\tkeywords: 'keywords for document',\n\t * \t},\n\t *\tcontent: [\n\t *\t\t'First paragraph',\n\t *\t\t'Second paragraph, this time a little bit longer',\n\t *\t\t{ text: 'Third paragraph, slightly bigger font size', fontSize: 20 },\n\t *\t\t{ text: 'Another paragraph using a named style', style: 'header' },\n\t *\t\t{ text: ['playing with ', 'inlines' ] },\n\t *\t\t{ text: ['and ', { text: 'restyling ', bold: true }, 'them'] },\n\t *\t],\n\t *\tstyles: {\n\t *\t\theader: { fontSize: 30, bold: true }\n\t *\t}\n\t * }\n\t *\n\t * var pdfDoc = printer.createPdfKitDocument(docDefinition);\n\t *\n\t * pdfDoc.pipe(fs.createWriteStream('sample.pdf'));\n\t * pdfDoc.end();\n\t *\n\t * @return {Object} a pdfKit document object which can be saved or encode to data-url\n\t */\n\tPdfPrinter.prototype.createPdfKitDocument = function(docDefinition, options) {\n\t\toptions = options || {};\n\n\t\tvar pageSize = pageSize2widthAndHeight(docDefinition.pageSize || 'a4');\n\n\t if(docDefinition.pageOrientation === 'landscape') {\n\t pageSize = { width: pageSize.height, height: pageSize.width};\n\t }\n\t\tpageSize.orientation = docDefinition.pageOrientation === 'landscape' ? docDefinition.pageOrientation : 'portrait';\n\n\t\tthis.pdfKitDoc = new PdfKit({ size: [ pageSize.width, pageSize.height ], compress: false});\n\t\tthis.pdfKitDoc.info.Producer = 'pdfmake';\n\t\tthis.pdfKitDoc.info.Creator = 'pdfmake';\n\t\t\n\t\t// pdf kit maintains the uppercase fieldnames from pdf spec\n\t\t// to keep the pdfmake api consistent, the info field are defined lowercase\n\t\tif(docDefinition.info){\n\t\t\tvar info = docDefinition.info;\n\t\t\t// check for falsey an set null, so that pdfkit always get either null or value\n\t\t\tthis.pdfKitDoc.info.Title = docDefinition.info.title ? docDefinition.info.title : null;\n\t\t\tthis.pdfKitDoc.info.Author = docDefinition.info.author ? docDefinition.info.author : null;\n\t\t\tthis.pdfKitDoc.info.Subject = docDefinition.info.subject ? docDefinition.info.subject : null;\n\t\t\tthis.pdfKitDoc.info.Keywords = docDefinition.info.keywords ? docDefinition.info.keywords : null;\n\t\t}\n\t\t\n\t\tthis.fontProvider = new FontProvider(this.fontDescriptors, this.pdfKitDoc);\n\n\t docDefinition.images = docDefinition.images || {};\n\n\t\tvar builder = new LayoutBuilder(\n\t\t\tpageSize,\n\t\t\tfixPageMargins(docDefinition.pageMargins || 40),\n\t new ImageMeasure(this.pdfKitDoc, docDefinition.images));\n\n\t registerDefaultTableLayouts(builder);\n\t if (options.tableLayouts) {\n\t builder.registerTableLayouts(options.tableLayouts);\n\t }\n\n\t\tvar pages = builder.layoutDocument(docDefinition.content, this.fontProvider, docDefinition.styles || {}, docDefinition.defaultStyle || { fontSize: 12, font: 'Roboto' }, docDefinition.background, docDefinition.header, docDefinition.footer, docDefinition.images, docDefinition.watermark, docDefinition.pageBreakBefore);\n\n\t\trenderPages(pages, this.fontProvider, this.pdfKitDoc);\n\n\t\tif(options.autoPrint){\n\t var printActionRef = this.pdfKitDoc.ref({\n\t Type: 'Action',\n\t S: 'Named',\n\t N: 'Print'\n\t });\n\t this.pdfKitDoc._root.data.OpenAction = printActionRef;\n\t printActionRef.end();\n\t\t}\n\t\treturn this.pdfKitDoc;\n\t};\n\n\tfunction fixPageMargins(margin) {\n\t if (!margin) return null;\n\n\t if (typeof margin === 'number' || margin instanceof Number) {\n\t margin = { left: margin, right: margin, top: margin, bottom: margin };\n\t } else if (margin instanceof Array) {\n\t if (margin.length === 2) {\n\t margin = { left: margin[0], top: margin[1], right: margin[0], bottom: margin[1] };\n\t } else if (margin.length === 4) {\n\t margin = { left: margin[0], top: margin[1], right: margin[2], bottom: margin[3] };\n\t } else throw 'Invalid pageMargins definition';\n\t }\n\n\t return margin;\n\t}\n\n\tfunction registerDefaultTableLayouts(layoutBuilder) {\n\t layoutBuilder.registerTableLayouts({\n\t noBorders: {\n\t hLineWidth: function(i) { return 0; },\n\t vLineWidth: function(i) { return 0; },\n\t paddingLeft: function(i) { return i && 4 || 0; },\n\t paddingRight: function(i, node) { return (i < node.table.widths.length - 1) ? 4 : 0; },\n\t },\n\t headerLineOnly: {\n\t hLineWidth: function(i, node) {\n\t if (i === 0 || i === node.table.body.length) return 0;\n\t return (i === node.table.headerRows) ? 2 : 0;\n\t },\n\t vLineWidth: function(i) { return 0; },\n\t paddingLeft: function(i) {\n\t return i === 0 ? 0 : 8;\n\t },\n\t paddingRight: function(i, node) {\n\t return (i === node.table.widths.length - 1) ? 0 : 8;\n\t }\n\t },\n\t lightHorizontalLines: {\n\t hLineWidth: function(i, node) {\n\t if (i === 0 || i === node.table.body.length) return 0;\n\t return (i === node.table.headerRows) ? 2 : 1;\n\t },\n\t vLineWidth: function(i) { return 0; },\n\t hLineColor: function(i) { return i === 1 ? 'black' : '#aaa'; },\n\t paddingLeft: function(i) {\n\t return i === 0 ? 0 : 8;\n\t },\n\t paddingRight: function(i, node) {\n\t return (i === node.table.widths.length - 1) ? 0 : 8;\n\t }\n\t }\n\t });\n\t}\n\n\tvar defaultLayout = {\n\t hLineWidth: function(i, node) { return 1; }, //return node.table.headerRows && i === node.table.headerRows && 3 || 0; },\n\t vLineWidth: function(i, node) { return 1; },\n\t hLineColor: function(i, node) { return 'black'; },\n\t vLineColor: function(i, node) { return 'black'; },\n\t paddingLeft: function(i, node) { return 4; }, //i && 4 || 0; },\n\t paddingRight: function(i, node) { return 4; }, //(i < node.table.widths.length - 1) ? 4 : 0; },\n\t paddingTop: function(i, node) { return 2; },\n\t paddingBottom: function(i, node) { return 2; }\n\t};\n\n\tfunction pageSize2widthAndHeight(pageSize) {\n\t if (typeof pageSize == 'string' || pageSize instanceof String) {\n\t var size = sizes[pageSize.toUpperCase()];\n\t if (!size) throw ('Page size ' + pageSize + ' not recognized');\n\t return { width: size[0], height: size[1] };\n\t }\n\n\t return pageSize;\n\t}\n\n\tfunction StringObject(str){\n\t\tthis.isString = true;\n\t\tthis.toString = function(){\n\t\t\treturn str;\n\t\t};\n\t}\n\n\tfunction updatePageOrientationInOptions(currentPage, pdfKitDoc) {\n\t\tvar previousPageOrientation = pdfKitDoc.options.size[0] > pdfKitDoc.options.size[1] ? 'landscape' : 'portrait';\n\n\t\tif(currentPage.pageSize.orientation !== previousPageOrientation) {\n\t\t\tvar width = pdfKitDoc.options.size[0];\n\t\t\tvar height = pdfKitDoc.options.size[1];\n\t\t\tpdfKitDoc.options.size = [height, width];\n\t\t}\n\t}\n\n\tfunction renderPages(pages, fontProvider, pdfKitDoc) {\n\t pdfKitDoc._pdfMakePages = pages;\n\t\tfor (var i = 0; i < pages.length; i++) {\n\t\t\tif (i > 0) {\n\t\t\t\tupdatePageOrientationInOptions(pages[i], pdfKitDoc);\n\t\t\t\tpdfKitDoc.addPage(pdfKitDoc.options);\n\t\t\t}\n\n\t\t\tvar page = pages[i];\n\t for(var ii = 0, il = page.items.length; ii < il; ii++) {\n\t var item = page.items[ii];\n\t switch(item.type) {\n\t case 'vector':\n\t renderVector(item.item, pdfKitDoc);\n\t break;\n\t case 'line':\n\t renderLine(item.item, item.item.x, item.item.y, pdfKitDoc);\n\t break;\n\t case 'image':\n\t renderImage(item.item, item.item.x, item.item.y, pdfKitDoc);\n\t break;\n\t\t\t\t\t}\n\t }\n\t if(page.watermark){\n\t renderWatermark(page, pdfKitDoc);\n\t\t}\n\n\t fontProvider.setFontRefsToPdfDoc();\n\t }\n\t}\n\n\tfunction renderLine(line, x, y, pdfKitDoc) {\n\t\tx = x || 0;\n\t\ty = y || 0;\n\n\t\tvar lineHeight = line.getHeight();\n\t\tvar ascenderHeight = line.getAscenderHeight();\n\n\t\ttextDecorator.drawBackground(line, x, y, pdfKitDoc);\n\n\t\t//TODO: line.optimizeInlines();\n\t\tfor(var i = 0, l = line.inlines.length; i < l; i++) {\n\t\t\tvar inline = line.inlines[i];\n\n\t\t\tpdfKitDoc.fill(inline.color || 'black');\n\n\t\t\tpdfKitDoc.save();\n\t\t\tpdfKitDoc.transform(1, 0, 0, -1, 0, pdfKitDoc.page.height);\n\n\n\t var encoded = inline.font.encode(inline.text);\n\t\t\tpdfKitDoc.addContent('BT');\n\n\t\t\tpdfKitDoc.addContent('' + (x + inline.x) + ' ' + (pdfKitDoc.page.height - y - ascenderHeight) + ' Td');\n\t\t\tpdfKitDoc.addContent('/' + encoded.fontId + ' ' + inline.fontSize + ' Tf');\n\n\t pdfKitDoc.addContent('<' + encoded.encodedText + '> Tj');\n\n\t\t\tpdfKitDoc.addContent('ET');\n\n\t\t\tif (inline.link) {\n\t\t\t\tpdfKitDoc.link(x + inline.x, pdfKitDoc.page.height - y - lineHeight, inline.width, lineHeight, inline.link);\n\t\t\t}\n\n\t\t\tpdfKitDoc.restore();\n\t\t}\n\n\t\ttextDecorator.drawDecorations(line, x, y, pdfKitDoc);\n\n\t}\n\n\tfunction renderWatermark(page, pdfKitDoc){\n\t\tvar watermark = page.watermark;\n\n\t\tpdfKitDoc.fill('black');\n\t\tpdfKitDoc.opacity(0.6);\n\n\t\tpdfKitDoc.save();\n\t\tpdfKitDoc.transform(1, 0, 0, -1, 0, pdfKitDoc.page.height);\n\n\t\tvar angle = Math.atan2(pdfKitDoc.page.height, pdfKitDoc.page.width) * 180/Math.PI;\n\t\tpdfKitDoc.rotate(angle, {origin: [pdfKitDoc.page.width/2, pdfKitDoc.page.height/2]});\n\n\t var encoded = watermark.font.encode(watermark.text);\n\t\tpdfKitDoc.addContent('BT');\n\t\tpdfKitDoc.addContent('' + (pdfKitDoc.page.width/2 - watermark.size.size.width/2) + ' ' + (pdfKitDoc.page.height/2 - watermark.size.size.height/4) + ' Td');\n\t\tpdfKitDoc.addContent('/' + encoded.fontId + ' ' + watermark.size.fontSize + ' Tf');\n\t\tpdfKitDoc.addContent('<' + encoded.encodedText + '> Tj');\n\t\tpdfKitDoc.addContent('ET');\n\t\tpdfKitDoc.restore();\n\t}\n\n\tfunction renderVector(vector, pdfDoc) {\n\t\t//TODO: pdf optimization (there's no need to write all properties everytime)\n\t\tpdfDoc.lineWidth(vector.lineWidth || 1);\n\t\tif (vector.dash) {\n\t\t\tpdfDoc.dash(vector.dash.length, { space: vector.dash.space || vector.dash.length });\n\t\t} else {\n\t\t\tpdfDoc.undash();\n\t\t}\n\t\tpdfDoc.fillOpacity(vector.fillOpacity || 1);\n\t\tpdfDoc.strokeOpacity(vector.strokeOpacity || 1);\n\t\tpdfDoc.lineJoin(vector.lineJoin || 'miter');\n\n\t\t//TODO: clipping\n\n\t\tswitch(vector.type) {\n\t\t\tcase 'ellipse':\n\t\t\t\tpdfDoc.ellipse(vector.x, vector.y, vector.r1, vector.r2);\n\t\t\t\tbreak;\n\t\t\tcase 'rect':\n\t\t\t\tif (vector.r) {\n\t\t\t\t\tpdfDoc.roundedRect(vector.x, vector.y, vector.w, vector.h, vector.r);\n\t\t\t\t} else {\n\t\t\t\t\tpdfDoc.rect(vector.x, vector.y, vector.w, vector.h);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'line':\n\t\t\t\tpdfDoc.moveTo(vector.x1, vector.y1);\n\t\t\t\tpdfDoc.lineTo(vector.x2, vector.y2);\n\t\t\t\tbreak;\n\t\t\tcase 'polyline':\n\t\t\t\tif (vector.points.length === 0) break;\n\n\t\t\t\tpdfDoc.moveTo(vector.points[0].x, vector.points[0].y);\n\t\t\t\tfor(var i = 1, l = vector.points.length; i < l; i++) {\n\t\t\t\t\tpdfDoc.lineTo(vector.points[i].x, vector.points[i].y);\n\t\t\t\t}\n\n\t\t\t\tif (vector.points.length > 1) {\n\t\t\t\t\tvar p1 = vector.points[0];\n\t\t\t\t\tvar pn = vector.points[vector.points.length - 1];\n\n\t\t\t\t\tif (vector.closePath || p1.x === pn.x && p1.y === pn.y) {\n\t\t\t\t\t\tpdfDoc.closePath();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif (vector.color && vector.lineColor) {\n\t\t\tpdfDoc.fillAndStroke(vector.color, vector.lineColor);\n\t\t} else if (vector.color) {\n\t\t\tpdfDoc.fill(vector.color);\n\t\t} else {\n\t\t\tpdfDoc.stroke(vector.lineColor || 'black');\n\t\t}\n\t}\n\n\tfunction renderImage(image, x, y, pdfKitDoc) {\n\t pdfKitDoc.image(image.image, image.x, image.y, { width: image._width, height: image._height });\n\t}\n\n\tmodule.exports = PdfPrinter;\n\n\n\t/* temporary browser extension */\n\tPdfPrinter.prototype.fs = __webpack_require__(44);\n\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(module, global) {/**\n\t * @license\n\t * lodash 3.10.1 (Custom Build) \n\t * Build: `lodash modern -d -o ./index.js`\n\t * Copyright 2012-2015 The Dojo Foundation \n\t * Based on Underscore.js 1.8.3 \n\t * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n\t * Available under MIT license \n\t */\n\t;(function() {\n\n\t /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n\t var undefined;\n\n\t /** Used as the semantic version number. */\n\t var VERSION = '3.10.1';\n\n\t /** Used to compose bitmasks for wrapper metadata. */\n\t var BIND_FLAG = 1,\n\t BIND_KEY_FLAG = 2,\n\t CURRY_BOUND_FLAG = 4,\n\t CURRY_FLAG = 8,\n\t CURRY_RIGHT_FLAG = 16,\n\t PARTIAL_FLAG = 32,\n\t PARTIAL_RIGHT_FLAG = 64,\n\t ARY_FLAG = 128,\n\t REARG_FLAG = 256;\n\n\t /** Used as default options for `_.trunc`. */\n\t var DEFAULT_TRUNC_LENGTH = 30,\n\t DEFAULT_TRUNC_OMISSION = '...';\n\n\t /** Used to detect when a function becomes hot. */\n\t var HOT_COUNT = 150,\n\t HOT_SPAN = 16;\n\n\t /** Used as the size to enable large array optimizations. */\n\t var LARGE_ARRAY_SIZE = 200;\n\n\t /** Used to indicate the type of lazy iteratees. */\n\t var LAZY_FILTER_FLAG = 1,\n\t LAZY_MAP_FLAG = 2;\n\n\t /** Used as the `TypeError` message for \"Functions\" methods. */\n\t var FUNC_ERROR_TEXT = 'Expected a function';\n\n\t /** Used as the internal argument placeholder. */\n\t var PLACEHOLDER = '__lodash_placeholder__';\n\n\t /** `Object#toString` result references. */\n\t var argsTag = '[object Arguments]',\n\t arrayTag = '[object Array]',\n\t boolTag = '[object Boolean]',\n\t dateTag = '[object Date]',\n\t errorTag = '[object Error]',\n\t funcTag = '[object Function]',\n\t mapTag = '[object Map]',\n\t numberTag = '[object Number]',\n\t objectTag = '[object Object]',\n\t regexpTag = '[object RegExp]',\n\t setTag = '[object Set]',\n\t stringTag = '[object String]',\n\t weakMapTag = '[object WeakMap]';\n\n\t var arrayBufferTag = '[object ArrayBuffer]',\n\t float32Tag = '[object Float32Array]',\n\t float64Tag = '[object Float64Array]',\n\t int8Tag = '[object Int8Array]',\n\t int16Tag = '[object Int16Array]',\n\t int32Tag = '[object Int32Array]',\n\t uint8Tag = '[object Uint8Array]',\n\t uint8ClampedTag = '[object Uint8ClampedArray]',\n\t uint16Tag = '[object Uint16Array]',\n\t uint32Tag = '[object Uint32Array]';\n\n\t /** Used to match empty string literals in compiled template source. */\n\t var reEmptyStringLeading = /\\b__p \\+= '';/g,\n\t reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n\t reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n\t /** Used to match HTML entities and HTML characters. */\n\t var reEscapedHtml = /&(?:amp|lt|gt|quot|#39|#96);/g,\n\t reUnescapedHtml = /[&<>\"'`]/g,\n\t reHasEscapedHtml = RegExp(reEscapedHtml.source),\n\t reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n\t /** Used to match template delimiters. */\n\t var reEscape = /<%-([\\s\\S]+?)%>/g,\n\t reEvaluate = /<%([\\s\\S]+?)%>/g,\n\t reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n\t /** Used to match property names within property paths. */\n\t var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\n\\\\]|\\\\.)*?\\1)\\]/,\n\t reIsPlainProp = /^\\w*$/,\n\t rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\n\\\\]|\\\\.)*?)\\2)\\]/g;\n\n\t /**\n\t * Used to match `RegExp` [syntax characters](http://ecma-international.org/ecma-262/6.0/#sec-patterns)\n\t * and those outlined by [`EscapeRegExpPattern`](http://ecma-international.org/ecma-262/6.0/#sec-escaperegexppattern).\n\t */\n\t var reRegExpChars = /^[:!,]|[\\\\^$.*+?()[\\]{}|\\/]|(^[0-9a-fA-Fnrtuvx])|([\\n\\r\\u2028\\u2029])/g,\n\t reHasRegExpChars = RegExp(reRegExpChars.source);\n\n\t /** Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks). */\n\t var reComboMark = /[\\u0300-\\u036f\\ufe20-\\ufe23]/g;\n\n\t /** Used to match backslashes in property paths. */\n\t var reEscapeChar = /\\\\(\\\\)?/g;\n\n\t /** Used to match [ES template delimiters](http://ecma-international.org/ecma-262/6.0/#sec-template-literal-lexical-components). */\n\t var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n\t /** Used to match `RegExp` flags from their coerced string values. */\n\t var reFlags = /\\w*$/;\n\n\t /** Used to detect hexadecimal string values. */\n\t var reHasHexPrefix = /^0[xX]/;\n\n\t /** Used to detect host constructors (Safari > 5). */\n\t var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n\t /** Used to detect unsigned integer values. */\n\t var reIsUint = /^\\d+$/;\n\n\t /** Used to match latin-1 supplementary letters (excluding mathematical operators). */\n\t var reLatin1 = /[\\xc0-\\xd6\\xd8-\\xde\\xdf-\\xf6\\xf8-\\xff]/g;\n\n\t /** Used to ensure capturing order of template delimiters. */\n\t var reNoMatch = /($^)/;\n\n\t /** Used to match unescaped characters in compiled string literals. */\n\t var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n\t /** Used to match words to create compound words. */\n\t var reWords = (function() {\n\t var upper = '[A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde]',\n\t lower = '[a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff]+';\n\n\t return RegExp(upper + '+(?=' + upper + lower + ')|' + upper + '?' + lower + '|' + upper + '+|[0-9]+', 'g');\n\t }());\n\n\t /** Used to assign default `context` object properties. */\n\t var contextProps = [\n\t 'Array', 'ArrayBuffer', 'Date', 'Error', 'Float32Array', 'Float64Array',\n\t 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Math', 'Number',\n\t 'Object', 'RegExp', 'Set', 'String', '_', 'clearTimeout', 'isFinite',\n\t 'parseFloat', 'parseInt', 'setTimeout', 'TypeError', 'Uint8Array',\n\t 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap'\n\t ];\n\n\t /** Used to make template sourceURLs easier to identify. */\n\t var templateCounter = -1;\n\n\t /** Used to identify `toStringTag` values of typed arrays. */\n\t var typedArrayTags = {};\n\t typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n\t typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n\t typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n\t typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n\t typedArrayTags[uint32Tag] = true;\n\t typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n\t typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n\t typedArrayTags[dateTag] = typedArrayTags[errorTag] =\n\t typedArrayTags[funcTag] = typedArrayTags[mapTag] =\n\t typedArrayTags[numberTag] = typedArrayTags[objectTag] =\n\t typedArrayTags[regexpTag] = typedArrayTags[setTag] =\n\t typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n\n\t /** Used to identify `toStringTag` values supported by `_.clone`. */\n\t var cloneableTags = {};\n\t cloneableTags[argsTag] = cloneableTags[arrayTag] =\n\t cloneableTags[arrayBufferTag] = cloneableTags[boolTag] =\n\t cloneableTags[dateTag] = cloneableTags[float32Tag] =\n\t cloneableTags[float64Tag] = cloneableTags[int8Tag] =\n\t cloneableTags[int16Tag] = cloneableTags[int32Tag] =\n\t cloneableTags[numberTag] = cloneableTags[objectTag] =\n\t cloneableTags[regexpTag] = cloneableTags[stringTag] =\n\t cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n\t cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n\t cloneableTags[errorTag] = cloneableTags[funcTag] =\n\t cloneableTags[mapTag] = cloneableTags[setTag] =\n\t cloneableTags[weakMapTag] = false;\n\n\t /** Used to map latin-1 supplementary letters to basic latin letters. */\n\t var deburredLetters = {\n\t '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n\t '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n\t '\\xc7': 'C', '\\xe7': 'c',\n\t '\\xd0': 'D', '\\xf0': 'd',\n\t '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n\t '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n\t '\\xcC': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n\t '\\xeC': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n\t '\\xd1': 'N', '\\xf1': 'n',\n\t '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n\t '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n\t '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n\t '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n\t '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n\t '\\xc6': 'Ae', '\\xe6': 'ae',\n\t '\\xde': 'Th', '\\xfe': 'th',\n\t '\\xdf': 'ss'\n\t };\n\n\t /** Used to map characters to HTML entities. */\n\t var htmlEscapes = {\n\t '&': '&',\n\t '<': '<',\n\t '>': '>',\n\t '\"': '"',\n\t \"'\": ''',\n\t '`': '`'\n\t };\n\n\t /** Used to map HTML entities to characters. */\n\t var htmlUnescapes = {\n\t '&': '&',\n\t '<': '<',\n\t '>': '>',\n\t '"': '\"',\n\t ''': \"'\",\n\t '`': '`'\n\t };\n\n\t /** Used to determine if values are of the language type `Object`. */\n\t var objectTypes = {\n\t 'function': true,\n\t 'object': true\n\t };\n\n\t /** Used to escape characters for inclusion in compiled regexes. */\n\t var regexpEscapes = {\n\t '0': 'x30', '1': 'x31', '2': 'x32', '3': 'x33', '4': 'x34',\n\t '5': 'x35', '6': 'x36', '7': 'x37', '8': 'x38', '9': 'x39',\n\t 'A': 'x41', 'B': 'x42', 'C': 'x43', 'D': 'x44', 'E': 'x45', 'F': 'x46',\n\t 'a': 'x61', 'b': 'x62', 'c': 'x63', 'd': 'x64', 'e': 'x65', 'f': 'x66',\n\t 'n': 'x6e', 'r': 'x72', 't': 'x74', 'u': 'x75', 'v': 'x76', 'x': 'x78'\n\t };\n\n\t /** Used to escape characters for inclusion in compiled string literals. */\n\t var stringEscapes = {\n\t '\\\\': '\\\\',\n\t \"'\": \"'\",\n\t '\\n': 'n',\n\t '\\r': 'r',\n\t '\\u2028': 'u2028',\n\t '\\u2029': 'u2029'\n\t };\n\n\t /** Detect free variable `exports`. */\n\t var freeExports = objectTypes[typeof exports] && exports && !exports.nodeType && exports;\n\n\t /** Detect free variable `module`. */\n\t var freeModule = objectTypes[typeof module] && module && !module.nodeType && module;\n\n\t /** Detect free variable `global` from Node.js. */\n\t var freeGlobal = freeExports && freeModule && typeof global == 'object' && global && global.Object && global;\n\n\t /** Detect free variable `self`. */\n\t var freeSelf = objectTypes[typeof self] && self && self.Object && self;\n\n\t /** Detect free variable `window`. */\n\t var freeWindow = objectTypes[typeof window] && window && window.Object && window;\n\n\t /** Detect the popular CommonJS extension `module.exports`. */\n\t var moduleExports = freeModule && freeModule.exports === freeExports && freeExports;\n\n\t /**\n\t * Used as a reference to the global object.\n\t *\n\t * The `this` value is used if it's the global object to avoid Greasemonkey's\n\t * restricted `window` object, otherwise the `window` object is used.\n\t */\n\t var root = freeGlobal || ((freeWindow !== (this && this.window)) && freeWindow) || freeSelf || this;\n\n\t /*--------------------------------------------------------------------------*/\n\n\t /**\n\t * The base implementation of `compareAscending` which compares values and\n\t * sorts them in ascending order without guaranteeing a stable sort.\n\t *\n\t * @private\n\t * @param {*} value The value to compare.\n\t * @param {*} other The other value to compare.\n\t * @returns {number} Returns the sort order indicator for `value`.\n\t */\n\t function baseCompareAscending(value, other) {\n\t if (value !== other) {\n\t var valIsNull = value === null,\n\t valIsUndef = value === undefined,\n\t valIsReflexive = value === value;\n\n\t var othIsNull = other === null,\n\t othIsUndef = other === undefined,\n\t othIsReflexive = other === other;\n\n\t if ((value > other && !othIsNull) || !valIsReflexive ||\n\t (valIsNull && !othIsUndef && othIsReflexive) ||\n\t (valIsUndef && othIsReflexive)) {\n\t return 1;\n\t }\n\t if ((value < other && !valIsNull) || !othIsReflexive ||\n\t (othIsNull && !valIsUndef && valIsReflexive) ||\n\t (othIsUndef && valIsReflexive)) {\n\t return -1;\n\t }\n\t }\n\t return 0;\n\t }\n\n\t /**\n\t * The base implementation of `_.findIndex` and `_.findLastIndex` without\n\t * support for callback shorthands and `this` binding.\n\t *\n\t * @private\n\t * @param {Array} array The array to search.\n\t * @param {Function} predicate The function invoked per iteration.\n\t * @param {boolean} [fromRight] Specify iterating from right to left.\n\t * @returns {number} Returns the index of the matched value, else `-1`.\n\t */\n\t function baseFindIndex(array, predicate, fromRight) {\n\t var length = array.length,\n\t index = fromRight ? length : -1;\n\n\t while ((fromRight ? index-- : ++index < length)) {\n\t if (predicate(array[index], index, array)) {\n\t return index;\n\t }\n\t }\n\t return -1;\n\t }\n\n\t /**\n\t * The base implementation of `_.indexOf` without support for binary searches.\n\t *\n\t * @private\n\t * @param {Array} array The array to search.\n\t * @param {*} value The value to search for.\n\t * @param {number} fromIndex The index to search from.\n\t * @returns {number} Returns the index of the matched value, else `-1`.\n\t */\n\t function baseIndexOf(array, value, fromIndex) {\n\t if (value !== value) {\n\t return indexOfNaN(array, fromIndex);\n\t }\n\t var index = fromIndex - 1,\n\t length = array.length;\n\n\t while (++index < length) {\n\t if (array[index] === value) {\n\t return index;\n\t }\n\t }\n\t return -1;\n\t }\n\n\t /**\n\t * The base implementation of `_.isFunction` without support for environments\n\t * with incorrect `typeof` results.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n\t */\n\t function baseIsFunction(value) {\n\t // Avoid a Chakra JIT bug in compatibility modes of IE 11.\n\t // See https://github.com/jashkenas/underscore/issues/1621 for more details.\n\t return typeof value == 'function' || false;\n\t }\n\n\t /**\n\t * Converts `value` to a string if it's not one. An empty string is returned\n\t * for `null` or `undefined` values.\n\t *\n\t * @private\n\t * @param {*} value The value to process.\n\t * @returns {string} Returns the string.\n\t */\n\t function baseToString(value) {\n\t return value == null ? '' : (value + '');\n\t }\n\n\t /**\n\t * Used by `_.trim` and `_.trimLeft` to get the index of the first character\n\t * of `string` that is not found in `chars`.\n\t *\n\t * @private\n\t * @param {string} string The string to inspect.\n\t * @param {string} chars The characters to find.\n\t * @returns {number} Returns the index of the first character not found in `chars`.\n\t */\n\t function charsLeftIndex(string, chars) {\n\t var index = -1,\n\t length = string.length;\n\n\t while (++index < length && chars.indexOf(string.charAt(index)) > -1) {}\n\t return index;\n\t }\n\n\t /**\n\t * Used by `_.trim` and `_.trimRight` to get the index of the last character\n\t * of `string` that is not found in `chars`.\n\t *\n\t * @private\n\t * @param {string} string The string to inspect.\n\t * @param {string} chars The characters to find.\n\t * @returns {number} Returns the index of the last character not found in `chars`.\n\t */\n\t function charsRightIndex(string, chars) {\n\t var index = string.length;\n\n\t while (index-- && chars.indexOf(string.charAt(index)) > -1) {}\n\t return index;\n\t }\n\n\t /**\n\t * Used by `_.sortBy` to compare transformed elements of a collection and stable\n\t * sort them in ascending order.\n\t *\n\t * @private\n\t * @param {Object} object The object to compare.\n\t * @param {Object} other The other object to compare.\n\t * @returns {number} Returns the sort order indicator for `object`.\n\t */\n\t function compareAscending(object, other) {\n\t return baseCompareAscending(object.criteria, other.criteria) || (object.index - other.index);\n\t }\n\n\t /**\n\t * Used by `_.sortByOrder` to compare multiple properties of a value to another\n\t * and stable sort them.\n\t *\n\t * If `orders` is unspecified, all valuess are sorted in ascending order. Otherwise,\n\t * a value is sorted in ascending order if its corresponding order is \"asc\", and\n\t * descending if \"desc\".\n\t *\n\t * @private\n\t * @param {Object} object The object to compare.\n\t * @param {Object} other The other object to compare.\n\t * @param {boolean[]} orders The order to sort by for each property.\n\t * @returns {number} Returns the sort order indicator for `object`.\n\t */\n\t function compareMultiple(object, other, orders) {\n\t var index = -1,\n\t objCriteria = object.criteria,\n\t othCriteria = other.criteria,\n\t length = objCriteria.length,\n\t ordersLength = orders.length;\n\n\t while (++index < length) {\n\t var result = baseCompareAscending(objCriteria[index], othCriteria[index]);\n\t if (result) {\n\t if (index >= ordersLength) {\n\t return result;\n\t }\n\t var order = orders[index];\n\t return result * ((order === 'asc' || order === true) ? 1 : -1);\n\t }\n\t }\n\t // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n\t // that causes it, under certain circumstances, to provide the same value for\n\t // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n\t // for more details.\n\t //\n\t // This also ensures a stable sort in V8 and other engines.\n\t // See https://code.google.com/p/v8/issues/detail?id=90 for more details.\n\t return object.index - other.index;\n\t }\n\n\t /**\n\t * Used by `_.deburr` to convert latin-1 supplementary letters to basic latin letters.\n\t *\n\t * @private\n\t * @param {string} letter The matched letter to deburr.\n\t * @returns {string} Returns the deburred letter.\n\t */\n\t function deburrLetter(letter) {\n\t return deburredLetters[letter];\n\t }\n\n\t /**\n\t * Used by `_.escape` to convert characters to HTML entities.\n\t *\n\t * @private\n\t * @param {string} chr The matched character to escape.\n\t * @returns {string} Returns the escaped character.\n\t */\n\t function escapeHtmlChar(chr) {\n\t return htmlEscapes[chr];\n\t }\n\n\t /**\n\t * Used by `_.escapeRegExp` to escape characters for inclusion in compiled regexes.\n\t *\n\t * @private\n\t * @param {string} chr The matched character to escape.\n\t * @param {string} leadingChar The capture group for a leading character.\n\t * @param {string} whitespaceChar The capture group for a whitespace character.\n\t * @returns {string} Returns the escaped character.\n\t */\n\t function escapeRegExpChar(chr, leadingChar, whitespaceChar) {\n\t if (leadingChar) {\n\t chr = regexpEscapes[chr];\n\t } else if (whitespaceChar) {\n\t chr = stringEscapes[chr];\n\t }\n\t return '\\\\' + chr;\n\t }\n\n\t /**\n\t * Used by `_.template` to escape characters for inclusion in compiled string literals.\n\t *\n\t * @private\n\t * @param {string} chr The matched character to escape.\n\t * @returns {string} Returns the escaped character.\n\t */\n\t function escapeStringChar(chr) {\n\t return '\\\\' + stringEscapes[chr];\n\t }\n\n\t /**\n\t * Gets the index at which the first occurrence of `NaN` is found in `array`.\n\t *\n\t * @private\n\t * @param {Array} array The array to search.\n\t * @param {number} fromIndex The index to search from.\n\t * @param {boolean} [fromRight] Specify iterating from right to left.\n\t * @returns {number} Returns the index of the matched `NaN`, else `-1`.\n\t */\n\t function indexOfNaN(array, fromIndex, fromRight) {\n\t var length = array.length,\n\t index = fromIndex + (fromRight ? 0 : -1);\n\n\t while ((fromRight ? index-- : ++index < length)) {\n\t var other = array[index];\n\t if (other !== other) {\n\t return index;\n\t }\n\t }\n\t return -1;\n\t }\n\n\t /**\n\t * Checks if `value` is object-like.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n\t */\n\t function isObjectLike(value) {\n\t return !!value && typeof value == 'object';\n\t }\n\n\t /**\n\t * Used by `trimmedLeftIndex` and `trimmedRightIndex` to determine if a\n\t * character code is whitespace.\n\t *\n\t * @private\n\t * @param {number} charCode The character code to inspect.\n\t * @returns {boolean} Returns `true` if `charCode` is whitespace, else `false`.\n\t */\n\t function isSpace(charCode) {\n\t return ((charCode <= 160 && (charCode >= 9 && charCode <= 13) || charCode == 32 || charCode == 160) || charCode == 5760 || charCode == 6158 ||\n\t (charCode >= 8192 && (charCode <= 8202 || charCode == 8232 || charCode == 8233 || charCode == 8239 || charCode == 8287 || charCode == 12288 || charCode == 65279)));\n\t }\n\n\t /**\n\t * Replaces all `placeholder` elements in `array` with an internal placeholder\n\t * and returns an array of their indexes.\n\t *\n\t * @private\n\t * @param {Array} array The array to modify.\n\t * @param {*} placeholder The placeholder to replace.\n\t * @returns {Array} Returns the new array of placeholder indexes.\n\t */\n\t function replaceHolders(array, placeholder) {\n\t var index = -1,\n\t length = array.length,\n\t resIndex = -1,\n\t result = [];\n\n\t while (++index < length) {\n\t if (array[index] === placeholder) {\n\t array[index] = PLACEHOLDER;\n\t result[++resIndex] = index;\n\t }\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * An implementation of `_.uniq` optimized for sorted arrays without support\n\t * for callback shorthands and `this` binding.\n\t *\n\t * @private\n\t * @param {Array} array The array to inspect.\n\t * @param {Function} [iteratee] The function invoked per iteration.\n\t * @returns {Array} Returns the new duplicate-value-free array.\n\t */\n\t function sortedUniq(array, iteratee) {\n\t var seen,\n\t index = -1,\n\t length = array.length,\n\t resIndex = -1,\n\t result = [];\n\n\t while (++index < length) {\n\t var value = array[index],\n\t computed = iteratee ? iteratee(value, index, array) : value;\n\n\t if (!index || seen !== computed) {\n\t seen = computed;\n\t result[++resIndex] = value;\n\t }\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * Used by `_.trim` and `_.trimLeft` to get the index of the first non-whitespace\n\t * character of `string`.\n\t *\n\t * @private\n\t * @param {string} string The string to inspect.\n\t * @returns {number} Returns the index of the first non-whitespace character.\n\t */\n\t function trimmedLeftIndex(string) {\n\t var index = -1,\n\t length = string.length;\n\n\t while (++index < length && isSpace(string.charCodeAt(index))) {}\n\t return index;\n\t }\n\n\t /**\n\t * Used by `_.trim` and `_.trimRight` to get the index of the last non-whitespace\n\t * character of `string`.\n\t *\n\t * @private\n\t * @param {string} string The string to inspect.\n\t * @returns {number} Returns the index of the last non-whitespace character.\n\t */\n\t function trimmedRightIndex(string) {\n\t var index = string.length;\n\n\t while (index-- && isSpace(string.charCodeAt(index))) {}\n\t return index;\n\t }\n\n\t /**\n\t * Used by `_.unescape` to convert HTML entities to characters.\n\t *\n\t * @private\n\t * @param {string} chr The matched character to unescape.\n\t * @returns {string} Returns the unescaped character.\n\t */\n\t function unescapeHtmlChar(chr) {\n\t return htmlUnescapes[chr];\n\t }\n\n\t /*--------------------------------------------------------------------------*/\n\n\t /**\n\t * Create a new pristine `lodash` function using the given `context` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Utility\n\t * @param {Object} [context=root] The context object.\n\t * @returns {Function} Returns a new `lodash` function.\n\t * @example\n\t *\n\t * _.mixin({ 'foo': _.constant('foo') });\n\t *\n\t * var lodash = _.runInContext();\n\t * lodash.mixin({ 'bar': lodash.constant('bar') });\n\t *\n\t * _.isFunction(_.foo);\n\t * // => true\n\t * _.isFunction(_.bar);\n\t * // => false\n\t *\n\t * lodash.isFunction(lodash.foo);\n\t * // => false\n\t * lodash.isFunction(lodash.bar);\n\t * // => true\n\t *\n\t * // using `context` to mock `Date#getTime` use in `_.now`\n\t * var mock = _.runInContext({\n\t * 'Date': function() {\n\t * return { 'getTime': getTimeMock };\n\t * }\n\t * });\n\t *\n\t * // or creating a suped-up `defer` in Node.js\n\t * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n\t */\n\t function runInContext(context) {\n\t // Avoid issues with some ES3 environments that attempt to use values, named\n\t // after built-in constructors like `Object`, for the creation of literals.\n\t // ES5 clears this up by stating that literals must use built-in constructors.\n\t // See https://es5.github.io/#x11.1.5 for more details.\n\t context = context ? _.defaults(root.Object(), context, _.pick(root, contextProps)) : root;\n\n\t /** Native constructor references. */\n\t var Array = context.Array,\n\t Date = context.Date,\n\t Error = context.Error,\n\t Function = context.Function,\n\t Math = context.Math,\n\t Number = context.Number,\n\t Object = context.Object,\n\t RegExp = context.RegExp,\n\t String = context.String,\n\t TypeError = context.TypeError;\n\n\t /** Used for native method references. */\n\t var arrayProto = Array.prototype,\n\t objectProto = Object.prototype,\n\t stringProto = String.prototype;\n\n\t /** Used to resolve the decompiled source of functions. */\n\t var fnToString = Function.prototype.toString;\n\n\t /** Used to check objects for own properties. */\n\t var hasOwnProperty = objectProto.hasOwnProperty;\n\n\t /** Used to generate unique IDs. */\n\t var idCounter = 0;\n\n\t /**\n\t * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n\t * of values.\n\t */\n\t var objToString = objectProto.toString;\n\n\t /** Used to restore the original `_` reference in `_.noConflict`. */\n\t var oldDash = root._;\n\n\t /** Used to detect if a method is native. */\n\t var reIsNative = RegExp('^' +\n\t fnToString.call(hasOwnProperty).replace(/[\\\\^$.*+?()[\\]{}|]/g, '\\\\$&')\n\t .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n\t );\n\n\t /** Native method references. */\n\t var ArrayBuffer = context.ArrayBuffer,\n\t clearTimeout = context.clearTimeout,\n\t parseFloat = context.parseFloat,\n\t pow = Math.pow,\n\t propertyIsEnumerable = objectProto.propertyIsEnumerable,\n\t Set = getNative(context, 'Set'),\n\t setTimeout = context.setTimeout,\n\t splice = arrayProto.splice,\n\t Uint8Array = context.Uint8Array,\n\t WeakMap = getNative(context, 'WeakMap');\n\n\t /* Native method references for those with the same name as other `lodash` methods. */\n\t var nativeCeil = Math.ceil,\n\t nativeCreate = getNative(Object, 'create'),\n\t nativeFloor = Math.floor,\n\t nativeIsArray = getNative(Array, 'isArray'),\n\t nativeIsFinite = context.isFinite,\n\t nativeKeys = getNative(Object, 'keys'),\n\t nativeMax = Math.max,\n\t nativeMin = Math.min,\n\t nativeNow = getNative(Date, 'now'),\n\t nativeParseInt = context.parseInt,\n\t nativeRandom = Math.random;\n\n\t /** Used as references for `-Infinity` and `Infinity`. */\n\t var NEGATIVE_INFINITY = Number.NEGATIVE_INFINITY,\n\t POSITIVE_INFINITY = Number.POSITIVE_INFINITY;\n\n\t /** Used as references for the maximum length and index of an array. */\n\t var MAX_ARRAY_LENGTH = 4294967295,\n\t MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n\t HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n\t /**\n\t * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer)\n\t * of an array-like value.\n\t */\n\t var MAX_SAFE_INTEGER = 9007199254740991;\n\n\t /** Used to store function metadata. */\n\t var metaMap = WeakMap && new WeakMap;\n\n\t /** Used to lookup unminified function names. */\n\t var realNames = {};\n\n\t /*------------------------------------------------------------------------*/\n\n\t /**\n\t * Creates a `lodash` object which wraps `value` to enable implicit chaining.\n\t * Methods that operate on and return arrays, collections, and functions can\n\t * be chained together. Methods that retrieve a single value or may return a\n\t * primitive value will automatically end the chain returning the unwrapped\n\t * value. Explicit chaining may be enabled using `_.chain`. The execution of\n\t * chained methods is lazy, that is, execution is deferred until `_#value`\n\t * is implicitly or explicitly called.\n\t *\n\t * Lazy evaluation allows several methods to support shortcut fusion. Shortcut\n\t * fusion is an optimization strategy which merge iteratee calls; this can help\n\t * to avoid the creation of intermediate data structures and greatly reduce the\n\t * number of iteratee executions.\n\t *\n\t * Chaining is supported in custom builds as long as the `_#value` method is\n\t * directly or indirectly included in the build.\n\t *\n\t * In addition to lodash methods, wrappers have `Array` and `String` methods.\n\t *\n\t * The wrapper `Array` methods are:\n\t * `concat`, `join`, `pop`, `push`, `reverse`, `shift`, `slice`, `sort`,\n\t * `splice`, and `unshift`\n\t *\n\t * The wrapper `String` methods are:\n\t * `replace` and `split`\n\t *\n\t * The wrapper methods that support shortcut fusion are:\n\t * `compact`, `drop`, `dropRight`, `dropRightWhile`, `dropWhile`, `filter`,\n\t * `first`, `initial`, `last`, `map`, `pluck`, `reject`, `rest`, `reverse`,\n\t * `slice`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, `toArray`,\n\t * and `where`\n\t *\n\t * The chainable wrapper methods are:\n\t * `after`, `ary`, `assign`, `at`, `before`, `bind`, `bindAll`, `bindKey`,\n\t * `callback`, `chain`, `chunk`, `commit`, `compact`, `concat`, `constant`,\n\t * `countBy`, `create`, `curry`, `debounce`, `defaults`, `defaultsDeep`,\n\t * `defer`, `delay`, `difference`, `drop`, `dropRight`, `dropRightWhile`,\n\t * `dropWhile`, `fill`, `filter`, `flatten`, `flattenDeep`, `flow`, `flowRight`,\n\t * `forEach`, `forEachRight`, `forIn`, `forInRight`, `forOwn`, `forOwnRight`,\n\t * `functions`, `groupBy`, `indexBy`, `initial`, `intersection`, `invert`,\n\t * `invoke`, `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`,\n\t * `matchesProperty`, `memoize`, `merge`, `method`, `methodOf`, `mixin`,\n\t * `modArgs`, `negate`, `omit`, `once`, `pairs`, `partial`, `partialRight`,\n\t * `partition`, `pick`, `plant`, `pluck`, `property`, `propertyOf`, `pull`,\n\t * `pullAt`, `push`, `range`, `rearg`, `reject`, `remove`, `rest`, `restParam`,\n\t * `reverse`, `set`, `shuffle`, `slice`, `sort`, `sortBy`, `sortByAll`,\n\t * `sortByOrder`, `splice`, `spread`, `take`, `takeRight`, `takeRightWhile`,\n\t * `takeWhile`, `tap`, `throttle`, `thru`, `times`, `toArray`, `toPlainObject`,\n\t * `transform`, `union`, `uniq`, `unshift`, `unzip`, `unzipWith`, `values`,\n\t * `valuesIn`, `where`, `without`, `wrap`, `xor`, `zip`, `zipObject`, `zipWith`\n\t *\n\t * The wrapper methods that are **not** chainable by default are:\n\t * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clone`, `cloneDeep`,\n\t * `deburr`, `endsWith`, `escape`, `escapeRegExp`, `every`, `find`, `findIndex`,\n\t * `findKey`, `findLast`, `findLastIndex`, `findLastKey`, `findWhere`, `first`,\n\t * `floor`, `get`, `gt`, `gte`, `has`, `identity`, `includes`, `indexOf`,\n\t * `inRange`, `isArguments`, `isArray`, `isBoolean`, `isDate`, `isElement`,\n\t * `isEmpty`, `isEqual`, `isError`, `isFinite` `isFunction`, `isMatch`,\n\t * `isNative`, `isNaN`, `isNull`, `isNumber`, `isObject`, `isPlainObject`,\n\t * `isRegExp`, `isString`, `isUndefined`, `isTypedArray`, `join`, `kebabCase`,\n\t * `last`, `lastIndexOf`, `lt`, `lte`, `max`, `min`, `noConflict`, `noop`,\n\t * `now`, `pad`, `padLeft`, `padRight`, `parseInt`, `pop`, `random`, `reduce`,\n\t * `reduceRight`, `repeat`, `result`, `round`, `runInContext`, `shift`, `size`,\n\t * `snakeCase`, `some`, `sortedIndex`, `sortedLastIndex`, `startCase`,\n\t * `startsWith`, `sum`, `template`, `trim`, `trimLeft`, `trimRight`, `trunc`,\n\t * `unescape`, `uniqueId`, `value`, and `words`\n\t *\n\t * The wrapper method `sample` will return a wrapped value when `n` is provided,\n\t * otherwise an unwrapped value is returned.\n\t *\n\t * @name _\n\t * @constructor\n\t * @category Chain\n\t * @param {*} value The value to wrap in a `lodash` instance.\n\t * @returns {Object} Returns the new `lodash` wrapper instance.\n\t * @example\n\t *\n\t * var wrapped = _([1, 2, 3]);\n\t *\n\t * // returns an unwrapped value\n\t * wrapped.reduce(function(total, n) {\n\t * return total + n;\n\t * });\n\t * // => 6\n\t *\n\t * // returns a wrapped value\n\t * var squares = wrapped.map(function(n) {\n\t * return n * n;\n\t * });\n\t *\n\t * _.isArray(squares);\n\t * // => false\n\t *\n\t * _.isArray(squares.value());\n\t * // => true\n\t */\n\t function lodash(value) {\n\t if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n\t if (value instanceof LodashWrapper) {\n\t return value;\n\t }\n\t if (hasOwnProperty.call(value, '__chain__') && hasOwnProperty.call(value, '__wrapped__')) {\n\t return wrapperClone(value);\n\t }\n\t }\n\t return new LodashWrapper(value);\n\t }\n\n\t /**\n\t * The function whose prototype all chaining wrappers inherit from.\n\t *\n\t * @private\n\t */\n\t function baseLodash() {\n\t // No operation performed.\n\t }\n\n\t /**\n\t * The base constructor for creating `lodash` wrapper objects.\n\t *\n\t * @private\n\t * @param {*} value The value to wrap.\n\t * @param {boolean} [chainAll] Enable chaining for all wrapper methods.\n\t * @param {Array} [actions=[]] Actions to peform to resolve the unwrapped value.\n\t */\n\t function LodashWrapper(value, chainAll, actions) {\n\t this.__wrapped__ = value;\n\t this.__actions__ = actions || [];\n\t this.__chain__ = !!chainAll;\n\t }\n\n\t /**\n\t * An object environment feature flags.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @type Object\n\t */\n\t var support = lodash.support = {};\n\n\t /**\n\t * By default, the template delimiters used by lodash are like those in\n\t * embedded Ruby (ERB). Change the following template settings to use\n\t * alternative delimiters.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @type Object\n\t */\n\t lodash.templateSettings = {\n\n\t /**\n\t * Used to detect `data` property values to be HTML-escaped.\n\t *\n\t * @memberOf _.templateSettings\n\t * @type RegExp\n\t */\n\t 'escape': reEscape,\n\n\t /**\n\t * Used to detect code to be evaluated.\n\t *\n\t * @memberOf _.templateSettings\n\t * @type RegExp\n\t */\n\t 'evaluate': reEvaluate,\n\n\t /**\n\t * Used to detect `data` property values to inject.\n\t *\n\t * @memberOf _.templateSettings\n\t * @type RegExp\n\t */\n\t 'interpolate': reInterpolate,\n\n\t /**\n\t * Used to reference the data object in the template text.\n\t *\n\t * @memberOf _.templateSettings\n\t * @type string\n\t */\n\t 'variable': '',\n\n\t /**\n\t * Used to import variables into the compiled template.\n\t *\n\t * @memberOf _.templateSettings\n\t * @type Object\n\t */\n\t 'imports': {\n\n\t /**\n\t * A reference to the `lodash` function.\n\t *\n\t * @memberOf _.templateSettings.imports\n\t * @type Function\n\t */\n\t '_': lodash\n\t }\n\t };\n\n\t /*------------------------------------------------------------------------*/\n\n\t /**\n\t * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n\t *\n\t * @private\n\t * @param {*} value The value to wrap.\n\t */\n\t function LazyWrapper(value) {\n\t this.__wrapped__ = value;\n\t this.__actions__ = [];\n\t this.__dir__ = 1;\n\t this.__filtered__ = false;\n\t this.__iteratees__ = [];\n\t this.__takeCount__ = POSITIVE_INFINITY;\n\t this.__views__ = [];\n\t }\n\n\t /**\n\t * Creates a clone of the lazy wrapper object.\n\t *\n\t * @private\n\t * @name clone\n\t * @memberOf LazyWrapper\n\t * @returns {Object} Returns the cloned `LazyWrapper` object.\n\t */\n\t function lazyClone() {\n\t var result = new LazyWrapper(this.__wrapped__);\n\t result.__actions__ = arrayCopy(this.__actions__);\n\t result.__dir__ = this.__dir__;\n\t result.__filtered__ = this.__filtered__;\n\t result.__iteratees__ = arrayCopy(this.__iteratees__);\n\t result.__takeCount__ = this.__takeCount__;\n\t result.__views__ = arrayCopy(this.__views__);\n\t return result;\n\t }\n\n\t /**\n\t * Reverses the direction of lazy iteration.\n\t *\n\t * @private\n\t * @name reverse\n\t * @memberOf LazyWrapper\n\t * @returns {Object} Returns the new reversed `LazyWrapper` object.\n\t */\n\t function lazyReverse() {\n\t if (this.__filtered__) {\n\t var result = new LazyWrapper(this);\n\t result.__dir__ = -1;\n\t result.__filtered__ = true;\n\t } else {\n\t result = this.clone();\n\t result.__dir__ *= -1;\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * Extracts the unwrapped value from its lazy wrapper.\n\t *\n\t * @private\n\t * @name value\n\t * @memberOf LazyWrapper\n\t * @returns {*} Returns the unwrapped value.\n\t */\n\t function lazyValue() {\n\t var array = this.__wrapped__.value(),\n\t dir = this.__dir__,\n\t isArr = isArray(array),\n\t isRight = dir < 0,\n\t arrLength = isArr ? array.length : 0,\n\t view = getView(0, arrLength, this.__views__),\n\t start = view.start,\n\t end = view.end,\n\t length = end - start,\n\t index = isRight ? end : (start - 1),\n\t iteratees = this.__iteratees__,\n\t iterLength = iteratees.length,\n\t resIndex = 0,\n\t takeCount = nativeMin(length, this.__takeCount__);\n\n\t if (!isArr || arrLength < LARGE_ARRAY_SIZE || (arrLength == length && takeCount == length)) {\n\t return baseWrapperValue((isRight && isArr) ? array.reverse() : array, this.__actions__);\n\t }\n\t var result = [];\n\n\t outer:\n\t while (length-- && resIndex < takeCount) {\n\t index += dir;\n\n\t var iterIndex = -1,\n\t value = array[index];\n\n\t while (++iterIndex < iterLength) {\n\t var data = iteratees[iterIndex],\n\t iteratee = data.iteratee,\n\t type = data.type,\n\t computed = iteratee(value);\n\n\t if (type == LAZY_MAP_FLAG) {\n\t value = computed;\n\t } else if (!computed) {\n\t if (type == LAZY_FILTER_FLAG) {\n\t continue outer;\n\t } else {\n\t break outer;\n\t }\n\t }\n\t }\n\t result[resIndex++] = value;\n\t }\n\t return result;\n\t }\n\n\t /*------------------------------------------------------------------------*/\n\n\t /**\n\t * Creates a cache object to store key/value pairs.\n\t *\n\t * @private\n\t * @static\n\t * @name Cache\n\t * @memberOf _.memoize\n\t */\n\t function MapCache() {\n\t this.__data__ = {};\n\t }\n\n\t /**\n\t * Removes `key` and its value from the cache.\n\t *\n\t * @private\n\t * @name delete\n\t * @memberOf _.memoize.Cache\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed successfully, else `false`.\n\t */\n\t function mapDelete(key) {\n\t return this.has(key) && delete this.__data__[key];\n\t }\n\n\t /**\n\t * Gets the cached value for `key`.\n\t *\n\t * @private\n\t * @name get\n\t * @memberOf _.memoize.Cache\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the cached value.\n\t */\n\t function mapGet(key) {\n\t return key == '__proto__' ? undefined : this.__data__[key];\n\t }\n\n\t /**\n\t * Checks if a cached value for `key` exists.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf _.memoize.Cache\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\t function mapHas(key) {\n\t return key != '__proto__' && hasOwnProperty.call(this.__data__, key);\n\t }\n\n\t /**\n\t * Sets `value` to `key` of the cache.\n\t *\n\t * @private\n\t * @name set\n\t * @memberOf _.memoize.Cache\n\t * @param {string} key The key of the value to cache.\n\t * @param {*} value The value to cache.\n\t * @returns {Object} Returns the cache object.\n\t */\n\t function mapSet(key, value) {\n\t if (key != '__proto__') {\n\t this.__data__[key] = value;\n\t }\n\t return this;\n\t }\n\n\t /*------------------------------------------------------------------------*/\n\n\t /**\n\t *\n\t * Creates a cache object to store unique values.\n\t *\n\t * @private\n\t * @param {Array} [values] The values to cache.\n\t */\n\t function SetCache(values) {\n\t var length = values ? values.length : 0;\n\n\t this.data = { 'hash': nativeCreate(null), 'set': new Set };\n\t while (length--) {\n\t this.push(values[length]);\n\t }\n\t }\n\n\t /**\n\t * Checks if `value` is in `cache` mimicking the return signature of\n\t * `_.indexOf` by returning `0` if the value is found, else `-1`.\n\t *\n\t * @private\n\t * @param {Object} cache The cache to search.\n\t * @param {*} value The value to search for.\n\t * @returns {number} Returns `0` if `value` is found, else `-1`.\n\t */\n\t function cacheIndexOf(cache, value) {\n\t var data = cache.data,\n\t result = (typeof value == 'string' || isObject(value)) ? data.set.has(value) : data.hash[value];\n\n\t return result ? 0 : -1;\n\t }\n\n\t /**\n\t * Adds `value` to the cache.\n\t *\n\t * @private\n\t * @name push\n\t * @memberOf SetCache\n\t * @param {*} value The value to cache.\n\t */\n\t function cachePush(value) {\n\t var data = this.data;\n\t if (typeof value == 'string' || isObject(value)) {\n\t data.set.add(value);\n\t } else {\n\t data.hash[value] = true;\n\t }\n\t }\n\n\t /*------------------------------------------------------------------------*/\n\n\t /**\n\t * Creates a new array joining `array` with `other`.\n\t *\n\t * @private\n\t * @param {Array} array The array to join.\n\t * @param {Array} other The other array to join.\n\t * @returns {Array} Returns the new concatenated array.\n\t */\n\t function arrayConcat(array, other) {\n\t var index = -1,\n\t length = array.length,\n\t othIndex = -1,\n\t othLength = other.length,\n\t result = Array(length + othLength);\n\n\t while (++index < length) {\n\t result[index] = array[index];\n\t }\n\t while (++othIndex < othLength) {\n\t result[index++] = other[othIndex];\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * Copies the values of `source` to `array`.\n\t *\n\t * @private\n\t * @param {Array} source The array to copy values from.\n\t * @param {Array} [array=[]] The array to copy values to.\n\t * @returns {Array} Returns `array`.\n\t */\n\t function arrayCopy(source, array) {\n\t var index = -1,\n\t length = source.length;\n\n\t array || (array = Array(length));\n\t while (++index < length) {\n\t array[index] = source[index];\n\t }\n\t return array;\n\t }\n\n\t /**\n\t * A specialized version of `_.forEach` for arrays without support for callback\n\t * shorthands and `this` binding.\n\t *\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @returns {Array} Returns `array`.\n\t */\n\t function arrayEach(array, iteratee) {\n\t var index = -1,\n\t length = array.length;\n\n\t while (++index < length) {\n\t if (iteratee(array[index], index, array) === false) {\n\t break;\n\t }\n\t }\n\t return array;\n\t }\n\n\t /**\n\t * A specialized version of `_.forEachRight` for arrays without support for\n\t * callback shorthands and `this` binding.\n\t *\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @returns {Array} Returns `array`.\n\t */\n\t function arrayEachRight(array, iteratee) {\n\t var length = array.length;\n\n\t while (length--) {\n\t if (iteratee(array[length], length, array) === false) {\n\t break;\n\t }\n\t }\n\t return array;\n\t }\n\n\t /**\n\t * A specialized version of `_.every` for arrays without support for callback\n\t * shorthands and `this` binding.\n\t *\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} predicate The function invoked per iteration.\n\t * @returns {boolean} Returns `true` if all elements pass the predicate check,\n\t * else `false`.\n\t */\n\t function arrayEvery(array, predicate) {\n\t var index = -1,\n\t length = array.length;\n\n\t while (++index < length) {\n\t if (!predicate(array[index], index, array)) {\n\t return false;\n\t }\n\t }\n\t return true;\n\t }\n\n\t /**\n\t * A specialized version of `baseExtremum` for arrays which invokes `iteratee`\n\t * with one argument: (value).\n\t *\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @param {Function} comparator The function used to compare values.\n\t * @param {*} exValue The initial extremum value.\n\t * @returns {*} Returns the extremum value.\n\t */\n\t function arrayExtremum(array, iteratee, comparator, exValue) {\n\t var index = -1,\n\t length = array.length,\n\t computed = exValue,\n\t result = computed;\n\n\t while (++index < length) {\n\t var value = array[index],\n\t current = +iteratee(value);\n\n\t if (comparator(current, computed)) {\n\t computed = current;\n\t result = value;\n\t }\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * A specialized version of `_.filter` for arrays without support for callback\n\t * shorthands and `this` binding.\n\t *\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} predicate The function invoked per iteration.\n\t * @returns {Array} Returns the new filtered array.\n\t */\n\t function arrayFilter(array, predicate) {\n\t var index = -1,\n\t length = array.length,\n\t resIndex = -1,\n\t result = [];\n\n\t while (++index < length) {\n\t var value = array[index];\n\t if (predicate(value, index, array)) {\n\t result[++resIndex] = value;\n\t }\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * A specialized version of `_.map` for arrays without support for callback\n\t * shorthands and `this` binding.\n\t *\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @returns {Array} Returns the new mapped array.\n\t */\n\t function arrayMap(array, iteratee) {\n\t var index = -1,\n\t length = array.length,\n\t result = Array(length);\n\n\t while (++index < length) {\n\t result[index] = iteratee(array[index], index, array);\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * Appends the elements of `values` to `array`.\n\t *\n\t * @private\n\t * @param {Array} array The array to modify.\n\t * @param {Array} values The values to append.\n\t * @returns {Array} Returns `array`.\n\t */\n\t function arrayPush(array, values) {\n\t var index = -1,\n\t length = values.length,\n\t offset = array.length;\n\n\t while (++index < length) {\n\t array[offset + index] = values[index];\n\t }\n\t return array;\n\t }\n\n\t /**\n\t * A specialized version of `_.reduce` for arrays without support for callback\n\t * shorthands and `this` binding.\n\t *\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @param {*} [accumulator] The initial value.\n\t * @param {boolean} [initFromArray] Specify using the first element of `array`\n\t * as the initial value.\n\t * @returns {*} Returns the accumulated value.\n\t */\n\t function arrayReduce(array, iteratee, accumulator, initFromArray) {\n\t var index = -1,\n\t length = array.length;\n\n\t if (initFromArray && length) {\n\t accumulator = array[++index];\n\t }\n\t while (++index < length) {\n\t accumulator = iteratee(accumulator, array[index], index, array);\n\t }\n\t return accumulator;\n\t }\n\n\t /**\n\t * A specialized version of `_.reduceRight` for arrays without support for\n\t * callback shorthands and `this` binding.\n\t *\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @param {*} [accumulator] The initial value.\n\t * @param {boolean} [initFromArray] Specify using the last element of `array`\n\t * as the initial value.\n\t * @returns {*} Returns the accumulated value.\n\t */\n\t function arrayReduceRight(array, iteratee, accumulator, initFromArray) {\n\t var length = array.length;\n\t if (initFromArray && length) {\n\t accumulator = array[--length];\n\t }\n\t while (length--) {\n\t accumulator = iteratee(accumulator, array[length], length, array);\n\t }\n\t return accumulator;\n\t }\n\n\t /**\n\t * A specialized version of `_.some` for arrays without support for callback\n\t * shorthands and `this` binding.\n\t *\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} predicate The function invoked per iteration.\n\t * @returns {boolean} Returns `true` if any element passes the predicate check,\n\t * else `false`.\n\t */\n\t function arraySome(array, predicate) {\n\t var index = -1,\n\t length = array.length;\n\n\t while (++index < length) {\n\t if (predicate(array[index], index, array)) {\n\t return true;\n\t }\n\t }\n\t return false;\n\t }\n\n\t /**\n\t * A specialized version of `_.sum` for arrays without support for callback\n\t * shorthands and `this` binding..\n\t *\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @returns {number} Returns the sum.\n\t */\n\t function arraySum(array, iteratee) {\n\t var length = array.length,\n\t result = 0;\n\n\t while (length--) {\n\t result += +iteratee(array[length]) || 0;\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * Used by `_.defaults` to customize its `_.assign` use.\n\t *\n\t * @private\n\t * @param {*} objectValue The destination object property value.\n\t * @param {*} sourceValue The source object property value.\n\t * @returns {*} Returns the value to assign to the destination object.\n\t */\n\t function assignDefaults(objectValue, sourceValue) {\n\t return objectValue === undefined ? sourceValue : objectValue;\n\t }\n\n\t /**\n\t * Used by `_.template` to customize its `_.assign` use.\n\t *\n\t * **Note:** This function is like `assignDefaults` except that it ignores\n\t * inherited property values when checking if a property is `undefined`.\n\t *\n\t * @private\n\t * @param {*} objectValue The destination object property value.\n\t * @param {*} sourceValue The source object property value.\n\t * @param {string} key The key associated with the object and source values.\n\t * @param {Object} object The destination object.\n\t * @returns {*} Returns the value to assign to the destination object.\n\t */\n\t function assignOwnDefaults(objectValue, sourceValue, key, object) {\n\t return (objectValue === undefined || !hasOwnProperty.call(object, key))\n\t ? sourceValue\n\t : objectValue;\n\t }\n\n\t /**\n\t * A specialized version of `_.assign` for customizing assigned values without\n\t * support for argument juggling, multiple sources, and `this` binding `customizer`\n\t * functions.\n\t *\n\t * @private\n\t * @param {Object} object The destination object.\n\t * @param {Object} source The source object.\n\t * @param {Function} customizer The function to customize assigned values.\n\t * @returns {Object} Returns `object`.\n\t */\n\t function assignWith(object, source, customizer) {\n\t var index = -1,\n\t props = keys(source),\n\t length = props.length;\n\n\t while (++index < length) {\n\t var key = props[index],\n\t value = object[key],\n\t result = customizer(value, source[key], key, object, source);\n\n\t if ((result === result ? (result !== value) : (value === value)) ||\n\t (value === undefined && !(key in object))) {\n\t object[key] = result;\n\t }\n\t }\n\t return object;\n\t }\n\n\t /**\n\t * The base implementation of `_.assign` without support for argument juggling,\n\t * multiple sources, and `customizer` functions.\n\t *\n\t * @private\n\t * @param {Object} object The destination object.\n\t * @param {Object} source The source object.\n\t * @returns {Object} Returns `object`.\n\t */\n\t function baseAssign(object, source) {\n\t return source == null\n\t ? object\n\t : baseCopy(source, keys(source), object);\n\t }\n\n\t /**\n\t * The base implementation of `_.at` without support for string collections\n\t * and individual key arguments.\n\t *\n\t * @private\n\t * @param {Array|Object} collection The collection to iterate over.\n\t * @param {number[]|string[]} props The property names or indexes of elements to pick.\n\t * @returns {Array} Returns the new array of picked elements.\n\t */\n\t function baseAt(collection, props) {\n\t var index = -1,\n\t isNil = collection == null,\n\t isArr = !isNil && isArrayLike(collection),\n\t length = isArr ? collection.length : 0,\n\t propsLength = props.length,\n\t result = Array(propsLength);\n\n\t while(++index < propsLength) {\n\t var key = props[index];\n\t if (isArr) {\n\t result[index] = isIndex(key, length) ? collection[key] : undefined;\n\t } else {\n\t result[index] = isNil ? undefined : collection[key];\n\t }\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * Copies properties of `source` to `object`.\n\t *\n\t * @private\n\t * @param {Object} source The object to copy properties from.\n\t * @param {Array} props The property names to copy.\n\t * @param {Object} [object={}] The object to copy properties to.\n\t * @returns {Object} Returns `object`.\n\t */\n\t function baseCopy(source, props, object) {\n\t object || (object = {});\n\n\t var index = -1,\n\t length = props.length;\n\n\t while (++index < length) {\n\t var key = props[index];\n\t object[key] = source[key];\n\t }\n\t return object;\n\t }\n\n\t /**\n\t * The base implementation of `_.callback` which supports specifying the\n\t * number of arguments to provide to `func`.\n\t *\n\t * @private\n\t * @param {*} [func=_.identity] The value to convert to a callback.\n\t * @param {*} [thisArg] The `this` binding of `func`.\n\t * @param {number} [argCount] The number of arguments to provide to `func`.\n\t * @returns {Function} Returns the callback.\n\t */\n\t function baseCallback(func, thisArg, argCount) {\n\t var type = typeof func;\n\t if (type == 'function') {\n\t return thisArg === undefined\n\t ? func\n\t : bindCallback(func, thisArg, argCount);\n\t }\n\t if (func == null) {\n\t return identity;\n\t }\n\t if (type == 'object') {\n\t return baseMatches(func);\n\t }\n\t return thisArg === undefined\n\t ? property(func)\n\t : baseMatchesProperty(func, thisArg);\n\t }\n\n\t /**\n\t * The base implementation of `_.clone` without support for argument juggling\n\t * and `this` binding `customizer` functions.\n\t *\n\t * @private\n\t * @param {*} value The value to clone.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @param {Function} [customizer] The function to customize cloning values.\n\t * @param {string} [key] The key of `value`.\n\t * @param {Object} [object] The object `value` belongs to.\n\t * @param {Array} [stackA=[]] Tracks traversed source objects.\n\t * @param {Array} [stackB=[]] Associates clones with source counterparts.\n\t * @returns {*} Returns the cloned value.\n\t */\n\t function baseClone(value, isDeep, customizer, key, object, stackA, stackB) {\n\t var result;\n\t if (customizer) {\n\t result = object ? customizer(value, key, object) : customizer(value);\n\t }\n\t if (result !== undefined) {\n\t return result;\n\t }\n\t if (!isObject(value)) {\n\t return value;\n\t }\n\t var isArr = isArray(value);\n\t if (isArr) {\n\t result = initCloneArray(value);\n\t if (!isDeep) {\n\t return arrayCopy(value, result);\n\t }\n\t } else {\n\t var tag = objToString.call(value),\n\t isFunc = tag == funcTag;\n\n\t if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n\t result = initCloneObject(isFunc ? {} : value);\n\t if (!isDeep) {\n\t return baseAssign(result, value);\n\t }\n\t } else {\n\t return cloneableTags[tag]\n\t ? initCloneByTag(value, tag, isDeep)\n\t : (object ? value : {});\n\t }\n\t }\n\t // Check for circular references and return its corresponding clone.\n\t stackA || (stackA = []);\n\t stackB || (stackB = []);\n\n\t var length = stackA.length;\n\t while (length--) {\n\t if (stackA[length] == value) {\n\t return stackB[length];\n\t }\n\t }\n\t // Add the source value to the stack of traversed objects and associate it with its clone.\n\t stackA.push(value);\n\t stackB.push(result);\n\n\t // Recursively populate clone (susceptible to call stack limits).\n\t (isArr ? arrayEach : baseForOwn)(value, function(subValue, key) {\n\t result[key] = baseClone(subValue, isDeep, customizer, key, value, stackA, stackB);\n\t });\n\t return result;\n\t }\n\n\t /**\n\t * The base implementation of `_.create` without support for assigning\n\t * properties to the created object.\n\t *\n\t * @private\n\t * @param {Object} prototype The object to inherit from.\n\t * @returns {Object} Returns the new object.\n\t */\n\t var baseCreate = (function() {\n\t function object() {}\n\t return function(prototype) {\n\t if (isObject(prototype)) {\n\t object.prototype = prototype;\n\t var result = new object;\n\t object.prototype = undefined;\n\t }\n\t return result || {};\n\t };\n\t }());\n\n\t /**\n\t * The base implementation of `_.delay` and `_.defer` which accepts an index\n\t * of where to slice the arguments to provide to `func`.\n\t *\n\t * @private\n\t * @param {Function} func The function to delay.\n\t * @param {number} wait The number of milliseconds to delay invocation.\n\t * @param {Object} args The arguments provide to `func`.\n\t * @returns {number} Returns the timer id.\n\t */\n\t function baseDelay(func, wait, args) {\n\t if (typeof func != 'function') {\n\t throw new TypeError(FUNC_ERROR_TEXT);\n\t }\n\t return setTimeout(function() { func.apply(undefined, args); }, wait);\n\t }\n\n\t /**\n\t * The base implementation of `_.difference` which accepts a single array\n\t * of values to exclude.\n\t *\n\t * @private\n\t * @param {Array} array The array to inspect.\n\t * @param {Array} values The values to exclude.\n\t * @returns {Array} Returns the new array of filtered values.\n\t */\n\t function baseDifference(array, values) {\n\t var length = array ? array.length : 0,\n\t result = [];\n\n\t if (!length) {\n\t return result;\n\t }\n\t var index = -1,\n\t indexOf = getIndexOf(),\n\t isCommon = indexOf == baseIndexOf,\n\t cache = (isCommon && values.length >= LARGE_ARRAY_SIZE) ? createCache(values) : null,\n\t valuesLength = values.length;\n\n\t if (cache) {\n\t indexOf = cacheIndexOf;\n\t isCommon = false;\n\t values = cache;\n\t }\n\t outer:\n\t while (++index < length) {\n\t var value = array[index];\n\n\t if (isCommon && value === value) {\n\t var valuesIndex = valuesLength;\n\t while (valuesIndex--) {\n\t if (values[valuesIndex] === value) {\n\t continue outer;\n\t }\n\t }\n\t result.push(value);\n\t }\n\t else if (indexOf(values, value, 0) < 0) {\n\t result.push(value);\n\t }\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * The base implementation of `_.forEach` without support for callback\n\t * shorthands and `this` binding.\n\t *\n\t * @private\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @returns {Array|Object|string} Returns `collection`.\n\t */\n\t var baseEach = createBaseEach(baseForOwn);\n\n\t /**\n\t * The base implementation of `_.forEachRight` without support for callback\n\t * shorthands and `this` binding.\n\t *\n\t * @private\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @returns {Array|Object|string} Returns `collection`.\n\t */\n\t var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n\t /**\n\t * The base implementation of `_.every` without support for callback\n\t * shorthands and `this` binding.\n\t *\n\t * @private\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function} predicate The function invoked per iteration.\n\t * @returns {boolean} Returns `true` if all elements pass the predicate check,\n\t * else `false`\n\t */\n\t function baseEvery(collection, predicate) {\n\t var result = true;\n\t baseEach(collection, function(value, index, collection) {\n\t result = !!predicate(value, index, collection);\n\t return result;\n\t });\n\t return result;\n\t }\n\n\t /**\n\t * Gets the extremum value of `collection` invoking `iteratee` for each value\n\t * in `collection` to generate the criterion by which the value is ranked.\n\t * The `iteratee` is invoked with three arguments: (value, index|key, collection).\n\t *\n\t * @private\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @param {Function} comparator The function used to compare values.\n\t * @param {*} exValue The initial extremum value.\n\t * @returns {*} Returns the extremum value.\n\t */\n\t function baseExtremum(collection, iteratee, comparator, exValue) {\n\t var computed = exValue,\n\t result = computed;\n\n\t baseEach(collection, function(value, index, collection) {\n\t var current = +iteratee(value, index, collection);\n\t if (comparator(current, computed) || (current === exValue && current === result)) {\n\t computed = current;\n\t result = value;\n\t }\n\t });\n\t return result;\n\t }\n\n\t /**\n\t * The base implementation of `_.fill` without an iteratee call guard.\n\t *\n\t * @private\n\t * @param {Array} array The array to fill.\n\t * @param {*} value The value to fill `array` with.\n\t * @param {number} [start=0] The start position.\n\t * @param {number} [end=array.length] The end position.\n\t * @returns {Array} Returns `array`.\n\t */\n\t function baseFill(array, value, start, end) {\n\t var length = array.length;\n\n\t start = start == null ? 0 : (+start || 0);\n\t if (start < 0) {\n\t start = -start > length ? 0 : (length + start);\n\t }\n\t end = (end === undefined || end > length) ? length : (+end || 0);\n\t if (end < 0) {\n\t end += length;\n\t }\n\t length = start > end ? 0 : (end >>> 0);\n\t start >>>= 0;\n\n\t while (start < length) {\n\t array[start++] = value;\n\t }\n\t return array;\n\t }\n\n\t /**\n\t * The base implementation of `_.filter` without support for callback\n\t * shorthands and `this` binding.\n\t *\n\t * @private\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function} predicate The function invoked per iteration.\n\t * @returns {Array} Returns the new filtered array.\n\t */\n\t function baseFilter(collection, predicate) {\n\t var result = [];\n\t baseEach(collection, function(value, index, collection) {\n\t if (predicate(value, index, collection)) {\n\t result.push(value);\n\t }\n\t });\n\t return result;\n\t }\n\n\t /**\n\t * The base implementation of `_.find`, `_.findLast`, `_.findKey`, and `_.findLastKey`,\n\t * without support for callback shorthands and `this` binding, which iterates\n\t * over `collection` using the provided `eachFunc`.\n\t *\n\t * @private\n\t * @param {Array|Object|string} collection The collection to search.\n\t * @param {Function} predicate The function invoked per iteration.\n\t * @param {Function} eachFunc The function to iterate over `collection`.\n\t * @param {boolean} [retKey] Specify returning the key of the found element\n\t * instead of the element itself.\n\t * @returns {*} Returns the found element or its key, else `undefined`.\n\t */\n\t function baseFind(collection, predicate, eachFunc, retKey) {\n\t var result;\n\t eachFunc(collection, function(value, key, collection) {\n\t if (predicate(value, key, collection)) {\n\t result = retKey ? key : value;\n\t return false;\n\t }\n\t });\n\t return result;\n\t }\n\n\t /**\n\t * The base implementation of `_.flatten` with added support for restricting\n\t * flattening and specifying the start index.\n\t *\n\t * @private\n\t * @param {Array} array The array to flatten.\n\t * @param {boolean} [isDeep] Specify a deep flatten.\n\t * @param {boolean} [isStrict] Restrict flattening to arrays-like objects.\n\t * @param {Array} [result=[]] The initial result value.\n\t * @returns {Array} Returns the new flattened array.\n\t */\n\t function baseFlatten(array, isDeep, isStrict, result) {\n\t result || (result = []);\n\n\t var index = -1,\n\t length = array.length;\n\n\t while (++index < length) {\n\t var value = array[index];\n\t if (isObjectLike(value) && isArrayLike(value) &&\n\t (isStrict || isArray(value) || isArguments(value))) {\n\t if (isDeep) {\n\t // Recursively flatten arrays (susceptible to call stack limits).\n\t baseFlatten(value, isDeep, isStrict, result);\n\t } else {\n\t arrayPush(result, value);\n\t }\n\t } else if (!isStrict) {\n\t result[result.length] = value;\n\t }\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * The base implementation of `baseForIn` and `baseForOwn` which iterates\n\t * over `object` properties returned by `keysFunc` invoking `iteratee` for\n\t * each property. Iteratee functions may exit iteration early by explicitly\n\t * returning `false`.\n\t *\n\t * @private\n\t * @param {Object} object The object to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @param {Function} keysFunc The function to get the keys of `object`.\n\t * @returns {Object} Returns `object`.\n\t */\n\t var baseFor = createBaseFor();\n\n\t /**\n\t * This function is like `baseFor` except that it iterates over properties\n\t * in the opposite order.\n\t *\n\t * @private\n\t * @param {Object} object The object to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @param {Function} keysFunc The function to get the keys of `object`.\n\t * @returns {Object} Returns `object`.\n\t */\n\t var baseForRight = createBaseFor(true);\n\n\t /**\n\t * The base implementation of `_.forIn` without support for callback\n\t * shorthands and `this` binding.\n\t *\n\t * @private\n\t * @param {Object} object The object to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @returns {Object} Returns `object`.\n\t */\n\t function baseForIn(object, iteratee) {\n\t return baseFor(object, iteratee, keysIn);\n\t }\n\n\t /**\n\t * The base implementation of `_.forOwn` without support for callback\n\t * shorthands and `this` binding.\n\t *\n\t * @private\n\t * @param {Object} object The object to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @returns {Object} Returns `object`.\n\t */\n\t function baseForOwn(object, iteratee) {\n\t return baseFor(object, iteratee, keys);\n\t }\n\n\t /**\n\t * The base implementation of `_.forOwnRight` without support for callback\n\t * shorthands and `this` binding.\n\t *\n\t * @private\n\t * @param {Object} object The object to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @returns {Object} Returns `object`.\n\t */\n\t function baseForOwnRight(object, iteratee) {\n\t return baseForRight(object, iteratee, keys);\n\t }\n\n\t /**\n\t * The base implementation of `_.functions` which creates an array of\n\t * `object` function property names filtered from those provided.\n\t *\n\t * @private\n\t * @param {Object} object The object to inspect.\n\t * @param {Array} props The property names to filter.\n\t * @returns {Array} Returns the new array of filtered property names.\n\t */\n\t function baseFunctions(object, props) {\n\t var index = -1,\n\t length = props.length,\n\t resIndex = -1,\n\t result = [];\n\n\t while (++index < length) {\n\t var key = props[index];\n\t if (isFunction(object[key])) {\n\t result[++resIndex] = key;\n\t }\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * The base implementation of `get` without support for string paths\n\t * and default values.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @param {Array} path The path of the property to get.\n\t * @param {string} [pathKey] The key representation of path.\n\t * @returns {*} Returns the resolved value.\n\t */\n\t function baseGet(object, path, pathKey) {\n\t if (object == null) {\n\t return;\n\t }\n\t if (pathKey !== undefined && pathKey in toObject(object)) {\n\t path = [pathKey];\n\t }\n\t var index = 0,\n\t length = path.length;\n\n\t while (object != null && index < length) {\n\t object = object[path[index++]];\n\t }\n\t return (index && index == length) ? object : undefined;\n\t }\n\n\t /**\n\t * The base implementation of `_.isEqual` without support for `this` binding\n\t * `customizer` functions.\n\t *\n\t * @private\n\t * @param {*} value The value to compare.\n\t * @param {*} other The other value to compare.\n\t * @param {Function} [customizer] The function to customize comparing values.\n\t * @param {boolean} [isLoose] Specify performing partial comparisons.\n\t * @param {Array} [stackA] Tracks traversed `value` objects.\n\t * @param {Array} [stackB] Tracks traversed `other` objects.\n\t * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n\t */\n\t function baseIsEqual(value, other, customizer, isLoose, stackA, stackB) {\n\t if (value === other) {\n\t return true;\n\t }\n\t if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) {\n\t return value !== value && other !== other;\n\t }\n\t return baseIsEqualDeep(value, other, baseIsEqual, customizer, isLoose, stackA, stackB);\n\t }\n\n\t /**\n\t * A specialized version of `baseIsEqual` for arrays and objects which performs\n\t * deep comparisons and tracks traversed objects enabling objects with circular\n\t * references to be compared.\n\t *\n\t * @private\n\t * @param {Object} object The object to compare.\n\t * @param {Object} other The other object to compare.\n\t * @param {Function} equalFunc The function to determine equivalents of values.\n\t * @param {Function} [customizer] The function to customize comparing objects.\n\t * @param {boolean} [isLoose] Specify performing partial comparisons.\n\t * @param {Array} [stackA=[]] Tracks traversed `value` objects.\n\t * @param {Array} [stackB=[]] Tracks traversed `other` objects.\n\t * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n\t */\n\t function baseIsEqualDeep(object, other, equalFunc, customizer, isLoose, stackA, stackB) {\n\t var objIsArr = isArray(object),\n\t othIsArr = isArray(other),\n\t objTag = arrayTag,\n\t othTag = arrayTag;\n\n\t if (!objIsArr) {\n\t objTag = objToString.call(object);\n\t if (objTag == argsTag) {\n\t objTag = objectTag;\n\t } else if (objTag != objectTag) {\n\t objIsArr = isTypedArray(object);\n\t }\n\t }\n\t if (!othIsArr) {\n\t othTag = objToString.call(other);\n\t if (othTag == argsTag) {\n\t othTag = objectTag;\n\t } else if (othTag != objectTag) {\n\t othIsArr = isTypedArray(other);\n\t }\n\t }\n\t var objIsObj = objTag == objectTag,\n\t othIsObj = othTag == objectTag,\n\t isSameTag = objTag == othTag;\n\n\t if (isSameTag && !(objIsArr || objIsObj)) {\n\t return equalByTag(object, other, objTag);\n\t }\n\t if (!isLoose) {\n\t var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n\t othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n\t if (objIsWrapped || othIsWrapped) {\n\t return equalFunc(objIsWrapped ? object.value() : object, othIsWrapped ? other.value() : other, customizer, isLoose, stackA, stackB);\n\t }\n\t }\n\t if (!isSameTag) {\n\t return false;\n\t }\n\t // Assume cyclic values are equal.\n\t // For more information on detecting circular references see https://es5.github.io/#JO.\n\t stackA || (stackA = []);\n\t stackB || (stackB = []);\n\n\t var length = stackA.length;\n\t while (length--) {\n\t if (stackA[length] == object) {\n\t return stackB[length] == other;\n\t }\n\t }\n\t // Add `object` and `other` to the stack of traversed objects.\n\t stackA.push(object);\n\t stackB.push(other);\n\n\t var result = (objIsArr ? equalArrays : equalObjects)(object, other, equalFunc, customizer, isLoose, stackA, stackB);\n\n\t stackA.pop();\n\t stackB.pop();\n\n\t return result;\n\t }\n\n\t /**\n\t * The base implementation of `_.isMatch` without support for callback\n\t * shorthands and `this` binding.\n\t *\n\t * @private\n\t * @param {Object} object The object to inspect.\n\t * @param {Array} matchData The propery names, values, and compare flags to match.\n\t * @param {Function} [customizer] The function to customize comparing objects.\n\t * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n\t */\n\t function baseIsMatch(object, matchData, customizer) {\n\t var index = matchData.length,\n\t length = index,\n\t noCustomizer = !customizer;\n\n\t if (object == null) {\n\t return !length;\n\t }\n\t object = toObject(object);\n\t while (index--) {\n\t var data = matchData[index];\n\t if ((noCustomizer && data[2])\n\t ? data[1] !== object[data[0]]\n\t : !(data[0] in object)\n\t ) {\n\t return false;\n\t }\n\t }\n\t while (++index < length) {\n\t data = matchData[index];\n\t var key = data[0],\n\t objValue = object[key],\n\t srcValue = data[1];\n\n\t if (noCustomizer && data[2]) {\n\t if (objValue === undefined && !(key in object)) {\n\t return false;\n\t }\n\t } else {\n\t var result = customizer ? customizer(objValue, srcValue, key) : undefined;\n\t if (!(result === undefined ? baseIsEqual(srcValue, objValue, customizer, true) : result)) {\n\t return false;\n\t }\n\t }\n\t }\n\t return true;\n\t }\n\n\t /**\n\t * The base implementation of `_.map` without support for callback shorthands\n\t * and `this` binding.\n\t *\n\t * @private\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @returns {Array} Returns the new mapped array.\n\t */\n\t function baseMap(collection, iteratee) {\n\t var index = -1,\n\t result = isArrayLike(collection) ? Array(collection.length) : [];\n\n\t baseEach(collection, function(value, key, collection) {\n\t result[++index] = iteratee(value, key, collection);\n\t });\n\t return result;\n\t }\n\n\t /**\n\t * The base implementation of `_.matches` which does not clone `source`.\n\t *\n\t * @private\n\t * @param {Object} source The object of property values to match.\n\t * @returns {Function} Returns the new function.\n\t */\n\t function baseMatches(source) {\n\t var matchData = getMatchData(source);\n\t if (matchData.length == 1 && matchData[0][2]) {\n\t var key = matchData[0][0],\n\t value = matchData[0][1];\n\n\t return function(object) {\n\t if (object == null) {\n\t return false;\n\t }\n\t return object[key] === value && (value !== undefined || (key in toObject(object)));\n\t };\n\t }\n\t return function(object) {\n\t return baseIsMatch(object, matchData);\n\t };\n\t }\n\n\t /**\n\t * The base implementation of `_.matchesProperty` which does not clone `srcValue`.\n\t *\n\t * @private\n\t * @param {string} path The path of the property to get.\n\t * @param {*} srcValue The value to compare.\n\t * @returns {Function} Returns the new function.\n\t */\n\t function baseMatchesProperty(path, srcValue) {\n\t var isArr = isArray(path),\n\t isCommon = isKey(path) && isStrictComparable(srcValue),\n\t pathKey = (path + '');\n\n\t path = toPath(path);\n\t return function(object) {\n\t if (object == null) {\n\t return false;\n\t }\n\t var key = pathKey;\n\t object = toObject(object);\n\t if ((isArr || !isCommon) && !(key in object)) {\n\t object = path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1));\n\t if (object == null) {\n\t return false;\n\t }\n\t key = last(path);\n\t object = toObject(object);\n\t }\n\t return object[key] === srcValue\n\t ? (srcValue !== undefined || (key in object))\n\t : baseIsEqual(srcValue, object[key], undefined, true);\n\t };\n\t }\n\n\t /**\n\t * The base implementation of `_.merge` without support for argument juggling,\n\t * multiple sources, and `this` binding `customizer` functions.\n\t *\n\t * @private\n\t * @param {Object} object The destination object.\n\t * @param {Object} source The source object.\n\t * @param {Function} [customizer] The function to customize merged values.\n\t * @param {Array} [stackA=[]] Tracks traversed source objects.\n\t * @param {Array} [stackB=[]] Associates values with source counterparts.\n\t * @returns {Object} Returns `object`.\n\t */\n\t function baseMerge(object, source, customizer, stackA, stackB) {\n\t if (!isObject(object)) {\n\t return object;\n\t }\n\t var isSrcArr = isArrayLike(source) && (isArray(source) || isTypedArray(source)),\n\t props = isSrcArr ? undefined : keys(source);\n\n\t arrayEach(props || source, function(srcValue, key) {\n\t if (props) {\n\t key = srcValue;\n\t srcValue = source[key];\n\t }\n\t if (isObjectLike(srcValue)) {\n\t stackA || (stackA = []);\n\t stackB || (stackB = []);\n\t baseMergeDeep(object, source, key, baseMerge, customizer, stackA, stackB);\n\t }\n\t else {\n\t var value = object[key],\n\t result = customizer ? customizer(value, srcValue, key, object, source) : undefined,\n\t isCommon = result === undefined;\n\n\t if (isCommon) {\n\t result = srcValue;\n\t }\n\t if ((result !== undefined || (isSrcArr && !(key in object))) &&\n\t (isCommon || (result === result ? (result !== value) : (value === value)))) {\n\t object[key] = result;\n\t }\n\t }\n\t });\n\t return object;\n\t }\n\n\t /**\n\t * A specialized version of `baseMerge` for arrays and objects which performs\n\t * deep merges and tracks traversed objects enabling objects with circular\n\t * references to be merged.\n\t *\n\t * @private\n\t * @param {Object} object The destination object.\n\t * @param {Object} source The source object.\n\t * @param {string} key The key of the value to merge.\n\t * @param {Function} mergeFunc The function to merge values.\n\t * @param {Function} [customizer] The function to customize merged values.\n\t * @param {Array} [stackA=[]] Tracks traversed source objects.\n\t * @param {Array} [stackB=[]] Associates values with source counterparts.\n\t * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n\t */\n\t function baseMergeDeep(object, source, key, mergeFunc, customizer, stackA, stackB) {\n\t var length = stackA.length,\n\t srcValue = source[key];\n\n\t while (length--) {\n\t if (stackA[length] == srcValue) {\n\t object[key] = stackB[length];\n\t return;\n\t }\n\t }\n\t var value = object[key],\n\t result = customizer ? customizer(value, srcValue, key, object, source) : undefined,\n\t isCommon = result === undefined;\n\n\t if (isCommon) {\n\t result = srcValue;\n\t if (isArrayLike(srcValue) && (isArray(srcValue) || isTypedArray(srcValue))) {\n\t result = isArray(value)\n\t ? value\n\t : (isArrayLike(value) ? arrayCopy(value) : []);\n\t }\n\t else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n\t result = isArguments(value)\n\t ? toPlainObject(value)\n\t : (isPlainObject(value) ? value : {});\n\t }\n\t else {\n\t isCommon = false;\n\t }\n\t }\n\t // Add the source value to the stack of traversed objects and associate\n\t // it with its merged value.\n\t stackA.push(srcValue);\n\t stackB.push(result);\n\n\t if (isCommon) {\n\t // Recursively merge objects and arrays (susceptible to call stack limits).\n\t object[key] = mergeFunc(result, srcValue, customizer, stackA, stackB);\n\t } else if (result === result ? (result !== value) : (value === value)) {\n\t object[key] = result;\n\t }\n\t }\n\n\t /**\n\t * The base implementation of `_.property` without support for deep paths.\n\t *\n\t * @private\n\t * @param {string} key The key of the property to get.\n\t * @returns {Function} Returns the new function.\n\t */\n\t function baseProperty(key) {\n\t return function(object) {\n\t return object == null ? undefined : object[key];\n\t };\n\t }\n\n\t /**\n\t * A specialized version of `baseProperty` which supports deep paths.\n\t *\n\t * @private\n\t * @param {Array|string} path The path of the property to get.\n\t * @returns {Function} Returns the new function.\n\t */\n\t function basePropertyDeep(path) {\n\t var pathKey = (path + '');\n\t path = toPath(path);\n\t return function(object) {\n\t return baseGet(object, path, pathKey);\n\t };\n\t }\n\n\t /**\n\t * The base implementation of `_.pullAt` without support for individual\n\t * index arguments and capturing the removed elements.\n\t *\n\t * @private\n\t * @param {Array} array The array to modify.\n\t * @param {number[]} indexes The indexes of elements to remove.\n\t * @returns {Array} Returns `array`.\n\t */\n\t function basePullAt(array, indexes) {\n\t var length = array ? indexes.length : 0;\n\t while (length--) {\n\t var index = indexes[length];\n\t if (index != previous && isIndex(index)) {\n\t var previous = index;\n\t splice.call(array, index, 1);\n\t }\n\t }\n\t return array;\n\t }\n\n\t /**\n\t * The base implementation of `_.random` without support for argument juggling\n\t * and returning floating-point numbers.\n\t *\n\t * @private\n\t * @param {number} min The minimum possible value.\n\t * @param {number} max The maximum possible value.\n\t * @returns {number} Returns the random number.\n\t */\n\t function baseRandom(min, max) {\n\t return min + nativeFloor(nativeRandom() * (max - min + 1));\n\t }\n\n\t /**\n\t * The base implementation of `_.reduce` and `_.reduceRight` without support\n\t * for callback shorthands and `this` binding, which iterates over `collection`\n\t * using the provided `eachFunc`.\n\t *\n\t * @private\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @param {*} accumulator The initial value.\n\t * @param {boolean} initFromCollection Specify using the first or last element\n\t * of `collection` as the initial value.\n\t * @param {Function} eachFunc The function to iterate over `collection`.\n\t * @returns {*} Returns the accumulated value.\n\t */\n\t function baseReduce(collection, iteratee, accumulator, initFromCollection, eachFunc) {\n\t eachFunc(collection, function(value, index, collection) {\n\t accumulator = initFromCollection\n\t ? (initFromCollection = false, value)\n\t : iteratee(accumulator, value, index, collection);\n\t });\n\t return accumulator;\n\t }\n\n\t /**\n\t * The base implementation of `setData` without support for hot loop detection.\n\t *\n\t * @private\n\t * @param {Function} func The function to associate metadata with.\n\t * @param {*} data The metadata.\n\t * @returns {Function} Returns `func`.\n\t */\n\t var baseSetData = !metaMap ? identity : function(func, data) {\n\t metaMap.set(func, data);\n\t return func;\n\t };\n\n\t /**\n\t * The base implementation of `_.slice` without an iteratee call guard.\n\t *\n\t * @private\n\t * @param {Array} array The array to slice.\n\t * @param {number} [start=0] The start position.\n\t * @param {number} [end=array.length] The end position.\n\t * @returns {Array} Returns the slice of `array`.\n\t */\n\t function baseSlice(array, start, end) {\n\t var index = -1,\n\t length = array.length;\n\n\t start = start == null ? 0 : (+start || 0);\n\t if (start < 0) {\n\t start = -start > length ? 0 : (length + start);\n\t }\n\t end = (end === undefined || end > length) ? length : (+end || 0);\n\t if (end < 0) {\n\t end += length;\n\t }\n\t length = start > end ? 0 : ((end - start) >>> 0);\n\t start >>>= 0;\n\n\t var result = Array(length);\n\t while (++index < length) {\n\t result[index] = array[index + start];\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * The base implementation of `_.some` without support for callback shorthands\n\t * and `this` binding.\n\t *\n\t * @private\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function} predicate The function invoked per iteration.\n\t * @returns {boolean} Returns `true` if any element passes the predicate check,\n\t * else `false`.\n\t */\n\t function baseSome(collection, predicate) {\n\t var result;\n\n\t baseEach(collection, function(value, index, collection) {\n\t result = predicate(value, index, collection);\n\t return !result;\n\t });\n\t return !!result;\n\t }\n\n\t /**\n\t * The base implementation of `_.sortBy` which uses `comparer` to define\n\t * the sort order of `array` and replaces criteria objects with their\n\t * corresponding values.\n\t *\n\t * @private\n\t * @param {Array} array The array to sort.\n\t * @param {Function} comparer The function to define sort order.\n\t * @returns {Array} Returns `array`.\n\t */\n\t function baseSortBy(array, comparer) {\n\t var length = array.length;\n\n\t array.sort(comparer);\n\t while (length--) {\n\t array[length] = array[length].value;\n\t }\n\t return array;\n\t }\n\n\t /**\n\t * The base implementation of `_.sortByOrder` without param guards.\n\t *\n\t * @private\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n\t * @param {boolean[]} orders The sort orders of `iteratees`.\n\t * @returns {Array} Returns the new sorted array.\n\t */\n\t function baseSortByOrder(collection, iteratees, orders) {\n\t var callback = getCallback(),\n\t index = -1;\n\n\t iteratees = arrayMap(iteratees, function(iteratee) { return callback(iteratee); });\n\n\t var result = baseMap(collection, function(value) {\n\t var criteria = arrayMap(iteratees, function(iteratee) { return iteratee(value); });\n\t return { 'criteria': criteria, 'index': ++index, 'value': value };\n\t });\n\n\t return baseSortBy(result, function(object, other) {\n\t return compareMultiple(object, other, orders);\n\t });\n\t }\n\n\t /**\n\t * The base implementation of `_.sum` without support for callback shorthands\n\t * and `this` binding.\n\t *\n\t * @private\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @returns {number} Returns the sum.\n\t */\n\t function baseSum(collection, iteratee) {\n\t var result = 0;\n\t baseEach(collection, function(value, index, collection) {\n\t result += +iteratee(value, index, collection) || 0;\n\t });\n\t return result;\n\t }\n\n\t /**\n\t * The base implementation of `_.uniq` without support for callback shorthands\n\t * and `this` binding.\n\t *\n\t * @private\n\t * @param {Array} array The array to inspect.\n\t * @param {Function} [iteratee] The function invoked per iteration.\n\t * @returns {Array} Returns the new duplicate-value-free array.\n\t */\n\t function baseUniq(array, iteratee) {\n\t var index = -1,\n\t indexOf = getIndexOf(),\n\t length = array.length,\n\t isCommon = indexOf == baseIndexOf,\n\t isLarge = isCommon && length >= LARGE_ARRAY_SIZE,\n\t seen = isLarge ? createCache() : null,\n\t result = [];\n\n\t if (seen) {\n\t indexOf = cacheIndexOf;\n\t isCommon = false;\n\t } else {\n\t isLarge = false;\n\t seen = iteratee ? [] : result;\n\t }\n\t outer:\n\t while (++index < length) {\n\t var value = array[index],\n\t computed = iteratee ? iteratee(value, index, array) : value;\n\n\t if (isCommon && value === value) {\n\t var seenIndex = seen.length;\n\t while (seenIndex--) {\n\t if (seen[seenIndex] === computed) {\n\t continue outer;\n\t }\n\t }\n\t if (iteratee) {\n\t seen.push(computed);\n\t }\n\t result.push(value);\n\t }\n\t else if (indexOf(seen, computed, 0) < 0) {\n\t if (iteratee || isLarge) {\n\t seen.push(computed);\n\t }\n\t result.push(value);\n\t }\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * The base implementation of `_.values` and `_.valuesIn` which creates an\n\t * array of `object` property values corresponding to the property names\n\t * of `props`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @param {Array} props The property names to get values for.\n\t * @returns {Object} Returns the array of property values.\n\t */\n\t function baseValues(object, props) {\n\t var index = -1,\n\t length = props.length,\n\t result = Array(length);\n\n\t while (++index < length) {\n\t result[index] = object[props[index]];\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * The base implementation of `_.dropRightWhile`, `_.dropWhile`, `_.takeRightWhile`,\n\t * and `_.takeWhile` without support for callback shorthands and `this` binding.\n\t *\n\t * @private\n\t * @param {Array} array The array to query.\n\t * @param {Function} predicate The function invoked per iteration.\n\t * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n\t * @param {boolean} [fromRight] Specify iterating from right to left.\n\t * @returns {Array} Returns the slice of `array`.\n\t */\n\t function baseWhile(array, predicate, isDrop, fromRight) {\n\t var length = array.length,\n\t index = fromRight ? length : -1;\n\n\t while ((fromRight ? index-- : ++index < length) && predicate(array[index], index, array)) {}\n\t return isDrop\n\t ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n\t : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n\t }\n\n\t /**\n\t * The base implementation of `wrapperValue` which returns the result of\n\t * performing a sequence of actions on the unwrapped `value`, where each\n\t * successive action is supplied the return value of the previous.\n\t *\n\t * @private\n\t * @param {*} value The unwrapped value.\n\t * @param {Array} actions Actions to peform to resolve the unwrapped value.\n\t * @returns {*} Returns the resolved value.\n\t */\n\t function baseWrapperValue(value, actions) {\n\t var result = value;\n\t if (result instanceof LazyWrapper) {\n\t result = result.value();\n\t }\n\t var index = -1,\n\t length = actions.length;\n\n\t while (++index < length) {\n\t var action = actions[index];\n\t result = action.func.apply(action.thisArg, arrayPush([result], action.args));\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * Performs a binary search of `array` to determine the index at which `value`\n\t * should be inserted into `array` in order to maintain its sort order.\n\t *\n\t * @private\n\t * @param {Array} array The sorted array to inspect.\n\t * @param {*} value The value to evaluate.\n\t * @param {boolean} [retHighest] Specify returning the highest qualified index.\n\t * @returns {number} Returns the index at which `value` should be inserted\n\t * into `array`.\n\t */\n\t function binaryIndex(array, value, retHighest) {\n\t var low = 0,\n\t high = array ? array.length : low;\n\n\t if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n\t while (low < high) {\n\t var mid = (low + high) >>> 1,\n\t computed = array[mid];\n\n\t if ((retHighest ? (computed <= value) : (computed < value)) && computed !== null) {\n\t low = mid + 1;\n\t } else {\n\t high = mid;\n\t }\n\t }\n\t return high;\n\t }\n\t return binaryIndexBy(array, value, identity, retHighest);\n\t }\n\n\t /**\n\t * This function is like `binaryIndex` except that it invokes `iteratee` for\n\t * `value` and each element of `array` to compute their sort ranking. The\n\t * iteratee is invoked with one argument; (value).\n\t *\n\t * @private\n\t * @param {Array} array The sorted array to inspect.\n\t * @param {*} value The value to evaluate.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @param {boolean} [retHighest] Specify returning the highest qualified index.\n\t * @returns {number} Returns the index at which `value` should be inserted\n\t * into `array`.\n\t */\n\t function binaryIndexBy(array, value, iteratee, retHighest) {\n\t value = iteratee(value);\n\n\t var low = 0,\n\t high = array ? array.length : 0,\n\t valIsNaN = value !== value,\n\t valIsNull = value === null,\n\t valIsUndef = value === undefined;\n\n\t while (low < high) {\n\t var mid = nativeFloor((low + high) / 2),\n\t computed = iteratee(array[mid]),\n\t isDef = computed !== undefined,\n\t isReflexive = computed === computed;\n\n\t if (valIsNaN) {\n\t var setLow = isReflexive || retHighest;\n\t } else if (valIsNull) {\n\t setLow = isReflexive && isDef && (retHighest || computed != null);\n\t } else if (valIsUndef) {\n\t setLow = isReflexive && (retHighest || isDef);\n\t } else if (computed == null) {\n\t setLow = false;\n\t } else {\n\t setLow = retHighest ? (computed <= value) : (computed < value);\n\t }\n\t if (setLow) {\n\t low = mid + 1;\n\t } else {\n\t high = mid;\n\t }\n\t }\n\t return nativeMin(high, MAX_ARRAY_INDEX);\n\t }\n\n\t /**\n\t * A specialized version of `baseCallback` which only supports `this` binding\n\t * and specifying the number of arguments to provide to `func`.\n\t *\n\t * @private\n\t * @param {Function} func The function to bind.\n\t * @param {*} thisArg The `this` binding of `func`.\n\t * @param {number} [argCount] The number of arguments to provide to `func`.\n\t * @returns {Function} Returns the callback.\n\t */\n\t function bindCallback(func, thisArg, argCount) {\n\t if (typeof func != 'function') {\n\t return identity;\n\t }\n\t if (thisArg === undefined) {\n\t return func;\n\t }\n\t switch (argCount) {\n\t case 1: return function(value) {\n\t return func.call(thisArg, value);\n\t };\n\t case 3: return function(value, index, collection) {\n\t return func.call(thisArg, value, index, collection);\n\t };\n\t case 4: return function(accumulator, value, index, collection) {\n\t return func.call(thisArg, accumulator, value, index, collection);\n\t };\n\t case 5: return function(value, other, key, object, source) {\n\t return func.call(thisArg, value, other, key, object, source);\n\t };\n\t }\n\t return function() {\n\t return func.apply(thisArg, arguments);\n\t };\n\t }\n\n\t /**\n\t * Creates a clone of the given array buffer.\n\t *\n\t * @private\n\t * @param {ArrayBuffer} buffer The array buffer to clone.\n\t * @returns {ArrayBuffer} Returns the cloned array buffer.\n\t */\n\t function bufferClone(buffer) {\n\t var result = new ArrayBuffer(buffer.byteLength),\n\t view = new Uint8Array(result);\n\n\t view.set(new Uint8Array(buffer));\n\t return result;\n\t }\n\n\t /**\n\t * Creates an array that is the composition of partially applied arguments,\n\t * placeholders, and provided arguments into a single array of arguments.\n\t *\n\t * @private\n\t * @param {Array|Object} args The provided arguments.\n\t * @param {Array} partials The arguments to prepend to those provided.\n\t * @param {Array} holders The `partials` placeholder indexes.\n\t * @returns {Array} Returns the new array of composed arguments.\n\t */\n\t function composeArgs(args, partials, holders) {\n\t var holdersLength = holders.length,\n\t argsIndex = -1,\n\t argsLength = nativeMax(args.length - holdersLength, 0),\n\t leftIndex = -1,\n\t leftLength = partials.length,\n\t result = Array(leftLength + argsLength);\n\n\t while (++leftIndex < leftLength) {\n\t result[leftIndex] = partials[leftIndex];\n\t }\n\t while (++argsIndex < holdersLength) {\n\t result[holders[argsIndex]] = args[argsIndex];\n\t }\n\t while (argsLength--) {\n\t result[leftIndex++] = args[argsIndex++];\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * This function is like `composeArgs` except that the arguments composition\n\t * is tailored for `_.partialRight`.\n\t *\n\t * @private\n\t * @param {Array|Object} args The provided arguments.\n\t * @param {Array} partials The arguments to append to those provided.\n\t * @param {Array} holders The `partials` placeholder indexes.\n\t * @returns {Array} Returns the new array of composed arguments.\n\t */\n\t function composeArgsRight(args, partials, holders) {\n\t var holdersIndex = -1,\n\t holdersLength = holders.length,\n\t argsIndex = -1,\n\t argsLength = nativeMax(args.length - holdersLength, 0),\n\t rightIndex = -1,\n\t rightLength = partials.length,\n\t result = Array(argsLength + rightLength);\n\n\t while (++argsIndex < argsLength) {\n\t result[argsIndex] = args[argsIndex];\n\t }\n\t var offset = argsIndex;\n\t while (++rightIndex < rightLength) {\n\t result[offset + rightIndex] = partials[rightIndex];\n\t }\n\t while (++holdersIndex < holdersLength) {\n\t result[offset + holders[holdersIndex]] = args[argsIndex++];\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * Creates a `_.countBy`, `_.groupBy`, `_.indexBy`, or `_.partition` function.\n\t *\n\t * @private\n\t * @param {Function} setter The function to set keys and values of the accumulator object.\n\t * @param {Function} [initializer] The function to initialize the accumulator object.\n\t * @returns {Function} Returns the new aggregator function.\n\t */\n\t function createAggregator(setter, initializer) {\n\t return function(collection, iteratee, thisArg) {\n\t var result = initializer ? initializer() : {};\n\t iteratee = getCallback(iteratee, thisArg, 3);\n\n\t if (isArray(collection)) {\n\t var index = -1,\n\t length = collection.length;\n\n\t while (++index < length) {\n\t var value = collection[index];\n\t setter(result, value, iteratee(value, index, collection), collection);\n\t }\n\t } else {\n\t baseEach(collection, function(value, key, collection) {\n\t setter(result, value, iteratee(value, key, collection), collection);\n\t });\n\t }\n\t return result;\n\t };\n\t }\n\n\t /**\n\t * Creates a `_.assign`, `_.defaults`, or `_.merge` function.\n\t *\n\t * @private\n\t * @param {Function} assigner The function to assign values.\n\t * @returns {Function} Returns the new assigner function.\n\t */\n\t function createAssigner(assigner) {\n\t return restParam(function(object, sources) {\n\t var index = -1,\n\t length = object == null ? 0 : sources.length,\n\t customizer = length > 2 ? sources[length - 2] : undefined,\n\t guard = length > 2 ? sources[2] : undefined,\n\t thisArg = length > 1 ? sources[length - 1] : undefined;\n\n\t if (typeof customizer == 'function') {\n\t customizer = bindCallback(customizer, thisArg, 5);\n\t length -= 2;\n\t } else {\n\t customizer = typeof thisArg == 'function' ? thisArg : undefined;\n\t length -= (customizer ? 1 : 0);\n\t }\n\t if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n\t customizer = length < 3 ? undefined : customizer;\n\t length = 1;\n\t }\n\t while (++index < length) {\n\t var source = sources[index];\n\t if (source) {\n\t assigner(object, source, customizer);\n\t }\n\t }\n\t return object;\n\t });\n\t }\n\n\t /**\n\t * Creates a `baseEach` or `baseEachRight` function.\n\t *\n\t * @private\n\t * @param {Function} eachFunc The function to iterate over a collection.\n\t * @param {boolean} [fromRight] Specify iterating from right to left.\n\t * @returns {Function} Returns the new base function.\n\t */\n\t function createBaseEach(eachFunc, fromRight) {\n\t return function(collection, iteratee) {\n\t var length = collection ? getLength(collection) : 0;\n\t if (!isLength(length)) {\n\t return eachFunc(collection, iteratee);\n\t }\n\t var index = fromRight ? length : -1,\n\t iterable = toObject(collection);\n\n\t while ((fromRight ? index-- : ++index < length)) {\n\t if (iteratee(iterable[index], index, iterable) === false) {\n\t break;\n\t }\n\t }\n\t return collection;\n\t };\n\t }\n\n\t /**\n\t * Creates a base function for `_.forIn` or `_.forInRight`.\n\t *\n\t * @private\n\t * @param {boolean} [fromRight] Specify iterating from right to left.\n\t * @returns {Function} Returns the new base function.\n\t */\n\t function createBaseFor(fromRight) {\n\t return function(object, iteratee, keysFunc) {\n\t var iterable = toObject(object),\n\t props = keysFunc(object),\n\t length = props.length,\n\t index = fromRight ? length : -1;\n\n\t while ((fromRight ? index-- : ++index < length)) {\n\t var key = props[index];\n\t if (iteratee(iterable[key], key, iterable) === false) {\n\t break;\n\t }\n\t }\n\t return object;\n\t };\n\t }\n\n\t /**\n\t * Creates a function that wraps `func` and invokes it with the `this`\n\t * binding of `thisArg`.\n\t *\n\t * @private\n\t * @param {Function} func The function to bind.\n\t * @param {*} [thisArg] The `this` binding of `func`.\n\t * @returns {Function} Returns the new bound function.\n\t */\n\t function createBindWrapper(func, thisArg) {\n\t var Ctor = createCtorWrapper(func);\n\n\t function wrapper() {\n\t var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\t return fn.apply(thisArg, arguments);\n\t }\n\t return wrapper;\n\t }\n\n\t /**\n\t * Creates a `Set` cache object to optimize linear searches of large arrays.\n\t *\n\t * @private\n\t * @param {Array} [values] The values to cache.\n\t * @returns {null|Object} Returns the new cache object if `Set` is supported, else `null`.\n\t */\n\t function createCache(values) {\n\t return (nativeCreate && Set) ? new SetCache(values) : null;\n\t }\n\n\t /**\n\t * Creates a function that produces compound words out of the words in a\n\t * given string.\n\t *\n\t * @private\n\t * @param {Function} callback The function to combine each word.\n\t * @returns {Function} Returns the new compounder function.\n\t */\n\t function createCompounder(callback) {\n\t return function(string) {\n\t var index = -1,\n\t array = words(deburr(string)),\n\t length = array.length,\n\t result = '';\n\n\t while (++index < length) {\n\t result = callback(result, array[index], index);\n\t }\n\t return result;\n\t };\n\t }\n\n\t /**\n\t * Creates a function that produces an instance of `Ctor` regardless of\n\t * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n\t *\n\t * @private\n\t * @param {Function} Ctor The constructor to wrap.\n\t * @returns {Function} Returns the new wrapped function.\n\t */\n\t function createCtorWrapper(Ctor) {\n\t return function() {\n\t // Use a `switch` statement to work with class constructors.\n\t // See http://ecma-international.org/ecma-262/6.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n\t // for more details.\n\t var args = arguments;\n\t switch (args.length) {\n\t case 0: return new Ctor;\n\t case 1: return new Ctor(args[0]);\n\t case 2: return new Ctor(args[0], args[1]);\n\t case 3: return new Ctor(args[0], args[1], args[2]);\n\t case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n\t case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n\t case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n\t case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n\t }\n\t var thisBinding = baseCreate(Ctor.prototype),\n\t result = Ctor.apply(thisBinding, args);\n\n\t // Mimic the constructor's `return` behavior.\n\t // See https://es5.github.io/#x13.2.2 for more details.\n\t return isObject(result) ? result : thisBinding;\n\t };\n\t }\n\n\t /**\n\t * Creates a `_.curry` or `_.curryRight` function.\n\t *\n\t * @private\n\t * @param {boolean} flag The curry bit flag.\n\t * @returns {Function} Returns the new curry function.\n\t */\n\t function createCurry(flag) {\n\t function curryFunc(func, arity, guard) {\n\t if (guard && isIterateeCall(func, arity, guard)) {\n\t arity = undefined;\n\t }\n\t var result = createWrapper(func, flag, undefined, undefined, undefined, undefined, undefined, arity);\n\t result.placeholder = curryFunc.placeholder;\n\t return result;\n\t }\n\t return curryFunc;\n\t }\n\n\t /**\n\t * Creates a `_.defaults` or `_.defaultsDeep` function.\n\t *\n\t * @private\n\t * @param {Function} assigner The function to assign values.\n\t * @param {Function} customizer The function to customize assigned values.\n\t * @returns {Function} Returns the new defaults function.\n\t */\n\t function createDefaults(assigner, customizer) {\n\t return restParam(function(args) {\n\t var object = args[0];\n\t if (object == null) {\n\t return object;\n\t }\n\t args.push(customizer);\n\t return assigner.apply(undefined, args);\n\t });\n\t }\n\n\t /**\n\t * Creates a `_.max` or `_.min` function.\n\t *\n\t * @private\n\t * @param {Function} comparator The function used to compare values.\n\t * @param {*} exValue The initial extremum value.\n\t * @returns {Function} Returns the new extremum function.\n\t */\n\t function createExtremum(comparator, exValue) {\n\t return function(collection, iteratee, thisArg) {\n\t if (thisArg && isIterateeCall(collection, iteratee, thisArg)) {\n\t iteratee = undefined;\n\t }\n\t iteratee = getCallback(iteratee, thisArg, 3);\n\t if (iteratee.length == 1) {\n\t collection = isArray(collection) ? collection : toIterable(collection);\n\t var result = arrayExtremum(collection, iteratee, comparator, exValue);\n\t if (!(collection.length && result === exValue)) {\n\t return result;\n\t }\n\t }\n\t return baseExtremum(collection, iteratee, comparator, exValue);\n\t };\n\t }\n\n\t /**\n\t * Creates a `_.find` or `_.findLast` function.\n\t *\n\t * @private\n\t * @param {Function} eachFunc The function to iterate over a collection.\n\t * @param {boolean} [fromRight] Specify iterating from right to left.\n\t * @returns {Function} Returns the new find function.\n\t */\n\t function createFind(eachFunc, fromRight) {\n\t return function(collection, predicate, thisArg) {\n\t predicate = getCallback(predicate, thisArg, 3);\n\t if (isArray(collection)) {\n\t var index = baseFindIndex(collection, predicate, fromRight);\n\t return index > -1 ? collection[index] : undefined;\n\t }\n\t return baseFind(collection, predicate, eachFunc);\n\t };\n\t }\n\n\t /**\n\t * Creates a `_.findIndex` or `_.findLastIndex` function.\n\t *\n\t * @private\n\t * @param {boolean} [fromRight] Specify iterating from right to left.\n\t * @returns {Function} Returns the new find function.\n\t */\n\t function createFindIndex(fromRight) {\n\t return function(array, predicate, thisArg) {\n\t if (!(array && array.length)) {\n\t return -1;\n\t }\n\t predicate = getCallback(predicate, thisArg, 3);\n\t return baseFindIndex(array, predicate, fromRight);\n\t };\n\t }\n\n\t /**\n\t * Creates a `_.findKey` or `_.findLastKey` function.\n\t *\n\t * @private\n\t * @param {Function} objectFunc The function to iterate over an object.\n\t * @returns {Function} Returns the new find function.\n\t */\n\t function createFindKey(objectFunc) {\n\t return function(object, predicate, thisArg) {\n\t predicate = getCallback(predicate, thisArg, 3);\n\t return baseFind(object, predicate, objectFunc, true);\n\t };\n\t }\n\n\t /**\n\t * Creates a `_.flow` or `_.flowRight` function.\n\t *\n\t * @private\n\t * @param {boolean} [fromRight] Specify iterating from right to left.\n\t * @returns {Function} Returns the new flow function.\n\t */\n\t function createFlow(fromRight) {\n\t return function() {\n\t var wrapper,\n\t length = arguments.length,\n\t index = fromRight ? length : -1,\n\t leftIndex = 0,\n\t funcs = Array(length);\n\n\t while ((fromRight ? index-- : ++index < length)) {\n\t var func = funcs[leftIndex++] = arguments[index];\n\t if (typeof func != 'function') {\n\t throw new TypeError(FUNC_ERROR_TEXT);\n\t }\n\t if (!wrapper && LodashWrapper.prototype.thru && getFuncName(func) == 'wrapper') {\n\t wrapper = new LodashWrapper([], true);\n\t }\n\t }\n\t index = wrapper ? -1 : length;\n\t while (++index < length) {\n\t func = funcs[index];\n\n\t var funcName = getFuncName(func),\n\t data = funcName == 'wrapper' ? getData(func) : undefined;\n\n\t if (data && isLaziable(data[0]) && data[1] == (ARY_FLAG | CURRY_FLAG | PARTIAL_FLAG | REARG_FLAG) && !data[4].length && data[9] == 1) {\n\t wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n\t } else {\n\t wrapper = (func.length == 1 && isLaziable(func)) ? wrapper[funcName]() : wrapper.thru(func);\n\t }\n\t }\n\t return function() {\n\t var args = arguments,\n\t value = args[0];\n\n\t if (wrapper && args.length == 1 && isArray(value) && value.length >= LARGE_ARRAY_SIZE) {\n\t return wrapper.plant(value).value();\n\t }\n\t var index = 0,\n\t result = length ? funcs[index].apply(this, args) : value;\n\n\t while (++index < length) {\n\t result = funcs[index].call(this, result);\n\t }\n\t return result;\n\t };\n\t };\n\t }\n\n\t /**\n\t * Creates a function for `_.forEach` or `_.forEachRight`.\n\t *\n\t * @private\n\t * @param {Function} arrayFunc The function to iterate over an array.\n\t * @param {Function} eachFunc The function to iterate over a collection.\n\t * @returns {Function} Returns the new each function.\n\t */\n\t function createForEach(arrayFunc, eachFunc) {\n\t return function(collection, iteratee, thisArg) {\n\t return (typeof iteratee == 'function' && thisArg === undefined && isArray(collection))\n\t ? arrayFunc(collection, iteratee)\n\t : eachFunc(collection, bindCallback(iteratee, thisArg, 3));\n\t };\n\t }\n\n\t /**\n\t * Creates a function for `_.forIn` or `_.forInRight`.\n\t *\n\t * @private\n\t * @param {Function} objectFunc The function to iterate over an object.\n\t * @returns {Function} Returns the new each function.\n\t */\n\t function createForIn(objectFunc) {\n\t return function(object, iteratee, thisArg) {\n\t if (typeof iteratee != 'function' || thisArg !== undefined) {\n\t iteratee = bindCallback(iteratee, thisArg, 3);\n\t }\n\t return objectFunc(object, iteratee, keysIn);\n\t };\n\t }\n\n\t /**\n\t * Creates a function for `_.forOwn` or `_.forOwnRight`.\n\t *\n\t * @private\n\t * @param {Function} objectFunc The function to iterate over an object.\n\t * @returns {Function} Returns the new each function.\n\t */\n\t function createForOwn(objectFunc) {\n\t return function(object, iteratee, thisArg) {\n\t if (typeof iteratee != 'function' || thisArg !== undefined) {\n\t iteratee = bindCallback(iteratee, thisArg, 3);\n\t }\n\t return objectFunc(object, iteratee);\n\t };\n\t }\n\n\t /**\n\t * Creates a function for `_.mapKeys` or `_.mapValues`.\n\t *\n\t * @private\n\t * @param {boolean} [isMapKeys] Specify mapping keys instead of values.\n\t * @returns {Function} Returns the new map function.\n\t */\n\t function createObjectMapper(isMapKeys) {\n\t return function(object, iteratee, thisArg) {\n\t var result = {};\n\t iteratee = getCallback(iteratee, thisArg, 3);\n\n\t baseForOwn(object, function(value, key, object) {\n\t var mapped = iteratee(value, key, object);\n\t key = isMapKeys ? mapped : key;\n\t value = isMapKeys ? value : mapped;\n\t result[key] = value;\n\t });\n\t return result;\n\t };\n\t }\n\n\t /**\n\t * Creates a function for `_.padLeft` or `_.padRight`.\n\t *\n\t * @private\n\t * @param {boolean} [fromRight] Specify padding from the right.\n\t * @returns {Function} Returns the new pad function.\n\t */\n\t function createPadDir(fromRight) {\n\t return function(string, length, chars) {\n\t string = baseToString(string);\n\t return (fromRight ? string : '') + createPadding(string, length, chars) + (fromRight ? '' : string);\n\t };\n\t }\n\n\t /**\n\t * Creates a `_.partial` or `_.partialRight` function.\n\t *\n\t * @private\n\t * @param {boolean} flag The partial bit flag.\n\t * @returns {Function} Returns the new partial function.\n\t */\n\t function createPartial(flag) {\n\t var partialFunc = restParam(function(func, partials) {\n\t var holders = replaceHolders(partials, partialFunc.placeholder);\n\t return createWrapper(func, flag, undefined, partials, holders);\n\t });\n\t return partialFunc;\n\t }\n\n\t /**\n\t * Creates a function for `_.reduce` or `_.reduceRight`.\n\t *\n\t * @private\n\t * @param {Function} arrayFunc The function to iterate over an array.\n\t * @param {Function} eachFunc The function to iterate over a collection.\n\t * @returns {Function} Returns the new each function.\n\t */\n\t function createReduce(arrayFunc, eachFunc) {\n\t return function(collection, iteratee, accumulator, thisArg) {\n\t var initFromArray = arguments.length < 3;\n\t return (typeof iteratee == 'function' && thisArg === undefined && isArray(collection))\n\t ? arrayFunc(collection, iteratee, accumulator, initFromArray)\n\t : baseReduce(collection, getCallback(iteratee, thisArg, 4), accumulator, initFromArray, eachFunc);\n\t };\n\t }\n\n\t /**\n\t * Creates a function that wraps `func` and invokes it with optional `this`\n\t * binding of, partial application, and currying.\n\t *\n\t * @private\n\t * @param {Function|string} func The function or method name to reference.\n\t * @param {number} bitmask The bitmask of flags. See `createWrapper` for more details.\n\t * @param {*} [thisArg] The `this` binding of `func`.\n\t * @param {Array} [partials] The arguments to prepend to those provided to the new function.\n\t * @param {Array} [holders] The `partials` placeholder indexes.\n\t * @param {Array} [partialsRight] The arguments to append to those provided to the new function.\n\t * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n\t * @param {Array} [argPos] The argument positions of the new function.\n\t * @param {number} [ary] The arity cap of `func`.\n\t * @param {number} [arity] The arity of `func`.\n\t * @returns {Function} Returns the new wrapped function.\n\t */\n\t function createHybridWrapper(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n\t var isAry = bitmask & ARY_FLAG,\n\t isBind = bitmask & BIND_FLAG,\n\t isBindKey = bitmask & BIND_KEY_FLAG,\n\t isCurry = bitmask & CURRY_FLAG,\n\t isCurryBound = bitmask & CURRY_BOUND_FLAG,\n\t isCurryRight = bitmask & CURRY_RIGHT_FLAG,\n\t Ctor = isBindKey ? undefined : createCtorWrapper(func);\n\n\t function wrapper() {\n\t // Avoid `arguments` object use disqualifying optimizations by\n\t // converting it to an array before providing it to other functions.\n\t var length = arguments.length,\n\t index = length,\n\t args = Array(length);\n\n\t while (index--) {\n\t args[index] = arguments[index];\n\t }\n\t if (partials) {\n\t args = composeArgs(args, partials, holders);\n\t }\n\t if (partialsRight) {\n\t args = composeArgsRight(args, partialsRight, holdersRight);\n\t }\n\t if (isCurry || isCurryRight) {\n\t var placeholder = wrapper.placeholder,\n\t argsHolders = replaceHolders(args, placeholder);\n\n\t length -= argsHolders.length;\n\t if (length < arity) {\n\t var newArgPos = argPos ? arrayCopy(argPos) : undefined,\n\t newArity = nativeMax(arity - length, 0),\n\t newsHolders = isCurry ? argsHolders : undefined,\n\t newHoldersRight = isCurry ? undefined : argsHolders,\n\t newPartials = isCurry ? args : undefined,\n\t newPartialsRight = isCurry ? undefined : args;\n\n\t bitmask |= (isCurry ? PARTIAL_FLAG : PARTIAL_RIGHT_FLAG);\n\t bitmask &= ~(isCurry ? PARTIAL_RIGHT_FLAG : PARTIAL_FLAG);\n\n\t if (!isCurryBound) {\n\t bitmask &= ~(BIND_FLAG | BIND_KEY_FLAG);\n\t }\n\t var newData = [func, bitmask, thisArg, newPartials, newsHolders, newPartialsRight, newHoldersRight, newArgPos, ary, newArity],\n\t result = createHybridWrapper.apply(undefined, newData);\n\n\t if (isLaziable(func)) {\n\t setData(result, newData);\n\t }\n\t result.placeholder = placeholder;\n\t return result;\n\t }\n\t }\n\t var thisBinding = isBind ? thisArg : this,\n\t fn = isBindKey ? thisBinding[func] : func;\n\n\t if (argPos) {\n\t args = reorder(args, argPos);\n\t }\n\t if (isAry && ary < args.length) {\n\t args.length = ary;\n\t }\n\t if (this && this !== root && this instanceof wrapper) {\n\t fn = Ctor || createCtorWrapper(func);\n\t }\n\t return fn.apply(thisBinding, args);\n\t }\n\t return wrapper;\n\t }\n\n\t /**\n\t * Creates the padding required for `string` based on the given `length`.\n\t * The `chars` string is truncated if the number of characters exceeds `length`.\n\t *\n\t * @private\n\t * @param {string} string The string to create padding for.\n\t * @param {number} [length=0] The padding length.\n\t * @param {string} [chars=' '] The string used as padding.\n\t * @returns {string} Returns the pad for `string`.\n\t */\n\t function createPadding(string, length, chars) {\n\t var strLength = string.length;\n\t length = +length;\n\n\t if (strLength >= length || !nativeIsFinite(length)) {\n\t return '';\n\t }\n\t var padLength = length - strLength;\n\t chars = chars == null ? ' ' : (chars + '');\n\t return repeat(chars, nativeCeil(padLength / chars.length)).slice(0, padLength);\n\t }\n\n\t /**\n\t * Creates a function that wraps `func` and invokes it with the optional `this`\n\t * binding of `thisArg` and the `partials` prepended to those provided to\n\t * the wrapper.\n\t *\n\t * @private\n\t * @param {Function} func The function to partially apply arguments to.\n\t * @param {number} bitmask The bitmask of flags. See `createWrapper` for more details.\n\t * @param {*} thisArg The `this` binding of `func`.\n\t * @param {Array} partials The arguments to prepend to those provided to the new function.\n\t * @returns {Function} Returns the new bound function.\n\t */\n\t function createPartialWrapper(func, bitmask, thisArg, partials) {\n\t var isBind = bitmask & BIND_FLAG,\n\t Ctor = createCtorWrapper(func);\n\n\t function wrapper() {\n\t // Avoid `arguments` object use disqualifying optimizations by\n\t // converting it to an array before providing it `func`.\n\t var argsIndex = -1,\n\t argsLength = arguments.length,\n\t leftIndex = -1,\n\t leftLength = partials.length,\n\t args = Array(leftLength + argsLength);\n\n\t while (++leftIndex < leftLength) {\n\t args[leftIndex] = partials[leftIndex];\n\t }\n\t while (argsLength--) {\n\t args[leftIndex++] = arguments[++argsIndex];\n\t }\n\t var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\t return fn.apply(isBind ? thisArg : this, args);\n\t }\n\t return wrapper;\n\t }\n\n\t /**\n\t * Creates a `_.ceil`, `_.floor`, or `_.round` function.\n\t *\n\t * @private\n\t * @param {string} methodName The name of the `Math` method to use when rounding.\n\t * @returns {Function} Returns the new round function.\n\t */\n\t function createRound(methodName) {\n\t var func = Math[methodName];\n\t return function(number, precision) {\n\t precision = precision === undefined ? 0 : (+precision || 0);\n\t if (precision) {\n\t precision = pow(10, precision);\n\t return func(number * precision) / precision;\n\t }\n\t return func(number);\n\t };\n\t }\n\n\t /**\n\t * Creates a `_.sortedIndex` or `_.sortedLastIndex` function.\n\t *\n\t * @private\n\t * @param {boolean} [retHighest] Specify returning the highest qualified index.\n\t * @returns {Function} Returns the new index function.\n\t */\n\t function createSortedIndex(retHighest) {\n\t return function(array, value, iteratee, thisArg) {\n\t var callback = getCallback(iteratee);\n\t return (iteratee == null && callback === baseCallback)\n\t ? binaryIndex(array, value, retHighest)\n\t : binaryIndexBy(array, value, callback(iteratee, thisArg, 1), retHighest);\n\t };\n\t }\n\n\t /**\n\t * Creates a function that either curries or invokes `func` with optional\n\t * `this` binding and partially applied arguments.\n\t *\n\t * @private\n\t * @param {Function|string} func The function or method name to reference.\n\t * @param {number} bitmask The bitmask of flags.\n\t * The bitmask may be composed of the following flags:\n\t * 1 - `_.bind`\n\t * 2 - `_.bindKey`\n\t * 4 - `_.curry` or `_.curryRight` of a bound function\n\t * 8 - `_.curry`\n\t * 16 - `_.curryRight`\n\t * 32 - `_.partial`\n\t * 64 - `_.partialRight`\n\t * 128 - `_.rearg`\n\t * 256 - `_.ary`\n\t * @param {*} [thisArg] The `this` binding of `func`.\n\t * @param {Array} [partials] The arguments to be partially applied.\n\t * @param {Array} [holders] The `partials` placeholder indexes.\n\t * @param {Array} [argPos] The argument positions of the new function.\n\t * @param {number} [ary] The arity cap of `func`.\n\t * @param {number} [arity] The arity of `func`.\n\t * @returns {Function} Returns the new wrapped function.\n\t */\n\t function createWrapper(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n\t var isBindKey = bitmask & BIND_KEY_FLAG;\n\t if (!isBindKey && typeof func != 'function') {\n\t throw new TypeError(FUNC_ERROR_TEXT);\n\t }\n\t var length = partials ? partials.length : 0;\n\t if (!length) {\n\t bitmask &= ~(PARTIAL_FLAG | PARTIAL_RIGHT_FLAG);\n\t partials = holders = undefined;\n\t }\n\t length -= (holders ? holders.length : 0);\n\t if (bitmask & PARTIAL_RIGHT_FLAG) {\n\t var partialsRight = partials,\n\t holdersRight = holders;\n\n\t partials = holders = undefined;\n\t }\n\t var data = isBindKey ? undefined : getData(func),\n\t newData = [func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity];\n\n\t if (data) {\n\t mergeData(newData, data);\n\t bitmask = newData[1];\n\t arity = newData[9];\n\t }\n\t newData[9] = arity == null\n\t ? (isBindKey ? 0 : func.length)\n\t : (nativeMax(arity - length, 0) || 0);\n\n\t if (bitmask == BIND_FLAG) {\n\t var result = createBindWrapper(newData[0], newData[2]);\n\t } else if ((bitmask == PARTIAL_FLAG || bitmask == (BIND_FLAG | PARTIAL_FLAG)) && !newData[4].length) {\n\t result = createPartialWrapper.apply(undefined, newData);\n\t } else {\n\t result = createHybridWrapper.apply(undefined, newData);\n\t }\n\t var setter = data ? baseSetData : setData;\n\t return setter(result, newData);\n\t }\n\n\t /**\n\t * A specialized version of `baseIsEqualDeep` for arrays with support for\n\t * partial deep comparisons.\n\t *\n\t * @private\n\t * @param {Array} array The array to compare.\n\t * @param {Array} other The other array to compare.\n\t * @param {Function} equalFunc The function to determine equivalents of values.\n\t * @param {Function} [customizer] The function to customize comparing arrays.\n\t * @param {boolean} [isLoose] Specify performing partial comparisons.\n\t * @param {Array} [stackA] Tracks traversed `value` objects.\n\t * @param {Array} [stackB] Tracks traversed `other` objects.\n\t * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n\t */\n\t function equalArrays(array, other, equalFunc, customizer, isLoose, stackA, stackB) {\n\t var index = -1,\n\t arrLength = array.length,\n\t othLength = other.length;\n\n\t if (arrLength != othLength && !(isLoose && othLength > arrLength)) {\n\t return false;\n\t }\n\t // Ignore non-index properties.\n\t while (++index < arrLength) {\n\t var arrValue = array[index],\n\t othValue = other[index],\n\t result = customizer ? customizer(isLoose ? othValue : arrValue, isLoose ? arrValue : othValue, index) : undefined;\n\n\t if (result !== undefined) {\n\t if (result) {\n\t continue;\n\t }\n\t return false;\n\t }\n\t // Recursively compare arrays (susceptible to call stack limits).\n\t if (isLoose) {\n\t if (!arraySome(other, function(othValue) {\n\t return arrValue === othValue || equalFunc(arrValue, othValue, customizer, isLoose, stackA, stackB);\n\t })) {\n\t return false;\n\t }\n\t } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, customizer, isLoose, stackA, stackB))) {\n\t return false;\n\t }\n\t }\n\t return true;\n\t }\n\n\t /**\n\t * A specialized version of `baseIsEqualDeep` for comparing objects of\n\t * the same `toStringTag`.\n\t *\n\t * **Note:** This function only supports comparing values with tags of\n\t * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n\t *\n\t * @private\n\t * @param {Object} object The object to compare.\n\t * @param {Object} other The other object to compare.\n\t * @param {string} tag The `toStringTag` of the objects to compare.\n\t * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n\t */\n\t function equalByTag(object, other, tag) {\n\t switch (tag) {\n\t case boolTag:\n\t case dateTag:\n\t // Coerce dates and booleans to numbers, dates to milliseconds and booleans\n\t // to `1` or `0` treating invalid dates coerced to `NaN` as not equal.\n\t return +object == +other;\n\n\t case errorTag:\n\t return object.name == other.name && object.message == other.message;\n\n\t case numberTag:\n\t // Treat `NaN` vs. `NaN` as equal.\n\t return (object != +object)\n\t ? other != +other\n\t : object == +other;\n\n\t case regexpTag:\n\t case stringTag:\n\t // Coerce regexes to strings and treat strings primitives and string\n\t // objects as equal. See https://es5.github.io/#x15.10.6.4 for more details.\n\t return object == (other + '');\n\t }\n\t return false;\n\t }\n\n\t /**\n\t * A specialized version of `baseIsEqualDeep` for objects with support for\n\t * partial deep comparisons.\n\t *\n\t * @private\n\t * @param {Object} object The object to compare.\n\t * @param {Object} other The other object to compare.\n\t * @param {Function} equalFunc The function to determine equivalents of values.\n\t * @param {Function} [customizer] The function to customize comparing values.\n\t * @param {boolean} [isLoose] Specify performing partial comparisons.\n\t * @param {Array} [stackA] Tracks traversed `value` objects.\n\t * @param {Array} [stackB] Tracks traversed `other` objects.\n\t * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n\t */\n\t function equalObjects(object, other, equalFunc, customizer, isLoose, stackA, stackB) {\n\t var objProps = keys(object),\n\t objLength = objProps.length,\n\t othProps = keys(other),\n\t othLength = othProps.length;\n\n\t if (objLength != othLength && !isLoose) {\n\t return false;\n\t }\n\t var index = objLength;\n\t while (index--) {\n\t var key = objProps[index];\n\t if (!(isLoose ? key in other : hasOwnProperty.call(other, key))) {\n\t return false;\n\t }\n\t }\n\t var skipCtor = isLoose;\n\t while (++index < objLength) {\n\t key = objProps[index];\n\t var objValue = object[key],\n\t othValue = other[key],\n\t result = customizer ? customizer(isLoose ? othValue : objValue, isLoose? objValue : othValue, key) : undefined;\n\n\t // Recursively compare objects (susceptible to call stack limits).\n\t if (!(result === undefined ? equalFunc(objValue, othValue, customizer, isLoose, stackA, stackB) : result)) {\n\t return false;\n\t }\n\t skipCtor || (skipCtor = key == 'constructor');\n\t }\n\t if (!skipCtor) {\n\t var objCtor = object.constructor,\n\t othCtor = other.constructor;\n\n\t // Non `Object` object instances with different constructors are not equal.\n\t if (objCtor != othCtor &&\n\t ('constructor' in object && 'constructor' in other) &&\n\t !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n\t typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n\t return false;\n\t }\n\t }\n\t return true;\n\t }\n\n\t /**\n\t * Gets the appropriate \"callback\" function. If the `_.callback` method is\n\t * customized this function returns the custom method, otherwise it returns\n\t * the `baseCallback` function. If arguments are provided the chosen function\n\t * is invoked with them and its result is returned.\n\t *\n\t * @private\n\t * @returns {Function} Returns the chosen function or its result.\n\t */\n\t function getCallback(func, thisArg, argCount) {\n\t var result = lodash.callback || callback;\n\t result = result === callback ? baseCallback : result;\n\t return argCount ? result(func, thisArg, argCount) : result;\n\t }\n\n\t /**\n\t * Gets metadata for `func`.\n\t *\n\t * @private\n\t * @param {Function} func The function to query.\n\t * @returns {*} Returns the metadata for `func`.\n\t */\n\t var getData = !metaMap ? noop : function(func) {\n\t return metaMap.get(func);\n\t };\n\n\t /**\n\t * Gets the name of `func`.\n\t *\n\t * @private\n\t * @param {Function} func The function to query.\n\t * @returns {string} Returns the function name.\n\t */\n\t function getFuncName(func) {\n\t var result = func.name,\n\t array = realNames[result],\n\t length = array ? array.length : 0;\n\n\t while (length--) {\n\t var data = array[length],\n\t otherFunc = data.func;\n\t if (otherFunc == null || otherFunc == func) {\n\t return data.name;\n\t }\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * Gets the appropriate \"indexOf\" function. If the `_.indexOf` method is\n\t * customized this function returns the custom method, otherwise it returns\n\t * the `baseIndexOf` function. If arguments are provided the chosen function\n\t * is invoked with them and its result is returned.\n\t *\n\t * @private\n\t * @returns {Function|number} Returns the chosen function or its result.\n\t */\n\t function getIndexOf(collection, target, fromIndex) {\n\t var result = lodash.indexOf || indexOf;\n\t result = result === indexOf ? baseIndexOf : result;\n\t return collection ? result(collection, target, fromIndex) : result;\n\t }\n\n\t /**\n\t * Gets the \"length\" property value of `object`.\n\t *\n\t * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792)\n\t * that affects Safari on at least iOS 8.1-8.3 ARM64.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @returns {*} Returns the \"length\" value.\n\t */\n\t var getLength = baseProperty('length');\n\n\t /**\n\t * Gets the propery names, values, and compare flags of `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the match data of `object`.\n\t */\n\t function getMatchData(object) {\n\t var result = pairs(object),\n\t length = result.length;\n\n\t while (length--) {\n\t result[length][2] = isStrictComparable(result[length][1]);\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * Gets the native function at `key` of `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @param {string} key The key of the method to get.\n\t * @returns {*} Returns the function if it's native, else `undefined`.\n\t */\n\t function getNative(object, key) {\n\t var value = object == null ? undefined : object[key];\n\t return isNative(value) ? value : undefined;\n\t }\n\n\t /**\n\t * Gets the view, applying any `transforms` to the `start` and `end` positions.\n\t *\n\t * @private\n\t * @param {number} start The start of the view.\n\t * @param {number} end The end of the view.\n\t * @param {Array} transforms The transformations to apply to the view.\n\t * @returns {Object} Returns an object containing the `start` and `end`\n\t * positions of the view.\n\t */\n\t function getView(start, end, transforms) {\n\t var index = -1,\n\t length = transforms.length;\n\n\t while (++index < length) {\n\t var data = transforms[index],\n\t size = data.size;\n\n\t switch (data.type) {\n\t case 'drop': start += size; break;\n\t case 'dropRight': end -= size; break;\n\t case 'take': end = nativeMin(end, start + size); break;\n\t case 'takeRight': start = nativeMax(start, end - size); break;\n\t }\n\t }\n\t return { 'start': start, 'end': end };\n\t }\n\n\t /**\n\t * Initializes an array clone.\n\t *\n\t * @private\n\t * @param {Array} array The array to clone.\n\t * @returns {Array} Returns the initialized clone.\n\t */\n\t function initCloneArray(array) {\n\t var length = array.length,\n\t result = new array.constructor(length);\n\n\t // Add array properties assigned by `RegExp#exec`.\n\t if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n\t result.index = array.index;\n\t result.input = array.input;\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * Initializes an object clone.\n\t *\n\t * @private\n\t * @param {Object} object The object to clone.\n\t * @returns {Object} Returns the initialized clone.\n\t */\n\t function initCloneObject(object) {\n\t var Ctor = object.constructor;\n\t if (!(typeof Ctor == 'function' && Ctor instanceof Ctor)) {\n\t Ctor = Object;\n\t }\n\t return new Ctor;\n\t }\n\n\t /**\n\t * Initializes an object clone based on its `toStringTag`.\n\t *\n\t * **Note:** This function only supports cloning values with tags of\n\t * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n\t *\n\t * @private\n\t * @param {Object} object The object to clone.\n\t * @param {string} tag The `toStringTag` of the object to clone.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Object} Returns the initialized clone.\n\t */\n\t function initCloneByTag(object, tag, isDeep) {\n\t var Ctor = object.constructor;\n\t switch (tag) {\n\t case arrayBufferTag:\n\t return bufferClone(object);\n\n\t case boolTag:\n\t case dateTag:\n\t return new Ctor(+object);\n\n\t case float32Tag: case float64Tag:\n\t case int8Tag: case int16Tag: case int32Tag:\n\t case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n\t var buffer = object.buffer;\n\t return new Ctor(isDeep ? bufferClone(buffer) : buffer, object.byteOffset, object.length);\n\n\t case numberTag:\n\t case stringTag:\n\t return new Ctor(object);\n\n\t case regexpTag:\n\t var result = new Ctor(object.source, reFlags.exec(object));\n\t result.lastIndex = object.lastIndex;\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * Invokes the method at `path` on `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @param {Array|string} path The path of the method to invoke.\n\t * @param {Array} args The arguments to invoke the method with.\n\t * @returns {*} Returns the result of the invoked method.\n\t */\n\t function invokePath(object, path, args) {\n\t if (object != null && !isKey(path, object)) {\n\t path = toPath(path);\n\t object = path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1));\n\t path = last(path);\n\t }\n\t var func = object == null ? object : object[path];\n\t return func == null ? undefined : func.apply(object, args);\n\t }\n\n\t /**\n\t * Checks if `value` is array-like.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n\t */\n\t function isArrayLike(value) {\n\t return value != null && isLength(getLength(value));\n\t }\n\n\t /**\n\t * Checks if `value` is a valid array-like index.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n\t * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n\t */\n\t function isIndex(value, length) {\n\t value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1;\n\t length = length == null ? MAX_SAFE_INTEGER : length;\n\t return value > -1 && value % 1 == 0 && value < length;\n\t }\n\n\t /**\n\t * Checks if the provided arguments are from an iteratee call.\n\t *\n\t * @private\n\t * @param {*} value The potential iteratee value argument.\n\t * @param {*} index The potential iteratee index or key argument.\n\t * @param {*} object The potential iteratee object argument.\n\t * @returns {boolean} Returns `true` if the arguments are from an iteratee call, else `false`.\n\t */\n\t function isIterateeCall(value, index, object) {\n\t if (!isObject(object)) {\n\t return false;\n\t }\n\t var type = typeof index;\n\t if (type == 'number'\n\t ? (isArrayLike(object) && isIndex(index, object.length))\n\t : (type == 'string' && index in object)) {\n\t var other = object[index];\n\t return value === value ? (value === other) : (other !== other);\n\t }\n\t return false;\n\t }\n\n\t /**\n\t * Checks if `value` is a property name and not a property path.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @param {Object} [object] The object to query keys on.\n\t * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n\t */\n\t function isKey(value, object) {\n\t var type = typeof value;\n\t if ((type == 'string' && reIsPlainProp.test(value)) || type == 'number') {\n\t return true;\n\t }\n\t if (isArray(value)) {\n\t return false;\n\t }\n\t var result = !reIsDeepProp.test(value);\n\t return result || (object != null && value in toObject(object));\n\t }\n\n\t /**\n\t * Checks if `func` has a lazy counterpart.\n\t *\n\t * @private\n\t * @param {Function} func The function to check.\n\t * @returns {boolean} Returns `true` if `func` has a lazy counterpart, else `false`.\n\t */\n\t function isLaziable(func) {\n\t var funcName = getFuncName(func);\n\t if (!(funcName in LazyWrapper.prototype)) {\n\t return false;\n\t }\n\t var other = lodash[funcName];\n\t if (func === other) {\n\t return true;\n\t }\n\t var data = getData(other);\n\t return !!data && func === data[0];\n\t }\n\n\t /**\n\t * Checks if `value` is a valid array-like length.\n\t *\n\t * **Note:** This function is based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n\t */\n\t function isLength(value) {\n\t return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n\t }\n\n\t /**\n\t * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` if suitable for strict\n\t * equality comparisons, else `false`.\n\t */\n\t function isStrictComparable(value) {\n\t return value === value && !isObject(value);\n\t }\n\n\t /**\n\t * Merges the function metadata of `source` into `data`.\n\t *\n\t * Merging metadata reduces the number of wrappers required to invoke a function.\n\t * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n\t * may be applied regardless of execution order. Methods like `_.ary` and `_.rearg`\n\t * augment function arguments, making the order in which they are executed important,\n\t * preventing the merging of metadata. However, we make an exception for a safe\n\t * common case where curried functions have `_.ary` and or `_.rearg` applied.\n\t *\n\t * @private\n\t * @param {Array} data The destination metadata.\n\t * @param {Array} source The source metadata.\n\t * @returns {Array} Returns `data`.\n\t */\n\t function mergeData(data, source) {\n\t var bitmask = data[1],\n\t srcBitmask = source[1],\n\t newBitmask = bitmask | srcBitmask,\n\t isCommon = newBitmask < ARY_FLAG;\n\n\t var isCombo =\n\t (srcBitmask == ARY_FLAG && bitmask == CURRY_FLAG) ||\n\t (srcBitmask == ARY_FLAG && bitmask == REARG_FLAG && data[7].length <= source[8]) ||\n\t (srcBitmask == (ARY_FLAG | REARG_FLAG) && bitmask == CURRY_FLAG);\n\n\t // Exit early if metadata can't be merged.\n\t if (!(isCommon || isCombo)) {\n\t return data;\n\t }\n\t // Use source `thisArg` if available.\n\t if (srcBitmask & BIND_FLAG) {\n\t data[2] = source[2];\n\t // Set when currying a bound function.\n\t newBitmask |= (bitmask & BIND_FLAG) ? 0 : CURRY_BOUND_FLAG;\n\t }\n\t // Compose partial arguments.\n\t var value = source[3];\n\t if (value) {\n\t var partials = data[3];\n\t data[3] = partials ? composeArgs(partials, value, source[4]) : arrayCopy(value);\n\t data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : arrayCopy(source[4]);\n\t }\n\t // Compose partial right arguments.\n\t value = source[5];\n\t if (value) {\n\t partials = data[5];\n\t data[5] = partials ? composeArgsRight(partials, value, source[6]) : arrayCopy(value);\n\t data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : arrayCopy(source[6]);\n\t }\n\t // Use source `argPos` if available.\n\t value = source[7];\n\t if (value) {\n\t data[7] = arrayCopy(value);\n\t }\n\t // Use source `ary` if it's smaller.\n\t if (srcBitmask & ARY_FLAG) {\n\t data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n\t }\n\t // Use source `arity` if one is not provided.\n\t if (data[9] == null) {\n\t data[9] = source[9];\n\t }\n\t // Use source `func` and merge bitmasks.\n\t data[0] = source[0];\n\t data[1] = newBitmask;\n\n\t return data;\n\t }\n\n\t /**\n\t * Used by `_.defaultsDeep` to customize its `_.merge` use.\n\t *\n\t * @private\n\t * @param {*} objectValue The destination object property value.\n\t * @param {*} sourceValue The source object property value.\n\t * @returns {*} Returns the value to assign to the destination object.\n\t */\n\t function mergeDefaults(objectValue, sourceValue) {\n\t return objectValue === undefined ? sourceValue : merge(objectValue, sourceValue, mergeDefaults);\n\t }\n\n\t /**\n\t * A specialized version of `_.pick` which picks `object` properties specified\n\t * by `props`.\n\t *\n\t * @private\n\t * @param {Object} object The source object.\n\t * @param {string[]} props The property names to pick.\n\t * @returns {Object} Returns the new object.\n\t */\n\t function pickByArray(object, props) {\n\t object = toObject(object);\n\n\t var index = -1,\n\t length = props.length,\n\t result = {};\n\n\t while (++index < length) {\n\t var key = props[index];\n\t if (key in object) {\n\t result[key] = object[key];\n\t }\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * A specialized version of `_.pick` which picks `object` properties `predicate`\n\t * returns truthy for.\n\t *\n\t * @private\n\t * @param {Object} object The source object.\n\t * @param {Function} predicate The function invoked per iteration.\n\t * @returns {Object} Returns the new object.\n\t */\n\t function pickByCallback(object, predicate) {\n\t var result = {};\n\t baseForIn(object, function(value, key, object) {\n\t if (predicate(value, key, object)) {\n\t result[key] = value;\n\t }\n\t });\n\t return result;\n\t }\n\n\t /**\n\t * Reorder `array` according to the specified indexes where the element at\n\t * the first index is assigned as the first element, the element at\n\t * the second index is assigned as the second element, and so on.\n\t *\n\t * @private\n\t * @param {Array} array The array to reorder.\n\t * @param {Array} indexes The arranged array indexes.\n\t * @returns {Array} Returns `array`.\n\t */\n\t function reorder(array, indexes) {\n\t var arrLength = array.length,\n\t length = nativeMin(indexes.length, arrLength),\n\t oldArray = arrayCopy(array);\n\n\t while (length--) {\n\t var index = indexes[length];\n\t array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n\t }\n\t return array;\n\t }\n\n\t /**\n\t * Sets metadata for `func`.\n\t *\n\t * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n\t * period of time, it will trip its breaker and transition to an identity function\n\t * to avoid garbage collection pauses in V8. See [V8 issue 2070](https://code.google.com/p/v8/issues/detail?id=2070)\n\t * for more details.\n\t *\n\t * @private\n\t * @param {Function} func The function to associate metadata with.\n\t * @param {*} data The metadata.\n\t * @returns {Function} Returns `func`.\n\t */\n\t var setData = (function() {\n\t var count = 0,\n\t lastCalled = 0;\n\n\t return function(key, value) {\n\t var stamp = now(),\n\t remaining = HOT_SPAN - (stamp - lastCalled);\n\n\t lastCalled = stamp;\n\t if (remaining > 0) {\n\t if (++count >= HOT_COUNT) {\n\t return key;\n\t }\n\t } else {\n\t count = 0;\n\t }\n\t return baseSetData(key, value);\n\t };\n\t }());\n\n\t /**\n\t * A fallback implementation of `Object.keys` which creates an array of the\n\t * own enumerable property names of `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of property names.\n\t */\n\t function shimKeys(object) {\n\t var props = keysIn(object),\n\t propsLength = props.length,\n\t length = propsLength && object.length;\n\n\t var allowIndexes = !!length && isLength(length) &&\n\t (isArray(object) || isArguments(object));\n\n\t var index = -1,\n\t result = [];\n\n\t while (++index < propsLength) {\n\t var key = props[index];\n\t if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) {\n\t result.push(key);\n\t }\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * Converts `value` to an array-like object if it's not one.\n\t *\n\t * @private\n\t * @param {*} value The value to process.\n\t * @returns {Array|Object} Returns the array-like object.\n\t */\n\t function toIterable(value) {\n\t if (value == null) {\n\t return [];\n\t }\n\t if (!isArrayLike(value)) {\n\t return values(value);\n\t }\n\t return isObject(value) ? value : Object(value);\n\t }\n\n\t /**\n\t * Converts `value` to an object if it's not one.\n\t *\n\t * @private\n\t * @param {*} value The value to process.\n\t * @returns {Object} Returns the object.\n\t */\n\t function toObject(value) {\n\t return isObject(value) ? value : Object(value);\n\t }\n\n\t /**\n\t * Converts `value` to property path array if it's not one.\n\t *\n\t * @private\n\t * @param {*} value The value to process.\n\t * @returns {Array} Returns the property path array.\n\t */\n\t function toPath(value) {\n\t if (isArray(value)) {\n\t return value;\n\t }\n\t var result = [];\n\t baseToString(value).replace(rePropName, function(match, number, quote, string) {\n\t result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));\n\t });\n\t return result;\n\t }\n\n\t /**\n\t * Creates a clone of `wrapper`.\n\t *\n\t * @private\n\t * @param {Object} wrapper The wrapper to clone.\n\t * @returns {Object} Returns the cloned wrapper.\n\t */\n\t function wrapperClone(wrapper) {\n\t return wrapper instanceof LazyWrapper\n\t ? wrapper.clone()\n\t : new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__, arrayCopy(wrapper.__actions__));\n\t }\n\n\t /*------------------------------------------------------------------------*/\n\n\t /**\n\t * Creates an array of elements split into groups the length of `size`.\n\t * If `collection` can't be split evenly, the final chunk will be the remaining\n\t * elements.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {Array} array The array to process.\n\t * @param {number} [size=1] The length of each chunk.\n\t * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.\n\t * @returns {Array} Returns the new array containing chunks.\n\t * @example\n\t *\n\t * _.chunk(['a', 'b', 'c', 'd'], 2);\n\t * // => [['a', 'b'], ['c', 'd']]\n\t *\n\t * _.chunk(['a', 'b', 'c', 'd'], 3);\n\t * // => [['a', 'b', 'c'], ['d']]\n\t */\n\t function chunk(array, size, guard) {\n\t if (guard ? isIterateeCall(array, size, guard) : size == null) {\n\t size = 1;\n\t } else {\n\t size = nativeMax(nativeFloor(size) || 1, 1);\n\t }\n\t var index = 0,\n\t length = array ? array.length : 0,\n\t resIndex = -1,\n\t result = Array(nativeCeil(length / size));\n\n\t while (index < length) {\n\t result[++resIndex] = baseSlice(array, index, (index += size));\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * Creates an array with all falsey values removed. The values `false`, `null`,\n\t * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {Array} array The array to compact.\n\t * @returns {Array} Returns the new array of filtered values.\n\t * @example\n\t *\n\t * _.compact([0, 1, false, 2, '', 3]);\n\t * // => [1, 2, 3]\n\t */\n\t function compact(array) {\n\t var index = -1,\n\t length = array ? array.length : 0,\n\t resIndex = -1,\n\t result = [];\n\n\t while (++index < length) {\n\t var value = array[index];\n\t if (value) {\n\t result[++resIndex] = value;\n\t }\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * Creates an array of unique `array` values not included in the other\n\t * provided arrays using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n\t * for equality comparisons.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {Array} array The array to inspect.\n\t * @param {...Array} [values] The arrays of values to exclude.\n\t * @returns {Array} Returns the new array of filtered values.\n\t * @example\n\t *\n\t * _.difference([1, 2, 3], [4, 2]);\n\t * // => [1, 3]\n\t */\n\t var difference = restParam(function(array, values) {\n\t return (isObjectLike(array) && isArrayLike(array))\n\t ? baseDifference(array, baseFlatten(values, false, true))\n\t : [];\n\t });\n\n\t /**\n\t * Creates a slice of `array` with `n` elements dropped from the beginning.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {Array} array The array to query.\n\t * @param {number} [n=1] The number of elements to drop.\n\t * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.\n\t * @returns {Array} Returns the slice of `array`.\n\t * @example\n\t *\n\t * _.drop([1, 2, 3]);\n\t * // => [2, 3]\n\t *\n\t * _.drop([1, 2, 3], 2);\n\t * // => [3]\n\t *\n\t * _.drop([1, 2, 3], 5);\n\t * // => []\n\t *\n\t * _.drop([1, 2, 3], 0);\n\t * // => [1, 2, 3]\n\t */\n\t function drop(array, n, guard) {\n\t var length = array ? array.length : 0;\n\t if (!length) {\n\t return [];\n\t }\n\t if (guard ? isIterateeCall(array, n, guard) : n == null) {\n\t n = 1;\n\t }\n\t return baseSlice(array, n < 0 ? 0 : n);\n\t }\n\n\t /**\n\t * Creates a slice of `array` with `n` elements dropped from the end.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {Array} array The array to query.\n\t * @param {number} [n=1] The number of elements to drop.\n\t * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.\n\t * @returns {Array} Returns the slice of `array`.\n\t * @example\n\t *\n\t * _.dropRight([1, 2, 3]);\n\t * // => [1, 2]\n\t *\n\t * _.dropRight([1, 2, 3], 2);\n\t * // => [1]\n\t *\n\t * _.dropRight([1, 2, 3], 5);\n\t * // => []\n\t *\n\t * _.dropRight([1, 2, 3], 0);\n\t * // => [1, 2, 3]\n\t */\n\t function dropRight(array, n, guard) {\n\t var length = array ? array.length : 0;\n\t if (!length) {\n\t return [];\n\t }\n\t if (guard ? isIterateeCall(array, n, guard) : n == null) {\n\t n = 1;\n\t }\n\t n = length - (+n || 0);\n\t return baseSlice(array, 0, n < 0 ? 0 : n);\n\t }\n\n\t /**\n\t * Creates a slice of `array` excluding elements dropped from the end.\n\t * Elements are dropped until `predicate` returns falsey. The predicate is\n\t * bound to `thisArg` and invoked with three arguments: (value, index, array).\n\t *\n\t * If a property name is provided for `predicate` the created `_.property`\n\t * style callback returns the property value of the given element.\n\t *\n\t * If a value is also provided for `thisArg` the created `_.matchesProperty`\n\t * style callback returns `true` for elements that have a matching property\n\t * value, else `false`.\n\t *\n\t * If an object is provided for `predicate` the created `_.matches` style\n\t * callback returns `true` for elements that match the properties of the given\n\t * object, else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {Array} array The array to query.\n\t * @param {Function|Object|string} [predicate=_.identity] The function invoked\n\t * per iteration.\n\t * @param {*} [thisArg] The `this` binding of `predicate`.\n\t * @returns {Array} Returns the slice of `array`.\n\t * @example\n\t *\n\t * _.dropRightWhile([1, 2, 3], function(n) {\n\t * return n > 1;\n\t * });\n\t * // => [1]\n\t *\n\t * var users = [\n\t * { 'user': 'barney', 'active': true },\n\t * { 'user': 'fred', 'active': false },\n\t * { 'user': 'pebbles', 'active': false }\n\t * ];\n\t *\n\t * // using the `_.matches` callback shorthand\n\t * _.pluck(_.dropRightWhile(users, { 'user': 'pebbles', 'active': false }), 'user');\n\t * // => ['barney', 'fred']\n\t *\n\t * // using the `_.matchesProperty` callback shorthand\n\t * _.pluck(_.dropRightWhile(users, 'active', false), 'user');\n\t * // => ['barney']\n\t *\n\t * // using the `_.property` callback shorthand\n\t * _.pluck(_.dropRightWhile(users, 'active'), 'user');\n\t * // => ['barney', 'fred', 'pebbles']\n\t */\n\t function dropRightWhile(array, predicate, thisArg) {\n\t return (array && array.length)\n\t ? baseWhile(array, getCallback(predicate, thisArg, 3), true, true)\n\t : [];\n\t }\n\n\t /**\n\t * Creates a slice of `array` excluding elements dropped from the beginning.\n\t * Elements are dropped until `predicate` returns falsey. The predicate is\n\t * bound to `thisArg` and invoked with three arguments: (value, index, array).\n\t *\n\t * If a property name is provided for `predicate` the created `_.property`\n\t * style callback returns the property value of the given element.\n\t *\n\t * If a value is also provided for `thisArg` the created `_.matchesProperty`\n\t * style callback returns `true` for elements that have a matching property\n\t * value, else `false`.\n\t *\n\t * If an object is provided for `predicate` the created `_.matches` style\n\t * callback returns `true` for elements that have the properties of the given\n\t * object, else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {Array} array The array to query.\n\t * @param {Function|Object|string} [predicate=_.identity] The function invoked\n\t * per iteration.\n\t * @param {*} [thisArg] The `this` binding of `predicate`.\n\t * @returns {Array} Returns the slice of `array`.\n\t * @example\n\t *\n\t * _.dropWhile([1, 2, 3], function(n) {\n\t * return n < 3;\n\t * });\n\t * // => [3]\n\t *\n\t * var users = [\n\t * { 'user': 'barney', 'active': false },\n\t * { 'user': 'fred', 'active': false },\n\t * { 'user': 'pebbles', 'active': true }\n\t * ];\n\t *\n\t * // using the `_.matches` callback shorthand\n\t * _.pluck(_.dropWhile(users, { 'user': 'barney', 'active': false }), 'user');\n\t * // => ['fred', 'pebbles']\n\t *\n\t * // using the `_.matchesProperty` callback shorthand\n\t * _.pluck(_.dropWhile(users, 'active', false), 'user');\n\t * // => ['pebbles']\n\t *\n\t * // using the `_.property` callback shorthand\n\t * _.pluck(_.dropWhile(users, 'active'), 'user');\n\t * // => ['barney', 'fred', 'pebbles']\n\t */\n\t function dropWhile(array, predicate, thisArg) {\n\t return (array && array.length)\n\t ? baseWhile(array, getCallback(predicate, thisArg, 3), true)\n\t : [];\n\t }\n\n\t /**\n\t * Fills elements of `array` with `value` from `start` up to, but not\n\t * including, `end`.\n\t *\n\t * **Note:** This method mutates `array`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {Array} array The array to fill.\n\t * @param {*} value The value to fill `array` with.\n\t * @param {number} [start=0] The start position.\n\t * @param {number} [end=array.length] The end position.\n\t * @returns {Array} Returns `array`.\n\t * @example\n\t *\n\t * var array = [1, 2, 3];\n\t *\n\t * _.fill(array, 'a');\n\t * console.log(array);\n\t * // => ['a', 'a', 'a']\n\t *\n\t * _.fill(Array(3), 2);\n\t * // => [2, 2, 2]\n\t *\n\t * _.fill([4, 6, 8], '*', 1, 2);\n\t * // => [4, '*', 8]\n\t */\n\t function fill(array, value, start, end) {\n\t var length = array ? array.length : 0;\n\t if (!length) {\n\t return [];\n\t }\n\t if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n\t start = 0;\n\t end = length;\n\t }\n\t return baseFill(array, value, start, end);\n\t }\n\n\t /**\n\t * This method is like `_.find` except that it returns the index of the first\n\t * element `predicate` returns truthy for instead of the element itself.\n\t *\n\t * If a property name is provided for `predicate` the created `_.property`\n\t * style callback returns the property value of the given element.\n\t *\n\t * If a value is also provided for `thisArg` the created `_.matchesProperty`\n\t * style callback returns `true` for elements that have a matching property\n\t * value, else `false`.\n\t *\n\t * If an object is provided for `predicate` the created `_.matches` style\n\t * callback returns `true` for elements that have the properties of the given\n\t * object, else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {Array} array The array to search.\n\t * @param {Function|Object|string} [predicate=_.identity] The function invoked\n\t * per iteration.\n\t * @param {*} [thisArg] The `this` binding of `predicate`.\n\t * @returns {number} Returns the index of the found element, else `-1`.\n\t * @example\n\t *\n\t * var users = [\n\t * { 'user': 'barney', 'active': false },\n\t * { 'user': 'fred', 'active': false },\n\t * { 'user': 'pebbles', 'active': true }\n\t * ];\n\t *\n\t * _.findIndex(users, function(chr) {\n\t * return chr.user == 'barney';\n\t * });\n\t * // => 0\n\t *\n\t * // using the `_.matches` callback shorthand\n\t * _.findIndex(users, { 'user': 'fred', 'active': false });\n\t * // => 1\n\t *\n\t * // using the `_.matchesProperty` callback shorthand\n\t * _.findIndex(users, 'active', false);\n\t * // => 0\n\t *\n\t * // using the `_.property` callback shorthand\n\t * _.findIndex(users, 'active');\n\t * // => 2\n\t */\n\t var findIndex = createFindIndex();\n\n\t /**\n\t * This method is like `_.findIndex` except that it iterates over elements\n\t * of `collection` from right to left.\n\t *\n\t * If a property name is provided for `predicate` the created `_.property`\n\t * style callback returns the property value of the given element.\n\t *\n\t * If a value is also provided for `thisArg` the created `_.matchesProperty`\n\t * style callback returns `true` for elements that have a matching property\n\t * value, else `false`.\n\t *\n\t * If an object is provided for `predicate` the created `_.matches` style\n\t * callback returns `true` for elements that have the properties of the given\n\t * object, else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {Array} array The array to search.\n\t * @param {Function|Object|string} [predicate=_.identity] The function invoked\n\t * per iteration.\n\t * @param {*} [thisArg] The `this` binding of `predicate`.\n\t * @returns {number} Returns the index of the found element, else `-1`.\n\t * @example\n\t *\n\t * var users = [\n\t * { 'user': 'barney', 'active': true },\n\t * { 'user': 'fred', 'active': false },\n\t * { 'user': 'pebbles', 'active': false }\n\t * ];\n\t *\n\t * _.findLastIndex(users, function(chr) {\n\t * return chr.user == 'pebbles';\n\t * });\n\t * // => 2\n\t *\n\t * // using the `_.matches` callback shorthand\n\t * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n\t * // => 0\n\t *\n\t * // using the `_.matchesProperty` callback shorthand\n\t * _.findLastIndex(users, 'active', false);\n\t * // => 2\n\t *\n\t * // using the `_.property` callback shorthand\n\t * _.findLastIndex(users, 'active');\n\t * // => 0\n\t */\n\t var findLastIndex = createFindIndex(true);\n\n\t /**\n\t * Gets the first element of `array`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @alias head\n\t * @category Array\n\t * @param {Array} array The array to query.\n\t * @returns {*} Returns the first element of `array`.\n\t * @example\n\t *\n\t * _.first([1, 2, 3]);\n\t * // => 1\n\t *\n\t * _.first([]);\n\t * // => undefined\n\t */\n\t function first(array) {\n\t return array ? array[0] : undefined;\n\t }\n\n\t /**\n\t * Flattens a nested array. If `isDeep` is `true` the array is recursively\n\t * flattened, otherwise it is only flattened a single level.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {Array} array The array to flatten.\n\t * @param {boolean} [isDeep] Specify a deep flatten.\n\t * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.\n\t * @returns {Array} Returns the new flattened array.\n\t * @example\n\t *\n\t * _.flatten([1, [2, 3, [4]]]);\n\t * // => [1, 2, 3, [4]]\n\t *\n\t * // using `isDeep`\n\t * _.flatten([1, [2, 3, [4]]], true);\n\t * // => [1, 2, 3, 4]\n\t */\n\t function flatten(array, isDeep, guard) {\n\t var length = array ? array.length : 0;\n\t if (guard && isIterateeCall(array, isDeep, guard)) {\n\t isDeep = false;\n\t }\n\t return length ? baseFlatten(array, isDeep) : [];\n\t }\n\n\t /**\n\t * Recursively flattens a nested array.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {Array} array The array to recursively flatten.\n\t * @returns {Array} Returns the new flattened array.\n\t * @example\n\t *\n\t * _.flattenDeep([1, [2, 3, [4]]]);\n\t * // => [1, 2, 3, 4]\n\t */\n\t function flattenDeep(array) {\n\t var length = array ? array.length : 0;\n\t return length ? baseFlatten(array, true) : [];\n\t }\n\n\t /**\n\t * Gets the index at which the first occurrence of `value` is found in `array`\n\t * using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n\t * for equality comparisons. If `fromIndex` is negative, it is used as the offset\n\t * from the end of `array`. If `array` is sorted providing `true` for `fromIndex`\n\t * performs a faster binary search.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {Array} array The array to search.\n\t * @param {*} value The value to search for.\n\t * @param {boolean|number} [fromIndex=0] The index to search from or `true`\n\t * to perform a binary search on a sorted array.\n\t * @returns {number} Returns the index of the matched value, else `-1`.\n\t * @example\n\t *\n\t * _.indexOf([1, 2, 1, 2], 2);\n\t * // => 1\n\t *\n\t * // using `fromIndex`\n\t * _.indexOf([1, 2, 1, 2], 2, 2);\n\t * // => 3\n\t *\n\t * // performing a binary search\n\t * _.indexOf([1, 1, 2, 2], 2, true);\n\t * // => 2\n\t */\n\t function indexOf(array, value, fromIndex) {\n\t var length = array ? array.length : 0;\n\t if (!length) {\n\t return -1;\n\t }\n\t if (typeof fromIndex == 'number') {\n\t fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : fromIndex;\n\t } else if (fromIndex) {\n\t var index = binaryIndex(array, value);\n\t if (index < length &&\n\t (value === value ? (value === array[index]) : (array[index] !== array[index]))) {\n\t return index;\n\t }\n\t return -1;\n\t }\n\t return baseIndexOf(array, value, fromIndex || 0);\n\t }\n\n\t /**\n\t * Gets all but the last element of `array`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {Array} array The array to query.\n\t * @returns {Array} Returns the slice of `array`.\n\t * @example\n\t *\n\t * _.initial([1, 2, 3]);\n\t * // => [1, 2]\n\t */\n\t function initial(array) {\n\t return dropRight(array, 1);\n\t }\n\n\t /**\n\t * Creates an array of unique values that are included in all of the provided\n\t * arrays using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n\t * for equality comparisons.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {...Array} [arrays] The arrays to inspect.\n\t * @returns {Array} Returns the new array of shared values.\n\t * @example\n\t * _.intersection([1, 2], [4, 2], [2, 1]);\n\t * // => [2]\n\t */\n\t var intersection = restParam(function(arrays) {\n\t var othLength = arrays.length,\n\t othIndex = othLength,\n\t caches = Array(length),\n\t indexOf = getIndexOf(),\n\t isCommon = indexOf == baseIndexOf,\n\t result = [];\n\n\t while (othIndex--) {\n\t var value = arrays[othIndex] = isArrayLike(value = arrays[othIndex]) ? value : [];\n\t caches[othIndex] = (isCommon && value.length >= 120) ? createCache(othIndex && value) : null;\n\t }\n\t var array = arrays[0],\n\t index = -1,\n\t length = array ? array.length : 0,\n\t seen = caches[0];\n\n\t outer:\n\t while (++index < length) {\n\t value = array[index];\n\t if ((seen ? cacheIndexOf(seen, value) : indexOf(result, value, 0)) < 0) {\n\t var othIndex = othLength;\n\t while (--othIndex) {\n\t var cache = caches[othIndex];\n\t if ((cache ? cacheIndexOf(cache, value) : indexOf(arrays[othIndex], value, 0)) < 0) {\n\t continue outer;\n\t }\n\t }\n\t if (seen) {\n\t seen.push(value);\n\t }\n\t result.push(value);\n\t }\n\t }\n\t return result;\n\t });\n\n\t /**\n\t * Gets the last element of `array`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {Array} array The array to query.\n\t * @returns {*} Returns the last element of `array`.\n\t * @example\n\t *\n\t * _.last([1, 2, 3]);\n\t * // => 3\n\t */\n\t function last(array) {\n\t var length = array ? array.length : 0;\n\t return length ? array[length - 1] : undefined;\n\t }\n\n\t /**\n\t * This method is like `_.indexOf` except that it iterates over elements of\n\t * `array` from right to left.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {Array} array The array to search.\n\t * @param {*} value The value to search for.\n\t * @param {boolean|number} [fromIndex=array.length-1] The index to search from\n\t * or `true` to perform a binary search on a sorted array.\n\t * @returns {number} Returns the index of the matched value, else `-1`.\n\t * @example\n\t *\n\t * _.lastIndexOf([1, 2, 1, 2], 2);\n\t * // => 3\n\t *\n\t * // using `fromIndex`\n\t * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n\t * // => 1\n\t *\n\t * // performing a binary search\n\t * _.lastIndexOf([1, 1, 2, 2], 2, true);\n\t * // => 3\n\t */\n\t function lastIndexOf(array, value, fromIndex) {\n\t var length = array ? array.length : 0;\n\t if (!length) {\n\t return -1;\n\t }\n\t var index = length;\n\t if (typeof fromIndex == 'number') {\n\t index = (fromIndex < 0 ? nativeMax(length + fromIndex, 0) : nativeMin(fromIndex || 0, length - 1)) + 1;\n\t } else if (fromIndex) {\n\t index = binaryIndex(array, value, true) - 1;\n\t var other = array[index];\n\t if (value === value ? (value === other) : (other !== other)) {\n\t return index;\n\t }\n\t return -1;\n\t }\n\t if (value !== value) {\n\t return indexOfNaN(array, index, true);\n\t }\n\t while (index--) {\n\t if (array[index] === value) {\n\t return index;\n\t }\n\t }\n\t return -1;\n\t }\n\n\t /**\n\t * Removes all provided values from `array` using\n\t * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n\t * for equality comparisons.\n\t *\n\t * **Note:** Unlike `_.without`, this method mutates `array`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {Array} array The array to modify.\n\t * @param {...*} [values] The values to remove.\n\t * @returns {Array} Returns `array`.\n\t * @example\n\t *\n\t * var array = [1, 2, 3, 1, 2, 3];\n\t *\n\t * _.pull(array, 2, 3);\n\t * console.log(array);\n\t * // => [1, 1]\n\t */\n\t function pull() {\n\t var args = arguments,\n\t array = args[0];\n\n\t if (!(array && array.length)) {\n\t return array;\n\t }\n\t var index = 0,\n\t indexOf = getIndexOf(),\n\t length = args.length;\n\n\t while (++index < length) {\n\t var fromIndex = 0,\n\t value = args[index];\n\n\t while ((fromIndex = indexOf(array, value, fromIndex)) > -1) {\n\t splice.call(array, fromIndex, 1);\n\t }\n\t }\n\t return array;\n\t }\n\n\t /**\n\t * Removes elements from `array` corresponding to the given indexes and returns\n\t * an array of the removed elements. Indexes may be specified as an array of\n\t * indexes or as individual arguments.\n\t *\n\t * **Note:** Unlike `_.at`, this method mutates `array`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {Array} array The array to modify.\n\t * @param {...(number|number[])} [indexes] The indexes of elements to remove,\n\t * specified as individual indexes or arrays of indexes.\n\t * @returns {Array} Returns the new array of removed elements.\n\t * @example\n\t *\n\t * var array = [5, 10, 15, 20];\n\t * var evens = _.pullAt(array, 1, 3);\n\t *\n\t * console.log(array);\n\t * // => [5, 15]\n\t *\n\t * console.log(evens);\n\t * // => [10, 20]\n\t */\n\t var pullAt = restParam(function(array, indexes) {\n\t indexes = baseFlatten(indexes);\n\n\t var result = baseAt(array, indexes);\n\t basePullAt(array, indexes.sort(baseCompareAscending));\n\t return result;\n\t });\n\n\t /**\n\t * Removes all elements from `array` that `predicate` returns truthy for\n\t * and returns an array of the removed elements. The predicate is bound to\n\t * `thisArg` and invoked with three arguments: (value, index, array).\n\t *\n\t * If a property name is provided for `predicate` the created `_.property`\n\t * style callback returns the property value of the given element.\n\t *\n\t * If a value is also provided for `thisArg` the created `_.matchesProperty`\n\t * style callback returns `true` for elements that have a matching property\n\t * value, else `false`.\n\t *\n\t * If an object is provided for `predicate` the created `_.matches` style\n\t * callback returns `true` for elements that have the properties of the given\n\t * object, else `false`.\n\t *\n\t * **Note:** Unlike `_.filter`, this method mutates `array`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {Array} array The array to modify.\n\t * @param {Function|Object|string} [predicate=_.identity] The function invoked\n\t * per iteration.\n\t * @param {*} [thisArg] The `this` binding of `predicate`.\n\t * @returns {Array} Returns the new array of removed elements.\n\t * @example\n\t *\n\t * var array = [1, 2, 3, 4];\n\t * var evens = _.remove(array, function(n) {\n\t * return n % 2 == 0;\n\t * });\n\t *\n\t * console.log(array);\n\t * // => [1, 3]\n\t *\n\t * console.log(evens);\n\t * // => [2, 4]\n\t */\n\t function remove(array, predicate, thisArg) {\n\t var result = [];\n\t if (!(array && array.length)) {\n\t return result;\n\t }\n\t var index = -1,\n\t indexes = [],\n\t length = array.length;\n\n\t predicate = getCallback(predicate, thisArg, 3);\n\t while (++index < length) {\n\t var value = array[index];\n\t if (predicate(value, index, array)) {\n\t result.push(value);\n\t indexes.push(index);\n\t }\n\t }\n\t basePullAt(array, indexes);\n\t return result;\n\t }\n\n\t /**\n\t * Gets all but the first element of `array`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @alias tail\n\t * @category Array\n\t * @param {Array} array The array to query.\n\t * @returns {Array} Returns the slice of `array`.\n\t * @example\n\t *\n\t * _.rest([1, 2, 3]);\n\t * // => [2, 3]\n\t */\n\t function rest(array) {\n\t return drop(array, 1);\n\t }\n\n\t /**\n\t * Creates a slice of `array` from `start` up to, but not including, `end`.\n\t *\n\t * **Note:** This method is used instead of `Array#slice` to support node\n\t * lists in IE < 9 and to ensure dense arrays are returned.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {Array} array The array to slice.\n\t * @param {number} [start=0] The start position.\n\t * @param {number} [end=array.length] The end position.\n\t * @returns {Array} Returns the slice of `array`.\n\t */\n\t function slice(array, start, end) {\n\t var length = array ? array.length : 0;\n\t if (!length) {\n\t return [];\n\t }\n\t if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n\t start = 0;\n\t end = length;\n\t }\n\t return baseSlice(array, start, end);\n\t }\n\n\t /**\n\t * Uses a binary search to determine the lowest index at which `value` should\n\t * be inserted into `array` in order to maintain its sort order. If an iteratee\n\t * function is provided it is invoked for `value` and each element of `array`\n\t * to compute their sort ranking. The iteratee is bound to `thisArg` and\n\t * invoked with one argument; (value).\n\t *\n\t * If a property name is provided for `iteratee` the created `_.property`\n\t * style callback returns the property value of the given element.\n\t *\n\t * If a value is also provided for `thisArg` the created `_.matchesProperty`\n\t * style callback returns `true` for elements that have a matching property\n\t * value, else `false`.\n\t *\n\t * If an object is provided for `iteratee` the created `_.matches` style\n\t * callback returns `true` for elements that have the properties of the given\n\t * object, else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {Array} array The sorted array to inspect.\n\t * @param {*} value The value to evaluate.\n\t * @param {Function|Object|string} [iteratee=_.identity] The function invoked\n\t * per iteration.\n\t * @param {*} [thisArg] The `this` binding of `iteratee`.\n\t * @returns {number} Returns the index at which `value` should be inserted\n\t * into `array`.\n\t * @example\n\t *\n\t * _.sortedIndex([30, 50], 40);\n\t * // => 1\n\t *\n\t * _.sortedIndex([4, 4, 5, 5], 5);\n\t * // => 2\n\t *\n\t * var dict = { 'data': { 'thirty': 30, 'forty': 40, 'fifty': 50 } };\n\t *\n\t * // using an iteratee function\n\t * _.sortedIndex(['thirty', 'fifty'], 'forty', function(word) {\n\t * return this.data[word];\n\t * }, dict);\n\t * // => 1\n\t *\n\t * // using the `_.property` callback shorthand\n\t * _.sortedIndex([{ 'x': 30 }, { 'x': 50 }], { 'x': 40 }, 'x');\n\t * // => 1\n\t */\n\t var sortedIndex = createSortedIndex();\n\n\t /**\n\t * This method is like `_.sortedIndex` except that it returns the highest\n\t * index at which `value` should be inserted into `array` in order to\n\t * maintain its sort order.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {Array} array The sorted array to inspect.\n\t * @param {*} value The value to evaluate.\n\t * @param {Function|Object|string} [iteratee=_.identity] The function invoked\n\t * per iteration.\n\t * @param {*} [thisArg] The `this` binding of `iteratee`.\n\t * @returns {number} Returns the index at which `value` should be inserted\n\t * into `array`.\n\t * @example\n\t *\n\t * _.sortedLastIndex([4, 4, 5, 5], 5);\n\t * // => 4\n\t */\n\t var sortedLastIndex = createSortedIndex(true);\n\n\t /**\n\t * Creates a slice of `array` with `n` elements taken from the beginning.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {Array} array The array to query.\n\t * @param {number} [n=1] The number of elements to take.\n\t * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.\n\t * @returns {Array} Returns the slice of `array`.\n\t * @example\n\t *\n\t * _.take([1, 2, 3]);\n\t * // => [1]\n\t *\n\t * _.take([1, 2, 3], 2);\n\t * // => [1, 2]\n\t *\n\t * _.take([1, 2, 3], 5);\n\t * // => [1, 2, 3]\n\t *\n\t * _.take([1, 2, 3], 0);\n\t * // => []\n\t */\n\t function take(array, n, guard) {\n\t var length = array ? array.length : 0;\n\t if (!length) {\n\t return [];\n\t }\n\t if (guard ? isIterateeCall(array, n, guard) : n == null) {\n\t n = 1;\n\t }\n\t return baseSlice(array, 0, n < 0 ? 0 : n);\n\t }\n\n\t /**\n\t * Creates a slice of `array` with `n` elements taken from the end.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {Array} array The array to query.\n\t * @param {number} [n=1] The number of elements to take.\n\t * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.\n\t * @returns {Array} Returns the slice of `array`.\n\t * @example\n\t *\n\t * _.takeRight([1, 2, 3]);\n\t * // => [3]\n\t *\n\t * _.takeRight([1, 2, 3], 2);\n\t * // => [2, 3]\n\t *\n\t * _.takeRight([1, 2, 3], 5);\n\t * // => [1, 2, 3]\n\t *\n\t * _.takeRight([1, 2, 3], 0);\n\t * // => []\n\t */\n\t function takeRight(array, n, guard) {\n\t var length = array ? array.length : 0;\n\t if (!length) {\n\t return [];\n\t }\n\t if (guard ? isIterateeCall(array, n, guard) : n == null) {\n\t n = 1;\n\t }\n\t n = length - (+n || 0);\n\t return baseSlice(array, n < 0 ? 0 : n);\n\t }\n\n\t /**\n\t * Creates a slice of `array` with elements taken from the end. Elements are\n\t * taken until `predicate` returns falsey. The predicate is bound to `thisArg`\n\t * and invoked with three arguments: (value, index, array).\n\t *\n\t * If a property name is provided for `predicate` the created `_.property`\n\t * style callback returns the property value of the given element.\n\t *\n\t * If a value is also provided for `thisArg` the created `_.matchesProperty`\n\t * style callback returns `true` for elements that have a matching property\n\t * value, else `false`.\n\t *\n\t * If an object is provided for `predicate` the created `_.matches` style\n\t * callback returns `true` for elements that have the properties of the given\n\t * object, else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {Array} array The array to query.\n\t * @param {Function|Object|string} [predicate=_.identity] The function invoked\n\t * per iteration.\n\t * @param {*} [thisArg] The `this` binding of `predicate`.\n\t * @returns {Array} Returns the slice of `array`.\n\t * @example\n\t *\n\t * _.takeRightWhile([1, 2, 3], function(n) {\n\t * return n > 1;\n\t * });\n\t * // => [2, 3]\n\t *\n\t * var users = [\n\t * { 'user': 'barney', 'active': true },\n\t * { 'user': 'fred', 'active': false },\n\t * { 'user': 'pebbles', 'active': false }\n\t * ];\n\t *\n\t * // using the `_.matches` callback shorthand\n\t * _.pluck(_.takeRightWhile(users, { 'user': 'pebbles', 'active': false }), 'user');\n\t * // => ['pebbles']\n\t *\n\t * // using the `_.matchesProperty` callback shorthand\n\t * _.pluck(_.takeRightWhile(users, 'active', false), 'user');\n\t * // => ['fred', 'pebbles']\n\t *\n\t * // using the `_.property` callback shorthand\n\t * _.pluck(_.takeRightWhile(users, 'active'), 'user');\n\t * // => []\n\t */\n\t function takeRightWhile(array, predicate, thisArg) {\n\t return (array && array.length)\n\t ? baseWhile(array, getCallback(predicate, thisArg, 3), false, true)\n\t : [];\n\t }\n\n\t /**\n\t * Creates a slice of `array` with elements taken from the beginning. Elements\n\t * are taken until `predicate` returns falsey. The predicate is bound to\n\t * `thisArg` and invoked with three arguments: (value, index, array).\n\t *\n\t * If a property name is provided for `predicate` the created `_.property`\n\t * style callback returns the property value of the given element.\n\t *\n\t * If a value is also provided for `thisArg` the created `_.matchesProperty`\n\t * style callback returns `true` for elements that have a matching property\n\t * value, else `false`.\n\t *\n\t * If an object is provided for `predicate` the created `_.matches` style\n\t * callback returns `true` for elements that have the properties of the given\n\t * object, else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {Array} array The array to query.\n\t * @param {Function|Object|string} [predicate=_.identity] The function invoked\n\t * per iteration.\n\t * @param {*} [thisArg] The `this` binding of `predicate`.\n\t * @returns {Array} Returns the slice of `array`.\n\t * @example\n\t *\n\t * _.takeWhile([1, 2, 3], function(n) {\n\t * return n < 3;\n\t * });\n\t * // => [1, 2]\n\t *\n\t * var users = [\n\t * { 'user': 'barney', 'active': false },\n\t * { 'user': 'fred', 'active': false},\n\t * { 'user': 'pebbles', 'active': true }\n\t * ];\n\t *\n\t * // using the `_.matches` callback shorthand\n\t * _.pluck(_.takeWhile(users, { 'user': 'barney', 'active': false }), 'user');\n\t * // => ['barney']\n\t *\n\t * // using the `_.matchesProperty` callback shorthand\n\t * _.pluck(_.takeWhile(users, 'active', false), 'user');\n\t * // => ['barney', 'fred']\n\t *\n\t * // using the `_.property` callback shorthand\n\t * _.pluck(_.takeWhile(users, 'active'), 'user');\n\t * // => []\n\t */\n\t function takeWhile(array, predicate, thisArg) {\n\t return (array && array.length)\n\t ? baseWhile(array, getCallback(predicate, thisArg, 3))\n\t : [];\n\t }\n\n\t /**\n\t * Creates an array of unique values, in order, from all of the provided arrays\n\t * using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n\t * for equality comparisons.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {...Array} [arrays] The arrays to inspect.\n\t * @returns {Array} Returns the new array of combined values.\n\t * @example\n\t *\n\t * _.union([1, 2], [4, 2], [2, 1]);\n\t * // => [1, 2, 4]\n\t */\n\t var union = restParam(function(arrays) {\n\t return baseUniq(baseFlatten(arrays, false, true));\n\t });\n\n\t /**\n\t * Creates a duplicate-free version of an array, using\n\t * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n\t * for equality comparisons, in which only the first occurence of each element\n\t * is kept. Providing `true` for `isSorted` performs a faster search algorithm\n\t * for sorted arrays. If an iteratee function is provided it is invoked for\n\t * each element in the array to generate the criterion by which uniqueness\n\t * is computed. The `iteratee` is bound to `thisArg` and invoked with three\n\t * arguments: (value, index, array).\n\t *\n\t * If a property name is provided for `iteratee` the created `_.property`\n\t * style callback returns the property value of the given element.\n\t *\n\t * If a value is also provided for `thisArg` the created `_.matchesProperty`\n\t * style callback returns `true` for elements that have a matching property\n\t * value, else `false`.\n\t *\n\t * If an object is provided for `iteratee` the created `_.matches` style\n\t * callback returns `true` for elements that have the properties of the given\n\t * object, else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @alias unique\n\t * @category Array\n\t * @param {Array} array The array to inspect.\n\t * @param {boolean} [isSorted] Specify the array is sorted.\n\t * @param {Function|Object|string} [iteratee] The function invoked per iteration.\n\t * @param {*} [thisArg] The `this` binding of `iteratee`.\n\t * @returns {Array} Returns the new duplicate-value-free array.\n\t * @example\n\t *\n\t * _.uniq([2, 1, 2]);\n\t * // => [2, 1]\n\t *\n\t * // using `isSorted`\n\t * _.uniq([1, 1, 2], true);\n\t * // => [1, 2]\n\t *\n\t * // using an iteratee function\n\t * _.uniq([1, 2.5, 1.5, 2], function(n) {\n\t * return this.floor(n);\n\t * }, Math);\n\t * // => [1, 2.5]\n\t *\n\t * // using the `_.property` callback shorthand\n\t * _.uniq([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n\t * // => [{ 'x': 1 }, { 'x': 2 }]\n\t */\n\t function uniq(array, isSorted, iteratee, thisArg) {\n\t var length = array ? array.length : 0;\n\t if (!length) {\n\t return [];\n\t }\n\t if (isSorted != null && typeof isSorted != 'boolean') {\n\t thisArg = iteratee;\n\t iteratee = isIterateeCall(array, isSorted, thisArg) ? undefined : isSorted;\n\t isSorted = false;\n\t }\n\t var callback = getCallback();\n\t if (!(iteratee == null && callback === baseCallback)) {\n\t iteratee = callback(iteratee, thisArg, 3);\n\t }\n\t return (isSorted && getIndexOf() == baseIndexOf)\n\t ? sortedUniq(array, iteratee)\n\t : baseUniq(array, iteratee);\n\t }\n\n\t /**\n\t * This method is like `_.zip` except that it accepts an array of grouped\n\t * elements and creates an array regrouping the elements to their pre-zip\n\t * configuration.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {Array} array The array of grouped elements to process.\n\t * @returns {Array} Returns the new array of regrouped elements.\n\t * @example\n\t *\n\t * var zipped = _.zip(['fred', 'barney'], [30, 40], [true, false]);\n\t * // => [['fred', 30, true], ['barney', 40, false]]\n\t *\n\t * _.unzip(zipped);\n\t * // => [['fred', 'barney'], [30, 40], [true, false]]\n\t */\n\t function unzip(array) {\n\t if (!(array && array.length)) {\n\t return [];\n\t }\n\t var index = -1,\n\t length = 0;\n\n\t array = arrayFilter(array, function(group) {\n\t if (isArrayLike(group)) {\n\t length = nativeMax(group.length, length);\n\t return true;\n\t }\n\t });\n\t var result = Array(length);\n\t while (++index < length) {\n\t result[index] = arrayMap(array, baseProperty(index));\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * This method is like `_.unzip` except that it accepts an iteratee to specify\n\t * how regrouped values should be combined. The `iteratee` is bound to `thisArg`\n\t * and invoked with four arguments: (accumulator, value, index, group).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {Array} array The array of grouped elements to process.\n\t * @param {Function} [iteratee] The function to combine regrouped values.\n\t * @param {*} [thisArg] The `this` binding of `iteratee`.\n\t * @returns {Array} Returns the new array of regrouped elements.\n\t * @example\n\t *\n\t * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n\t * // => [[1, 10, 100], [2, 20, 200]]\n\t *\n\t * _.unzipWith(zipped, _.add);\n\t * // => [3, 30, 300]\n\t */\n\t function unzipWith(array, iteratee, thisArg) {\n\t var length = array ? array.length : 0;\n\t if (!length) {\n\t return [];\n\t }\n\t var result = unzip(array);\n\t if (iteratee == null) {\n\t return result;\n\t }\n\t iteratee = bindCallback(iteratee, thisArg, 4);\n\t return arrayMap(result, function(group) {\n\t return arrayReduce(group, iteratee, undefined, true);\n\t });\n\t }\n\n\t /**\n\t * Creates an array excluding all provided values using\n\t * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n\t * for equality comparisons.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {Array} array The array to filter.\n\t * @param {...*} [values] The values to exclude.\n\t * @returns {Array} Returns the new array of filtered values.\n\t * @example\n\t *\n\t * _.without([1, 2, 1, 3], 1, 2);\n\t * // => [3]\n\t */\n\t var without = restParam(function(array, values) {\n\t return isArrayLike(array)\n\t ? baseDifference(array, values)\n\t : [];\n\t });\n\n\t /**\n\t * Creates an array of unique values that is the [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n\t * of the provided arrays.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {...Array} [arrays] The arrays to inspect.\n\t * @returns {Array} Returns the new array of values.\n\t * @example\n\t *\n\t * _.xor([1, 2], [4, 2]);\n\t * // => [1, 4]\n\t */\n\t function xor() {\n\t var index = -1,\n\t length = arguments.length;\n\n\t while (++index < length) {\n\t var array = arguments[index];\n\t if (isArrayLike(array)) {\n\t var result = result\n\t ? arrayPush(baseDifference(result, array), baseDifference(array, result))\n\t : array;\n\t }\n\t }\n\t return result ? baseUniq(result) : [];\n\t }\n\n\t /**\n\t * Creates an array of grouped elements, the first of which contains the first\n\t * elements of the given arrays, the second of which contains the second elements\n\t * of the given arrays, and so on.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {...Array} [arrays] The arrays to process.\n\t * @returns {Array} Returns the new array of grouped elements.\n\t * @example\n\t *\n\t * _.zip(['fred', 'barney'], [30, 40], [true, false]);\n\t * // => [['fred', 30, true], ['barney', 40, false]]\n\t */\n\t var zip = restParam(unzip);\n\n\t /**\n\t * The inverse of `_.pairs`; this method returns an object composed from arrays\n\t * of property names and values. Provide either a single two dimensional array,\n\t * e.g. `[[key1, value1], [key2, value2]]` or two arrays, one of property names\n\t * and one of corresponding values.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @alias object\n\t * @category Array\n\t * @param {Array} props The property names.\n\t * @param {Array} [values=[]] The property values.\n\t * @returns {Object} Returns the new object.\n\t * @example\n\t *\n\t * _.zipObject([['fred', 30], ['barney', 40]]);\n\t * // => { 'fred': 30, 'barney': 40 }\n\t *\n\t * _.zipObject(['fred', 'barney'], [30, 40]);\n\t * // => { 'fred': 30, 'barney': 40 }\n\t */\n\t function zipObject(props, values) {\n\t var index = -1,\n\t length = props ? props.length : 0,\n\t result = {};\n\n\t if (length && !values && !isArray(props[0])) {\n\t values = [];\n\t }\n\t while (++index < length) {\n\t var key = props[index];\n\t if (values) {\n\t result[key] = values[index];\n\t } else if (key) {\n\t result[key[0]] = key[1];\n\t }\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * This method is like `_.zip` except that it accepts an iteratee to specify\n\t * how grouped values should be combined. The `iteratee` is bound to `thisArg`\n\t * and invoked with four arguments: (accumulator, value, index, group).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {...Array} [arrays] The arrays to process.\n\t * @param {Function} [iteratee] The function to combine grouped values.\n\t * @param {*} [thisArg] The `this` binding of `iteratee`.\n\t * @returns {Array} Returns the new array of grouped elements.\n\t * @example\n\t *\n\t * _.zipWith([1, 2], [10, 20], [100, 200], _.add);\n\t * // => [111, 222]\n\t */\n\t var zipWith = restParam(function(arrays) {\n\t var length = arrays.length,\n\t iteratee = length > 2 ? arrays[length - 2] : undefined,\n\t thisArg = length > 1 ? arrays[length - 1] : undefined;\n\n\t if (length > 2 && typeof iteratee == 'function') {\n\t length -= 2;\n\t } else {\n\t iteratee = (length > 1 && typeof thisArg == 'function') ? (--length, thisArg) : undefined;\n\t thisArg = undefined;\n\t }\n\t arrays.length = length;\n\t return unzipWith(arrays, iteratee, thisArg);\n\t });\n\n\t /*------------------------------------------------------------------------*/\n\n\t /**\n\t * Creates a `lodash` object that wraps `value` with explicit method\n\t * chaining enabled.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Chain\n\t * @param {*} value The value to wrap.\n\t * @returns {Object} Returns the new `lodash` wrapper instance.\n\t * @example\n\t *\n\t * var users = [\n\t * { 'user': 'barney', 'age': 36 },\n\t * { 'user': 'fred', 'age': 40 },\n\t * { 'user': 'pebbles', 'age': 1 }\n\t * ];\n\t *\n\t * var youngest = _.chain(users)\n\t * .sortBy('age')\n\t * .map(function(chr) {\n\t * return chr.user + ' is ' + chr.age;\n\t * })\n\t * .first()\n\t * .value();\n\t * // => 'pebbles is 1'\n\t */\n\t function chain(value) {\n\t var result = lodash(value);\n\t result.__chain__ = true;\n\t return result;\n\t }\n\n\t /**\n\t * This method invokes `interceptor` and returns `value`. The interceptor is\n\t * bound to `thisArg` and invoked with one argument; (value). The purpose of\n\t * this method is to \"tap into\" a method chain in order to perform operations\n\t * on intermediate results within the chain.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Chain\n\t * @param {*} value The value to provide to `interceptor`.\n\t * @param {Function} interceptor The function to invoke.\n\t * @param {*} [thisArg] The `this` binding of `interceptor`.\n\t * @returns {*} Returns `value`.\n\t * @example\n\t *\n\t * _([1, 2, 3])\n\t * .tap(function(array) {\n\t * array.pop();\n\t * })\n\t * .reverse()\n\t * .value();\n\t * // => [2, 1]\n\t */\n\t function tap(value, interceptor, thisArg) {\n\t interceptor.call(thisArg, value);\n\t return value;\n\t }\n\n\t /**\n\t * This method is like `_.tap` except that it returns the result of `interceptor`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Chain\n\t * @param {*} value The value to provide to `interceptor`.\n\t * @param {Function} interceptor The function to invoke.\n\t * @param {*} [thisArg] The `this` binding of `interceptor`.\n\t * @returns {*} Returns the result of `interceptor`.\n\t * @example\n\t *\n\t * _(' abc ')\n\t * .chain()\n\t * .trim()\n\t * .thru(function(value) {\n\t * return [value];\n\t * })\n\t * .value();\n\t * // => ['abc']\n\t */\n\t function thru(value, interceptor, thisArg) {\n\t return interceptor.call(thisArg, value);\n\t }\n\n\t /**\n\t * Enables explicit method chaining on the wrapper object.\n\t *\n\t * @name chain\n\t * @memberOf _\n\t * @category Chain\n\t * @returns {Object} Returns the new `lodash` wrapper instance.\n\t * @example\n\t *\n\t * var users = [\n\t * { 'user': 'barney', 'age': 36 },\n\t * { 'user': 'fred', 'age': 40 }\n\t * ];\n\t *\n\t * // without explicit chaining\n\t * _(users).first();\n\t * // => { 'user': 'barney', 'age': 36 }\n\t *\n\t * // with explicit chaining\n\t * _(users).chain()\n\t * .first()\n\t * .pick('user')\n\t * .value();\n\t * // => { 'user': 'barney' }\n\t */\n\t function wrapperChain() {\n\t return chain(this);\n\t }\n\n\t /**\n\t * Executes the chained sequence and returns the wrapped result.\n\t *\n\t * @name commit\n\t * @memberOf _\n\t * @category Chain\n\t * @returns {Object} Returns the new `lodash` wrapper instance.\n\t * @example\n\t *\n\t * var array = [1, 2];\n\t * var wrapped = _(array).push(3);\n\t *\n\t * console.log(array);\n\t * // => [1, 2]\n\t *\n\t * wrapped = wrapped.commit();\n\t * console.log(array);\n\t * // => [1, 2, 3]\n\t *\n\t * wrapped.last();\n\t * // => 3\n\t *\n\t * console.log(array);\n\t * // => [1, 2, 3]\n\t */\n\t function wrapperCommit() {\n\t return new LodashWrapper(this.value(), this.__chain__);\n\t }\n\n\t /**\n\t * Creates a new array joining a wrapped array with any additional arrays\n\t * and/or values.\n\t *\n\t * @name concat\n\t * @memberOf _\n\t * @category Chain\n\t * @param {...*} [values] The values to concatenate.\n\t * @returns {Array} Returns the new concatenated array.\n\t * @example\n\t *\n\t * var array = [1];\n\t * var wrapped = _(array).concat(2, [3], [[4]]);\n\t *\n\t * console.log(wrapped.value());\n\t * // => [1, 2, 3, [4]]\n\t *\n\t * console.log(array);\n\t * // => [1]\n\t */\n\t var wrapperConcat = restParam(function(values) {\n\t values = baseFlatten(values);\n\t return this.thru(function(array) {\n\t return arrayConcat(isArray(array) ? array : [toObject(array)], values);\n\t });\n\t });\n\n\t /**\n\t * Creates a clone of the chained sequence planting `value` as the wrapped value.\n\t *\n\t * @name plant\n\t * @memberOf _\n\t * @category Chain\n\t * @returns {Object} Returns the new `lodash` wrapper instance.\n\t * @example\n\t *\n\t * var array = [1, 2];\n\t * var wrapped = _(array).map(function(value) {\n\t * return Math.pow(value, 2);\n\t * });\n\t *\n\t * var other = [3, 4];\n\t * var otherWrapped = wrapped.plant(other);\n\t *\n\t * otherWrapped.value();\n\t * // => [9, 16]\n\t *\n\t * wrapped.value();\n\t * // => [1, 4]\n\t */\n\t function wrapperPlant(value) {\n\t var result,\n\t parent = this;\n\n\t while (parent instanceof baseLodash) {\n\t var clone = wrapperClone(parent);\n\t if (result) {\n\t previous.__wrapped__ = clone;\n\t } else {\n\t result = clone;\n\t }\n\t var previous = clone;\n\t parent = parent.__wrapped__;\n\t }\n\t previous.__wrapped__ = value;\n\t return result;\n\t }\n\n\t /**\n\t * Reverses the wrapped array so the first element becomes the last, the\n\t * second element becomes the second to last, and so on.\n\t *\n\t * **Note:** This method mutates the wrapped array.\n\t *\n\t * @name reverse\n\t * @memberOf _\n\t * @category Chain\n\t * @returns {Object} Returns the new reversed `lodash` wrapper instance.\n\t * @example\n\t *\n\t * var array = [1, 2, 3];\n\t *\n\t * _(array).reverse().value()\n\t * // => [3, 2, 1]\n\t *\n\t * console.log(array);\n\t * // => [3, 2, 1]\n\t */\n\t function wrapperReverse() {\n\t var value = this.__wrapped__;\n\n\t var interceptor = function(value) {\n\t return (wrapped && wrapped.__dir__ < 0) ? value : value.reverse();\n\t };\n\t if (value instanceof LazyWrapper) {\n\t var wrapped = value;\n\t if (this.__actions__.length) {\n\t wrapped = new LazyWrapper(this);\n\t }\n\t wrapped = wrapped.reverse();\n\t wrapped.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });\n\t return new LodashWrapper(wrapped, this.__chain__);\n\t }\n\t return this.thru(interceptor);\n\t }\n\n\t /**\n\t * Produces the result of coercing the unwrapped value to a string.\n\t *\n\t * @name toString\n\t * @memberOf _\n\t * @category Chain\n\t * @returns {string} Returns the coerced string value.\n\t * @example\n\t *\n\t * _([1, 2, 3]).toString();\n\t * // => '1,2,3'\n\t */\n\t function wrapperToString() {\n\t return (this.value() + '');\n\t }\n\n\t /**\n\t * Executes the chained sequence to extract the unwrapped value.\n\t *\n\t * @name value\n\t * @memberOf _\n\t * @alias run, toJSON, valueOf\n\t * @category Chain\n\t * @returns {*} Returns the resolved unwrapped value.\n\t * @example\n\t *\n\t * _([1, 2, 3]).value();\n\t * // => [1, 2, 3]\n\t */\n\t function wrapperValue() {\n\t return baseWrapperValue(this.__wrapped__, this.__actions__);\n\t }\n\n\t /*------------------------------------------------------------------------*/\n\n\t /**\n\t * Creates an array of elements corresponding to the given keys, or indexes,\n\t * of `collection`. Keys may be specified as individual arguments or as arrays\n\t * of keys.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {...(number|number[]|string|string[])} [props] The property names\n\t * or indexes of elements to pick, specified individually or in arrays.\n\t * @returns {Array} Returns the new array of picked elements.\n\t * @example\n\t *\n\t * _.at(['a', 'b', 'c'], [0, 2]);\n\t * // => ['a', 'c']\n\t *\n\t * _.at(['barney', 'fred', 'pebbles'], 0, 2);\n\t * // => ['barney', 'pebbles']\n\t */\n\t var at = restParam(function(collection, props) {\n\t return baseAt(collection, baseFlatten(props));\n\t });\n\n\t /**\n\t * Creates an object composed of keys generated from the results of running\n\t * each element of `collection` through `iteratee`. The corresponding value\n\t * of each key is the number of times the key was returned by `iteratee`.\n\t * The `iteratee` is bound to `thisArg` and invoked with three arguments:\n\t * (value, index|key, collection).\n\t *\n\t * If a property name is provided for `iteratee` the created `_.property`\n\t * style callback returns the property value of the given element.\n\t *\n\t * If a value is also provided for `thisArg` the created `_.matchesProperty`\n\t * style callback returns `true` for elements that have a matching property\n\t * value, else `false`.\n\t *\n\t * If an object is provided for `iteratee` the created `_.matches` style\n\t * callback returns `true` for elements that have the properties of the given\n\t * object, else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function|Object|string} [iteratee=_.identity] The function invoked\n\t * per iteration.\n\t * @param {*} [thisArg] The `this` binding of `iteratee`.\n\t * @returns {Object} Returns the composed aggregate object.\n\t * @example\n\t *\n\t * _.countBy([4.3, 6.1, 6.4], function(n) {\n\t * return Math.floor(n);\n\t * });\n\t * // => { '4': 1, '6': 2 }\n\t *\n\t * _.countBy([4.3, 6.1, 6.4], function(n) {\n\t * return this.floor(n);\n\t * }, Math);\n\t * // => { '4': 1, '6': 2 }\n\t *\n\t * _.countBy(['one', 'two', 'three'], 'length');\n\t * // => { '3': 2, '5': 1 }\n\t */\n\t var countBy = createAggregator(function(result, value, key) {\n\t hasOwnProperty.call(result, key) ? ++result[key] : (result[key] = 1);\n\t });\n\n\t /**\n\t * Checks if `predicate` returns truthy for **all** elements of `collection`.\n\t * The predicate is bound to `thisArg` and invoked with three arguments:\n\t * (value, index|key, collection).\n\t *\n\t * If a property name is provided for `predicate` the created `_.property`\n\t * style callback returns the property value of the given element.\n\t *\n\t * If a value is also provided for `thisArg` the created `_.matchesProperty`\n\t * style callback returns `true` for elements that have a matching property\n\t * value, else `false`.\n\t *\n\t * If an object is provided for `predicate` the created `_.matches` style\n\t * callback returns `true` for elements that have the properties of the given\n\t * object, else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @alias all\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function|Object|string} [predicate=_.identity] The function invoked\n\t * per iteration.\n\t * @param {*} [thisArg] The `this` binding of `predicate`.\n\t * @returns {boolean} Returns `true` if all elements pass the predicate check,\n\t * else `false`.\n\t * @example\n\t *\n\t * _.every([true, 1, null, 'yes'], Boolean);\n\t * // => false\n\t *\n\t * var users = [\n\t * { 'user': 'barney', 'active': false },\n\t * { 'user': 'fred', 'active': false }\n\t * ];\n\t *\n\t * // using the `_.matches` callback shorthand\n\t * _.every(users, { 'user': 'barney', 'active': false });\n\t * // => false\n\t *\n\t * // using the `_.matchesProperty` callback shorthand\n\t * _.every(users, 'active', false);\n\t * // => true\n\t *\n\t * // using the `_.property` callback shorthand\n\t * _.every(users, 'active');\n\t * // => false\n\t */\n\t function every(collection, predicate, thisArg) {\n\t var func = isArray(collection) ? arrayEvery : baseEvery;\n\t if (thisArg && isIterateeCall(collection, predicate, thisArg)) {\n\t predicate = undefined;\n\t }\n\t if (typeof predicate != 'function' || thisArg !== undefined) {\n\t predicate = getCallback(predicate, thisArg, 3);\n\t }\n\t return func(collection, predicate);\n\t }\n\n\t /**\n\t * Iterates over elements of `collection`, returning an array of all elements\n\t * `predicate` returns truthy for. The predicate is bound to `thisArg` and\n\t * invoked with three arguments: (value, index|key, collection).\n\t *\n\t * If a property name is provided for `predicate` the created `_.property`\n\t * style callback returns the property value of the given element.\n\t *\n\t * If a value is also provided for `thisArg` the created `_.matchesProperty`\n\t * style callback returns `true` for elements that have a matching property\n\t * value, else `false`.\n\t *\n\t * If an object is provided for `predicate` the created `_.matches` style\n\t * callback returns `true` for elements that have the properties of the given\n\t * object, else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @alias select\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function|Object|string} [predicate=_.identity] The function invoked\n\t * per iteration.\n\t * @param {*} [thisArg] The `this` binding of `predicate`.\n\t * @returns {Array} Returns the new filtered array.\n\t * @example\n\t *\n\t * _.filter([4, 5, 6], function(n) {\n\t * return n % 2 == 0;\n\t * });\n\t * // => [4, 6]\n\t *\n\t * var users = [\n\t * { 'user': 'barney', 'age': 36, 'active': true },\n\t * { 'user': 'fred', 'age': 40, 'active': false }\n\t * ];\n\t *\n\t * // using the `_.matches` callback shorthand\n\t * _.pluck(_.filter(users, { 'age': 36, 'active': true }), 'user');\n\t * // => ['barney']\n\t *\n\t * // using the `_.matchesProperty` callback shorthand\n\t * _.pluck(_.filter(users, 'active', false), 'user');\n\t * // => ['fred']\n\t *\n\t * // using the `_.property` callback shorthand\n\t * _.pluck(_.filter(users, 'active'), 'user');\n\t * // => ['barney']\n\t */\n\t function filter(collection, predicate, thisArg) {\n\t var func = isArray(collection) ? arrayFilter : baseFilter;\n\t predicate = getCallback(predicate, thisArg, 3);\n\t return func(collection, predicate);\n\t }\n\n\t /**\n\t * Iterates over elements of `collection`, returning the first element\n\t * `predicate` returns truthy for. The predicate is bound to `thisArg` and\n\t * invoked with three arguments: (value, index|key, collection).\n\t *\n\t * If a property name is provided for `predicate` the created `_.property`\n\t * style callback returns the property value of the given element.\n\t *\n\t * If a value is also provided for `thisArg` the created `_.matchesProperty`\n\t * style callback returns `true` for elements that have a matching property\n\t * value, else `false`.\n\t *\n\t * If an object is provided for `predicate` the created `_.matches` style\n\t * callback returns `true` for elements that have the properties of the given\n\t * object, else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @alias detect\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to search.\n\t * @param {Function|Object|string} [predicate=_.identity] The function invoked\n\t * per iteration.\n\t * @param {*} [thisArg] The `this` binding of `predicate`.\n\t * @returns {*} Returns the matched element, else `undefined`.\n\t * @example\n\t *\n\t * var users = [\n\t * { 'user': 'barney', 'age': 36, 'active': true },\n\t * { 'user': 'fred', 'age': 40, 'active': false },\n\t * { 'user': 'pebbles', 'age': 1, 'active': true }\n\t * ];\n\t *\n\t * _.result(_.find(users, function(chr) {\n\t * return chr.age < 40;\n\t * }), 'user');\n\t * // => 'barney'\n\t *\n\t * // using the `_.matches` callback shorthand\n\t * _.result(_.find(users, { 'age': 1, 'active': true }), 'user');\n\t * // => 'pebbles'\n\t *\n\t * // using the `_.matchesProperty` callback shorthand\n\t * _.result(_.find(users, 'active', false), 'user');\n\t * // => 'fred'\n\t *\n\t * // using the `_.property` callback shorthand\n\t * _.result(_.find(users, 'active'), 'user');\n\t * // => 'barney'\n\t */\n\t var find = createFind(baseEach);\n\n\t /**\n\t * This method is like `_.find` except that it iterates over elements of\n\t * `collection` from right to left.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to search.\n\t * @param {Function|Object|string} [predicate=_.identity] The function invoked\n\t * per iteration.\n\t * @param {*} [thisArg] The `this` binding of `predicate`.\n\t * @returns {*} Returns the matched element, else `undefined`.\n\t * @example\n\t *\n\t * _.findLast([1, 2, 3, 4], function(n) {\n\t * return n % 2 == 1;\n\t * });\n\t * // => 3\n\t */\n\t var findLast = createFind(baseEachRight, true);\n\n\t /**\n\t * Performs a deep comparison between each element in `collection` and the\n\t * source object, returning the first element that has equivalent property\n\t * values.\n\t *\n\t * **Note:** This method supports comparing arrays, booleans, `Date` objects,\n\t * numbers, `Object` objects, regexes, and strings. Objects are compared by\n\t * their own, not inherited, enumerable properties. For comparing a single\n\t * own or inherited property value see `_.matchesProperty`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to search.\n\t * @param {Object} source The object of property values to match.\n\t * @returns {*} Returns the matched element, else `undefined`.\n\t * @example\n\t *\n\t * var users = [\n\t * { 'user': 'barney', 'age': 36, 'active': true },\n\t * { 'user': 'fred', 'age': 40, 'active': false }\n\t * ];\n\t *\n\t * _.result(_.findWhere(users, { 'age': 36, 'active': true }), 'user');\n\t * // => 'barney'\n\t *\n\t * _.result(_.findWhere(users, { 'age': 40, 'active': false }), 'user');\n\t * // => 'fred'\n\t */\n\t function findWhere(collection, source) {\n\t return find(collection, baseMatches(source));\n\t }\n\n\t /**\n\t * Iterates over elements of `collection` invoking `iteratee` for each element.\n\t * The `iteratee` is bound to `thisArg` and invoked with three arguments:\n\t * (value, index|key, collection). Iteratee functions may exit iteration early\n\t * by explicitly returning `false`.\n\t *\n\t * **Note:** As with other \"Collections\" methods, objects with a \"length\" property\n\t * are iterated like arrays. To avoid this behavior `_.forIn` or `_.forOwn`\n\t * may be used for object iteration.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @alias each\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n\t * @param {*} [thisArg] The `this` binding of `iteratee`.\n\t * @returns {Array|Object|string} Returns `collection`.\n\t * @example\n\t *\n\t * _([1, 2]).forEach(function(n) {\n\t * console.log(n);\n\t * }).value();\n\t * // => logs each value from left to right and returns the array\n\t *\n\t * _.forEach({ 'a': 1, 'b': 2 }, function(n, key) {\n\t * console.log(n, key);\n\t * });\n\t * // => logs each value-key pair and returns the object (iteration order is not guaranteed)\n\t */\n\t var forEach = createForEach(arrayEach, baseEach);\n\n\t /**\n\t * This method is like `_.forEach` except that it iterates over elements of\n\t * `collection` from right to left.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @alias eachRight\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n\t * @param {*} [thisArg] The `this` binding of `iteratee`.\n\t * @returns {Array|Object|string} Returns `collection`.\n\t * @example\n\t *\n\t * _([1, 2]).forEachRight(function(n) {\n\t * console.log(n);\n\t * }).value();\n\t * // => logs each value from right to left and returns the array\n\t */\n\t var forEachRight = createForEach(arrayEachRight, baseEachRight);\n\n\t /**\n\t * Creates an object composed of keys generated from the results of running\n\t * each element of `collection` through `iteratee`. The corresponding value\n\t * of each key is an array of the elements responsible for generating the key.\n\t * The `iteratee` is bound to `thisArg` and invoked with three arguments:\n\t * (value, index|key, collection).\n\t *\n\t * If a property name is provided for `iteratee` the created `_.property`\n\t * style callback returns the property value of the given element.\n\t *\n\t * If a value is also provided for `thisArg` the created `_.matchesProperty`\n\t * style callback returns `true` for elements that have a matching property\n\t * value, else `false`.\n\t *\n\t * If an object is provided for `iteratee` the created `_.matches` style\n\t * callback returns `true` for elements that have the properties of the given\n\t * object, else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function|Object|string} [iteratee=_.identity] The function invoked\n\t * per iteration.\n\t * @param {*} [thisArg] The `this` binding of `iteratee`.\n\t * @returns {Object} Returns the composed aggregate object.\n\t * @example\n\t *\n\t * _.groupBy([4.2, 6.1, 6.4], function(n) {\n\t * return Math.floor(n);\n\t * });\n\t * // => { '4': [4.2], '6': [6.1, 6.4] }\n\t *\n\t * _.groupBy([4.2, 6.1, 6.4], function(n) {\n\t * return this.floor(n);\n\t * }, Math);\n\t * // => { '4': [4.2], '6': [6.1, 6.4] }\n\t *\n\t * // using the `_.property` callback shorthand\n\t * _.groupBy(['one', 'two', 'three'], 'length');\n\t * // => { '3': ['one', 'two'], '5': ['three'] }\n\t */\n\t var groupBy = createAggregator(function(result, value, key) {\n\t if (hasOwnProperty.call(result, key)) {\n\t result[key].push(value);\n\t } else {\n\t result[key] = [value];\n\t }\n\t });\n\n\t /**\n\t * Checks if `value` is in `collection` using\n\t * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n\t * for equality comparisons. If `fromIndex` is negative, it is used as the offset\n\t * from the end of `collection`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @alias contains, include\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to search.\n\t * @param {*} target The value to search for.\n\t * @param {number} [fromIndex=0] The index to search from.\n\t * @param- {Object} [guard] Enables use as a callback for functions like `_.reduce`.\n\t * @returns {boolean} Returns `true` if a matching element is found, else `false`.\n\t * @example\n\t *\n\t * _.includes([1, 2, 3], 1);\n\t * // => true\n\t *\n\t * _.includes([1, 2, 3], 1, 2);\n\t * // => false\n\t *\n\t * _.includes({ 'user': 'fred', 'age': 40 }, 'fred');\n\t * // => true\n\t *\n\t * _.includes('pebbles', 'eb');\n\t * // => true\n\t */\n\t function includes(collection, target, fromIndex, guard) {\n\t var length = collection ? getLength(collection) : 0;\n\t if (!isLength(length)) {\n\t collection = values(collection);\n\t length = collection.length;\n\t }\n\t if (typeof fromIndex != 'number' || (guard && isIterateeCall(target, fromIndex, guard))) {\n\t fromIndex = 0;\n\t } else {\n\t fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : (fromIndex || 0);\n\t }\n\t return (typeof collection == 'string' || !isArray(collection) && isString(collection))\n\t ? (fromIndex <= length && collection.indexOf(target, fromIndex) > -1)\n\t : (!!length && getIndexOf(collection, target, fromIndex) > -1);\n\t }\n\n\t /**\n\t * Creates an object composed of keys generated from the results of running\n\t * each element of `collection` through `iteratee`. The corresponding value\n\t * of each key is the last element responsible for generating the key. The\n\t * iteratee function is bound to `thisArg` and invoked with three arguments:\n\t * (value, index|key, collection).\n\t *\n\t * If a property name is provided for `iteratee` the created `_.property`\n\t * style callback returns the property value of the given element.\n\t *\n\t * If a value is also provided for `thisArg` the created `_.matchesProperty`\n\t * style callback returns `true` for elements that have a matching property\n\t * value, else `false`.\n\t *\n\t * If an object is provided for `iteratee` the created `_.matches` style\n\t * callback returns `true` for elements that have the properties of the given\n\t * object, else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function|Object|string} [iteratee=_.identity] The function invoked\n\t * per iteration.\n\t * @param {*} [thisArg] The `this` binding of `iteratee`.\n\t * @returns {Object} Returns the composed aggregate object.\n\t * @example\n\t *\n\t * var keyData = [\n\t * { 'dir': 'left', 'code': 97 },\n\t * { 'dir': 'right', 'code': 100 }\n\t * ];\n\t *\n\t * _.indexBy(keyData, 'dir');\n\t * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n\t *\n\t * _.indexBy(keyData, function(object) {\n\t * return String.fromCharCode(object.code);\n\t * });\n\t * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n\t *\n\t * _.indexBy(keyData, function(object) {\n\t * return this.fromCharCode(object.code);\n\t * }, String);\n\t * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n\t */\n\t var indexBy = createAggregator(function(result, value, key) {\n\t result[key] = value;\n\t });\n\n\t /**\n\t * Invokes the method at `path` of each element in `collection`, returning\n\t * an array of the results of each invoked method. Any additional arguments\n\t * are provided to each invoked method. If `methodName` is a function it is\n\t * invoked for, and `this` bound to, each element in `collection`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Array|Function|string} path The path of the method to invoke or\n\t * the function invoked per iteration.\n\t * @param {...*} [args] The arguments to invoke the method with.\n\t * @returns {Array} Returns the array of results.\n\t * @example\n\t *\n\t * _.invoke([[5, 1, 7], [3, 2, 1]], 'sort');\n\t * // => [[1, 5, 7], [1, 2, 3]]\n\t *\n\t * _.invoke([123, 456], String.prototype.split, '');\n\t * // => [['1', '2', '3'], ['4', '5', '6']]\n\t */\n\t var invoke = restParam(function(collection, path, args) {\n\t var index = -1,\n\t isFunc = typeof path == 'function',\n\t isProp = isKey(path),\n\t result = isArrayLike(collection) ? Array(collection.length) : [];\n\n\t baseEach(collection, function(value) {\n\t var func = isFunc ? path : ((isProp && value != null) ? value[path] : undefined);\n\t result[++index] = func ? func.apply(value, args) : invokePath(value, path, args);\n\t });\n\t return result;\n\t });\n\n\t /**\n\t * Creates an array of values by running each element in `collection` through\n\t * `iteratee`. The `iteratee` is bound to `thisArg` and invoked with three\n\t * arguments: (value, index|key, collection).\n\t *\n\t * If a property name is provided for `iteratee` the created `_.property`\n\t * style callback returns the property value of the given element.\n\t *\n\t * If a value is also provided for `thisArg` the created `_.matchesProperty`\n\t * style callback returns `true` for elements that have a matching property\n\t * value, else `false`.\n\t *\n\t * If an object is provided for `iteratee` the created `_.matches` style\n\t * callback returns `true` for elements that have the properties of the given\n\t * object, else `false`.\n\t *\n\t * Many lodash methods are guarded to work as iteratees for methods like\n\t * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n\t *\n\t * The guarded methods are:\n\t * `ary`, `callback`, `chunk`, `clone`, `create`, `curry`, `curryRight`,\n\t * `drop`, `dropRight`, `every`, `fill`, `flatten`, `invert`, `max`, `min`,\n\t * `parseInt`, `slice`, `sortBy`, `take`, `takeRight`, `template`, `trim`,\n\t * `trimLeft`, `trimRight`, `trunc`, `random`, `range`, `sample`, `some`,\n\t * `sum`, `uniq`, and `words`\n\t *\n\t * @static\n\t * @memberOf _\n\t * @alias collect\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function|Object|string} [iteratee=_.identity] The function invoked\n\t * per iteration.\n\t * @param {*} [thisArg] The `this` binding of `iteratee`.\n\t * @returns {Array} Returns the new mapped array.\n\t * @example\n\t *\n\t * function timesThree(n) {\n\t * return n * 3;\n\t * }\n\t *\n\t * _.map([1, 2], timesThree);\n\t * // => [3, 6]\n\t *\n\t * _.map({ 'a': 1, 'b': 2 }, timesThree);\n\t * // => [3, 6] (iteration order is not guaranteed)\n\t *\n\t * var users = [\n\t * { 'user': 'barney' },\n\t * { 'user': 'fred' }\n\t * ];\n\t *\n\t * // using the `_.property` callback shorthand\n\t * _.map(users, 'user');\n\t * // => ['barney', 'fred']\n\t */\n\t function map(collection, iteratee, thisArg) {\n\t var func = isArray(collection) ? arrayMap : baseMap;\n\t iteratee = getCallback(iteratee, thisArg, 3);\n\t return func(collection, iteratee);\n\t }\n\n\t /**\n\t * Creates an array of elements split into two groups, the first of which\n\t * contains elements `predicate` returns truthy for, while the second of which\n\t * contains elements `predicate` returns falsey for. The predicate is bound\n\t * to `thisArg` and invoked with three arguments: (value, index|key, collection).\n\t *\n\t * If a property name is provided for `predicate` the created `_.property`\n\t * style callback returns the property value of the given element.\n\t *\n\t * If a value is also provided for `thisArg` the created `_.matchesProperty`\n\t * style callback returns `true` for elements that have a matching property\n\t * value, else `false`.\n\t *\n\t * If an object is provided for `predicate` the created `_.matches` style\n\t * callback returns `true` for elements that have the properties of the given\n\t * object, else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function|Object|string} [predicate=_.identity] The function invoked\n\t * per iteration.\n\t * @param {*} [thisArg] The `this` binding of `predicate`.\n\t * @returns {Array} Returns the array of grouped elements.\n\t * @example\n\t *\n\t * _.partition([1, 2, 3], function(n) {\n\t * return n % 2;\n\t * });\n\t * // => [[1, 3], [2]]\n\t *\n\t * _.partition([1.2, 2.3, 3.4], function(n) {\n\t * return this.floor(n) % 2;\n\t * }, Math);\n\t * // => [[1.2, 3.4], [2.3]]\n\t *\n\t * var users = [\n\t * { 'user': 'barney', 'age': 36, 'active': false },\n\t * { 'user': 'fred', 'age': 40, 'active': true },\n\t * { 'user': 'pebbles', 'age': 1, 'active': false }\n\t * ];\n\t *\n\t * var mapper = function(array) {\n\t * return _.pluck(array, 'user');\n\t * };\n\t *\n\t * // using the `_.matches` callback shorthand\n\t * _.map(_.partition(users, { 'age': 1, 'active': false }), mapper);\n\t * // => [['pebbles'], ['barney', 'fred']]\n\t *\n\t * // using the `_.matchesProperty` callback shorthand\n\t * _.map(_.partition(users, 'active', false), mapper);\n\t * // => [['barney', 'pebbles'], ['fred']]\n\t *\n\t * // using the `_.property` callback shorthand\n\t * _.map(_.partition(users, 'active'), mapper);\n\t * // => [['fred'], ['barney', 'pebbles']]\n\t */\n\t var partition = createAggregator(function(result, value, key) {\n\t result[key ? 0 : 1].push(value);\n\t }, function() { return [[], []]; });\n\n\t /**\n\t * Gets the property value of `path` from all elements in `collection`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Array|string} path The path of the property to pluck.\n\t * @returns {Array} Returns the property values.\n\t * @example\n\t *\n\t * var users = [\n\t * { 'user': 'barney', 'age': 36 },\n\t * { 'user': 'fred', 'age': 40 }\n\t * ];\n\t *\n\t * _.pluck(users, 'user');\n\t * // => ['barney', 'fred']\n\t *\n\t * var userIndex = _.indexBy(users, 'user');\n\t * _.pluck(userIndex, 'age');\n\t * // => [36, 40] (iteration order is not guaranteed)\n\t */\n\t function pluck(collection, path) {\n\t return map(collection, property(path));\n\t }\n\n\t /**\n\t * Reduces `collection` to a value which is the accumulated result of running\n\t * each element in `collection` through `iteratee`, where each successive\n\t * invocation is supplied the return value of the previous. If `accumulator`\n\t * is not provided the first element of `collection` is used as the initial\n\t * value. The `iteratee` is bound to `thisArg` and invoked with four arguments:\n\t * (accumulator, value, index|key, collection).\n\t *\n\t * Many lodash methods are guarded to work as iteratees for methods like\n\t * `_.reduce`, `_.reduceRight`, and `_.transform`.\n\t *\n\t * The guarded methods are:\n\t * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `sortByAll`,\n\t * and `sortByOrder`\n\t *\n\t * @static\n\t * @memberOf _\n\t * @alias foldl, inject\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n\t * @param {*} [accumulator] The initial value.\n\t * @param {*} [thisArg] The `this` binding of `iteratee`.\n\t * @returns {*} Returns the accumulated value.\n\t * @example\n\t *\n\t * _.reduce([1, 2], function(total, n) {\n\t * return total + n;\n\t * });\n\t * // => 3\n\t *\n\t * _.reduce({ 'a': 1, 'b': 2 }, function(result, n, key) {\n\t * result[key] = n * 3;\n\t * return result;\n\t * }, {});\n\t * // => { 'a': 3, 'b': 6 } (iteration order is not guaranteed)\n\t */\n\t var reduce = createReduce(arrayReduce, baseEach);\n\n\t /**\n\t * This method is like `_.reduce` except that it iterates over elements of\n\t * `collection` from right to left.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @alias foldr\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n\t * @param {*} [accumulator] The initial value.\n\t * @param {*} [thisArg] The `this` binding of `iteratee`.\n\t * @returns {*} Returns the accumulated value.\n\t * @example\n\t *\n\t * var array = [[0, 1], [2, 3], [4, 5]];\n\t *\n\t * _.reduceRight(array, function(flattened, other) {\n\t * return flattened.concat(other);\n\t * }, []);\n\t * // => [4, 5, 2, 3, 0, 1]\n\t */\n\t var reduceRight = createReduce(arrayReduceRight, baseEachRight);\n\n\t /**\n\t * The opposite of `_.filter`; this method returns the elements of `collection`\n\t * that `predicate` does **not** return truthy for.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function|Object|string} [predicate=_.identity] The function invoked\n\t * per iteration.\n\t * @param {*} [thisArg] The `this` binding of `predicate`.\n\t * @returns {Array} Returns the new filtered array.\n\t * @example\n\t *\n\t * _.reject([1, 2, 3, 4], function(n) {\n\t * return n % 2 == 0;\n\t * });\n\t * // => [1, 3]\n\t *\n\t * var users = [\n\t * { 'user': 'barney', 'age': 36, 'active': false },\n\t * { 'user': 'fred', 'age': 40, 'active': true }\n\t * ];\n\t *\n\t * // using the `_.matches` callback shorthand\n\t * _.pluck(_.reject(users, { 'age': 40, 'active': true }), 'user');\n\t * // => ['barney']\n\t *\n\t * // using the `_.matchesProperty` callback shorthand\n\t * _.pluck(_.reject(users, 'active', false), 'user');\n\t * // => ['fred']\n\t *\n\t * // using the `_.property` callback shorthand\n\t * _.pluck(_.reject(users, 'active'), 'user');\n\t * // => ['barney']\n\t */\n\t function reject(collection, predicate, thisArg) {\n\t var func = isArray(collection) ? arrayFilter : baseFilter;\n\t predicate = getCallback(predicate, thisArg, 3);\n\t return func(collection, function(value, index, collection) {\n\t return !predicate(value, index, collection);\n\t });\n\t }\n\n\t /**\n\t * Gets a random element or `n` random elements from a collection.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to sample.\n\t * @param {number} [n] The number of elements to sample.\n\t * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.\n\t * @returns {*} Returns the random sample(s).\n\t * @example\n\t *\n\t * _.sample([1, 2, 3, 4]);\n\t * // => 2\n\t *\n\t * _.sample([1, 2, 3, 4], 2);\n\t * // => [3, 1]\n\t */\n\t function sample(collection, n, guard) {\n\t if (guard ? isIterateeCall(collection, n, guard) : n == null) {\n\t collection = toIterable(collection);\n\t var length = collection.length;\n\t return length > 0 ? collection[baseRandom(0, length - 1)] : undefined;\n\t }\n\t var index = -1,\n\t result = toArray(collection),\n\t length = result.length,\n\t lastIndex = length - 1;\n\n\t n = nativeMin(n < 0 ? 0 : (+n || 0), length);\n\t while (++index < n) {\n\t var rand = baseRandom(index, lastIndex),\n\t value = result[rand];\n\n\t result[rand] = result[index];\n\t result[index] = value;\n\t }\n\t result.length = n;\n\t return result;\n\t }\n\n\t /**\n\t * Creates an array of shuffled values, using a version of the\n\t * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to shuffle.\n\t * @returns {Array} Returns the new shuffled array.\n\t * @example\n\t *\n\t * _.shuffle([1, 2, 3, 4]);\n\t * // => [4, 1, 3, 2]\n\t */\n\t function shuffle(collection) {\n\t return sample(collection, POSITIVE_INFINITY);\n\t }\n\n\t /**\n\t * Gets the size of `collection` by returning its length for array-like\n\t * values or the number of own enumerable properties for objects.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to inspect.\n\t * @returns {number} Returns the size of `collection`.\n\t * @example\n\t *\n\t * _.size([1, 2, 3]);\n\t * // => 3\n\t *\n\t * _.size({ 'a': 1, 'b': 2 });\n\t * // => 2\n\t *\n\t * _.size('pebbles');\n\t * // => 7\n\t */\n\t function size(collection) {\n\t var length = collection ? getLength(collection) : 0;\n\t return isLength(length) ? length : keys(collection).length;\n\t }\n\n\t /**\n\t * Checks if `predicate` returns truthy for **any** element of `collection`.\n\t * The function returns as soon as it finds a passing value and does not iterate\n\t * over the entire collection. The predicate is bound to `thisArg` and invoked\n\t * with three arguments: (value, index|key, collection).\n\t *\n\t * If a property name is provided for `predicate` the created `_.property`\n\t * style callback returns the property value of the given element.\n\t *\n\t * If a value is also provided for `thisArg` the created `_.matchesProperty`\n\t * style callback returns `true` for elements that have a matching property\n\t * value, else `false`.\n\t *\n\t * If an object is provided for `predicate` the created `_.matches` style\n\t * callback returns `true` for elements that have the properties of the given\n\t * object, else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @alias any\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function|Object|string} [predicate=_.identity] The function invoked\n\t * per iteration.\n\t * @param {*} [thisArg] The `this` binding of `predicate`.\n\t * @returns {boolean} Returns `true` if any element passes the predicate check,\n\t * else `false`.\n\t * @example\n\t *\n\t * _.some([null, 0, 'yes', false], Boolean);\n\t * // => true\n\t *\n\t * var users = [\n\t * { 'user': 'barney', 'active': true },\n\t * { 'user': 'fred', 'active': false }\n\t * ];\n\t *\n\t * // using the `_.matches` callback shorthand\n\t * _.some(users, { 'user': 'barney', 'active': false });\n\t * // => false\n\t *\n\t * // using the `_.matchesProperty` callback shorthand\n\t * _.some(users, 'active', false);\n\t * // => true\n\t *\n\t * // using the `_.property` callback shorthand\n\t * _.some(users, 'active');\n\t * // => true\n\t */\n\t function some(collection, predicate, thisArg) {\n\t var func = isArray(collection) ? arraySome : baseSome;\n\t if (thisArg && isIterateeCall(collection, predicate, thisArg)) {\n\t predicate = undefined;\n\t }\n\t if (typeof predicate != 'function' || thisArg !== undefined) {\n\t predicate = getCallback(predicate, thisArg, 3);\n\t }\n\t return func(collection, predicate);\n\t }\n\n\t /**\n\t * Creates an array of elements, sorted in ascending order by the results of\n\t * running each element in a collection through `iteratee`. This method performs\n\t * a stable sort, that is, it preserves the original sort order of equal elements.\n\t * The `iteratee` is bound to `thisArg` and invoked with three arguments:\n\t * (value, index|key, collection).\n\t *\n\t * If a property name is provided for `iteratee` the created `_.property`\n\t * style callback returns the property value of the given element.\n\t *\n\t * If a value is also provided for `thisArg` the created `_.matchesProperty`\n\t * style callback returns `true` for elements that have a matching property\n\t * value, else `false`.\n\t *\n\t * If an object is provided for `iteratee` the created `_.matches` style\n\t * callback returns `true` for elements that have the properties of the given\n\t * object, else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function|Object|string} [iteratee=_.identity] The function invoked\n\t * per iteration.\n\t * @param {*} [thisArg] The `this` binding of `iteratee`.\n\t * @returns {Array} Returns the new sorted array.\n\t * @example\n\t *\n\t * _.sortBy([1, 2, 3], function(n) {\n\t * return Math.sin(n);\n\t * });\n\t * // => [3, 1, 2]\n\t *\n\t * _.sortBy([1, 2, 3], function(n) {\n\t * return this.sin(n);\n\t * }, Math);\n\t * // => [3, 1, 2]\n\t *\n\t * var users = [\n\t * { 'user': 'fred' },\n\t * { 'user': 'pebbles' },\n\t * { 'user': 'barney' }\n\t * ];\n\t *\n\t * // using the `_.property` callback shorthand\n\t * _.pluck(_.sortBy(users, 'user'), 'user');\n\t * // => ['barney', 'fred', 'pebbles']\n\t */\n\t function sortBy(collection, iteratee, thisArg) {\n\t if (collection == null) {\n\t return [];\n\t }\n\t if (thisArg && isIterateeCall(collection, iteratee, thisArg)) {\n\t iteratee = undefined;\n\t }\n\t var index = -1;\n\t iteratee = getCallback(iteratee, thisArg, 3);\n\n\t var result = baseMap(collection, function(value, key, collection) {\n\t return { 'criteria': iteratee(value, key, collection), 'index': ++index, 'value': value };\n\t });\n\t return baseSortBy(result, compareAscending);\n\t }\n\n\t /**\n\t * This method is like `_.sortBy` except that it can sort by multiple iteratees\n\t * or property names.\n\t *\n\t * If a property name is provided for an iteratee the created `_.property`\n\t * style callback returns the property value of the given element.\n\t *\n\t * If an object is provided for an iteratee the created `_.matches` style\n\t * callback returns `true` for elements that have the properties of the given\n\t * object, else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {...(Function|Function[]|Object|Object[]|string|string[])} iteratees\n\t * The iteratees to sort by, specified as individual values or arrays of values.\n\t * @returns {Array} Returns the new sorted array.\n\t * @example\n\t *\n\t * var users = [\n\t * { 'user': 'fred', 'age': 48 },\n\t * { 'user': 'barney', 'age': 36 },\n\t * { 'user': 'fred', 'age': 42 },\n\t * { 'user': 'barney', 'age': 34 }\n\t * ];\n\t *\n\t * _.map(_.sortByAll(users, ['user', 'age']), _.values);\n\t * // => [['barney', 34], ['barney', 36], ['fred', 42], ['fred', 48]]\n\t *\n\t * _.map(_.sortByAll(users, 'user', function(chr) {\n\t * return Math.floor(chr.age / 10);\n\t * }), _.values);\n\t * // => [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 42]]\n\t */\n\t var sortByAll = restParam(function(collection, iteratees) {\n\t if (collection == null) {\n\t return [];\n\t }\n\t var guard = iteratees[2];\n\t if (guard && isIterateeCall(iteratees[0], iteratees[1], guard)) {\n\t iteratees.length = 1;\n\t }\n\t return baseSortByOrder(collection, baseFlatten(iteratees), []);\n\t });\n\n\t /**\n\t * This method is like `_.sortByAll` except that it allows specifying the\n\t * sort orders of the iteratees to sort by. If `orders` is unspecified, all\n\t * values are sorted in ascending order. Otherwise, a value is sorted in\n\t * ascending order if its corresponding order is \"asc\", and descending if \"desc\".\n\t *\n\t * If a property name is provided for an iteratee the created `_.property`\n\t * style callback returns the property value of the given element.\n\t *\n\t * If an object is provided for an iteratee the created `_.matches` style\n\t * callback returns `true` for elements that have the properties of the given\n\t * object, else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n\t * @param {boolean[]} [orders] The sort orders of `iteratees`.\n\t * @param- {Object} [guard] Enables use as a callback for functions like `_.reduce`.\n\t * @returns {Array} Returns the new sorted array.\n\t * @example\n\t *\n\t * var users = [\n\t * { 'user': 'fred', 'age': 48 },\n\t * { 'user': 'barney', 'age': 34 },\n\t * { 'user': 'fred', 'age': 42 },\n\t * { 'user': 'barney', 'age': 36 }\n\t * ];\n\t *\n\t * // sort by `user` in ascending order and by `age` in descending order\n\t * _.map(_.sortByOrder(users, ['user', 'age'], ['asc', 'desc']), _.values);\n\t * // => [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 42]]\n\t */\n\t function sortByOrder(collection, iteratees, orders, guard) {\n\t if (collection == null) {\n\t return [];\n\t }\n\t if (guard && isIterateeCall(iteratees, orders, guard)) {\n\t orders = undefined;\n\t }\n\t if (!isArray(iteratees)) {\n\t iteratees = iteratees == null ? [] : [iteratees];\n\t }\n\t if (!isArray(orders)) {\n\t orders = orders == null ? [] : [orders];\n\t }\n\t return baseSortByOrder(collection, iteratees, orders);\n\t }\n\n\t /**\n\t * Performs a deep comparison between each element in `collection` and the\n\t * source object, returning an array of all elements that have equivalent\n\t * property values.\n\t *\n\t * **Note:** This method supports comparing arrays, booleans, `Date` objects,\n\t * numbers, `Object` objects, regexes, and strings. Objects are compared by\n\t * their own, not inherited, enumerable properties. For comparing a single\n\t * own or inherited property value see `_.matchesProperty`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to search.\n\t * @param {Object} source The object of property values to match.\n\t * @returns {Array} Returns the new filtered array.\n\t * @example\n\t *\n\t * var users = [\n\t * { 'user': 'barney', 'age': 36, 'active': false, 'pets': ['hoppy'] },\n\t * { 'user': 'fred', 'age': 40, 'active': true, 'pets': ['baby puss', 'dino'] }\n\t * ];\n\t *\n\t * _.pluck(_.where(users, { 'age': 36, 'active': false }), 'user');\n\t * // => ['barney']\n\t *\n\t * _.pluck(_.where(users, { 'pets': ['dino'] }), 'user');\n\t * // => ['fred']\n\t */\n\t function where(collection, source) {\n\t return filter(collection, baseMatches(source));\n\t }\n\n\t /*------------------------------------------------------------------------*/\n\n\t /**\n\t * Gets the number of milliseconds that have elapsed since the Unix epoch\n\t * (1 January 1970 00:00:00 UTC).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Date\n\t * @example\n\t *\n\t * _.defer(function(stamp) {\n\t * console.log(_.now() - stamp);\n\t * }, _.now());\n\t * // => logs the number of milliseconds it took for the deferred function to be invoked\n\t */\n\t var now = nativeNow || function() {\n\t return new Date().getTime();\n\t };\n\n\t /*------------------------------------------------------------------------*/\n\n\t /**\n\t * The opposite of `_.before`; this method creates a function that invokes\n\t * `func` once it is called `n` or more times.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Function\n\t * @param {number} n The number of calls before `func` is invoked.\n\t * @param {Function} func The function to restrict.\n\t * @returns {Function} Returns the new restricted function.\n\t * @example\n\t *\n\t * var saves = ['profile', 'settings'];\n\t *\n\t * var done = _.after(saves.length, function() {\n\t * console.log('done saving!');\n\t * });\n\t *\n\t * _.forEach(saves, function(type) {\n\t * asyncSave({ 'type': type, 'complete': done });\n\t * });\n\t * // => logs 'done saving!' after the two async saves have completed\n\t */\n\t function after(n, func) {\n\t if (typeof func != 'function') {\n\t if (typeof n == 'function') {\n\t var temp = n;\n\t n = func;\n\t func = temp;\n\t } else {\n\t throw new TypeError(FUNC_ERROR_TEXT);\n\t }\n\t }\n\t n = nativeIsFinite(n = +n) ? n : 0;\n\t return function() {\n\t if (--n < 1) {\n\t return func.apply(this, arguments);\n\t }\n\t };\n\t }\n\n\t /**\n\t * Creates a function that accepts up to `n` arguments ignoring any\n\t * additional arguments.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Function\n\t * @param {Function} func The function to cap arguments for.\n\t * @param {number} [n=func.length] The arity cap.\n\t * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.\n\t * @returns {Function} Returns the new function.\n\t * @example\n\t *\n\t * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n\t * // => [6, 8, 10]\n\t */\n\t function ary(func, n, guard) {\n\t if (guard && isIterateeCall(func, n, guard)) {\n\t n = undefined;\n\t }\n\t n = (func && n == null) ? func.length : nativeMax(+n || 0, 0);\n\t return createWrapper(func, ARY_FLAG, undefined, undefined, undefined, undefined, n);\n\t }\n\n\t /**\n\t * Creates a function that invokes `func`, with the `this` binding and arguments\n\t * of the created function, while it is called less than `n` times. Subsequent\n\t * calls to the created function return the result of the last `func` invocation.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Function\n\t * @param {number} n The number of calls at which `func` is no longer invoked.\n\t * @param {Function} func The function to restrict.\n\t * @returns {Function} Returns the new restricted function.\n\t * @example\n\t *\n\t * jQuery('#add').on('click', _.before(5, addContactToList));\n\t * // => allows adding up to 4 contacts to the list\n\t */\n\t function before(n, func) {\n\t var result;\n\t if (typeof func != 'function') {\n\t if (typeof n == 'function') {\n\t var temp = n;\n\t n = func;\n\t func = temp;\n\t } else {\n\t throw new TypeError(FUNC_ERROR_TEXT);\n\t }\n\t }\n\t return function() {\n\t if (--n > 0) {\n\t result = func.apply(this, arguments);\n\t }\n\t if (n <= 1) {\n\t func = undefined;\n\t }\n\t return result;\n\t };\n\t }\n\n\t /**\n\t * Creates a function that invokes `func` with the `this` binding of `thisArg`\n\t * and prepends any additional `_.bind` arguments to those provided to the\n\t * bound function.\n\t *\n\t * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n\t * may be used as a placeholder for partially applied arguments.\n\t *\n\t * **Note:** Unlike native `Function#bind` this method does not set the \"length\"\n\t * property of bound functions.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Function\n\t * @param {Function} func The function to bind.\n\t * @param {*} thisArg The `this` binding of `func`.\n\t * @param {...*} [partials] The arguments to be partially applied.\n\t * @returns {Function} Returns the new bound function.\n\t * @example\n\t *\n\t * var greet = function(greeting, punctuation) {\n\t * return greeting + ' ' + this.user + punctuation;\n\t * };\n\t *\n\t * var object = { 'user': 'fred' };\n\t *\n\t * var bound = _.bind(greet, object, 'hi');\n\t * bound('!');\n\t * // => 'hi fred!'\n\t *\n\t * // using placeholders\n\t * var bound = _.bind(greet, object, _, '!');\n\t * bound('hi');\n\t * // => 'hi fred!'\n\t */\n\t var bind = restParam(function(func, thisArg, partials) {\n\t var bitmask = BIND_FLAG;\n\t if (partials.length) {\n\t var holders = replaceHolders(partials, bind.placeholder);\n\t bitmask |= PARTIAL_FLAG;\n\t }\n\t return createWrapper(func, bitmask, thisArg, partials, holders);\n\t });\n\n\t /**\n\t * Binds methods of an object to the object itself, overwriting the existing\n\t * method. Method names may be specified as individual arguments or as arrays\n\t * of method names. If no method names are provided all enumerable function\n\t * properties, own and inherited, of `object` are bound.\n\t *\n\t * **Note:** This method does not set the \"length\" property of bound functions.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Function\n\t * @param {Object} object The object to bind and assign the bound methods to.\n\t * @param {...(string|string[])} [methodNames] The object method names to bind,\n\t * specified as individual method names or arrays of method names.\n\t * @returns {Object} Returns `object`.\n\t * @example\n\t *\n\t * var view = {\n\t * 'label': 'docs',\n\t * 'onClick': function() {\n\t * console.log('clicked ' + this.label);\n\t * }\n\t * };\n\t *\n\t * _.bindAll(view);\n\t * jQuery('#docs').on('click', view.onClick);\n\t * // => logs 'clicked docs' when the element is clicked\n\t */\n\t var bindAll = restParam(function(object, methodNames) {\n\t methodNames = methodNames.length ? baseFlatten(methodNames) : functions(object);\n\n\t var index = -1,\n\t length = methodNames.length;\n\n\t while (++index < length) {\n\t var key = methodNames[index];\n\t object[key] = createWrapper(object[key], BIND_FLAG, object);\n\t }\n\t return object;\n\t });\n\n\t /**\n\t * Creates a function that invokes the method at `object[key]` and prepends\n\t * any additional `_.bindKey` arguments to those provided to the bound function.\n\t *\n\t * This method differs from `_.bind` by allowing bound functions to reference\n\t * methods that may be redefined or don't yet exist.\n\t * See [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n\t * for more details.\n\t *\n\t * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n\t * builds, may be used as a placeholder for partially applied arguments.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Function\n\t * @param {Object} object The object the method belongs to.\n\t * @param {string} key The key of the method.\n\t * @param {...*} [partials] The arguments to be partially applied.\n\t * @returns {Function} Returns the new bound function.\n\t * @example\n\t *\n\t * var object = {\n\t * 'user': 'fred',\n\t * 'greet': function(greeting, punctuation) {\n\t * return greeting + ' ' + this.user + punctuation;\n\t * }\n\t * };\n\t *\n\t * var bound = _.bindKey(object, 'greet', 'hi');\n\t * bound('!');\n\t * // => 'hi fred!'\n\t *\n\t * object.greet = function(greeting, punctuation) {\n\t * return greeting + 'ya ' + this.user + punctuation;\n\t * };\n\t *\n\t * bound('!');\n\t * // => 'hiya fred!'\n\t *\n\t * // using placeholders\n\t * var bound = _.bindKey(object, 'greet', _, '!');\n\t * bound('hi');\n\t * // => 'hiya fred!'\n\t */\n\t var bindKey = restParam(function(object, key, partials) {\n\t var bitmask = BIND_FLAG | BIND_KEY_FLAG;\n\t if (partials.length) {\n\t var holders = replaceHolders(partials, bindKey.placeholder);\n\t bitmask |= PARTIAL_FLAG;\n\t }\n\t return createWrapper(key, bitmask, object, partials, holders);\n\t });\n\n\t /**\n\t * Creates a function that accepts one or more arguments of `func` that when\n\t * called either invokes `func` returning its result, if all `func` arguments\n\t * have been provided, or returns a function that accepts one or more of the\n\t * remaining `func` arguments, and so on. The arity of `func` may be specified\n\t * if `func.length` is not sufficient.\n\t *\n\t * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n\t * may be used as a placeholder for provided arguments.\n\t *\n\t * **Note:** This method does not set the \"length\" property of curried functions.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Function\n\t * @param {Function} func The function to curry.\n\t * @param {number} [arity=func.length] The arity of `func`.\n\t * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.\n\t * @returns {Function} Returns the new curried function.\n\t * @example\n\t *\n\t * var abc = function(a, b, c) {\n\t * return [a, b, c];\n\t * };\n\t *\n\t * var curried = _.curry(abc);\n\t *\n\t * curried(1)(2)(3);\n\t * // => [1, 2, 3]\n\t *\n\t * curried(1, 2)(3);\n\t * // => [1, 2, 3]\n\t *\n\t * curried(1, 2, 3);\n\t * // => [1, 2, 3]\n\t *\n\t * // using placeholders\n\t * curried(1)(_, 3)(2);\n\t * // => [1, 2, 3]\n\t */\n\t var curry = createCurry(CURRY_FLAG);\n\n\t /**\n\t * This method is like `_.curry` except that arguments are applied to `func`\n\t * in the manner of `_.partialRight` instead of `_.partial`.\n\t *\n\t * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n\t * builds, may be used as a placeholder for provided arguments.\n\t *\n\t * **Note:** This method does not set the \"length\" property of curried functions.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Function\n\t * @param {Function} func The function to curry.\n\t * @param {number} [arity=func.length] The arity of `func`.\n\t * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.\n\t * @returns {Function} Returns the new curried function.\n\t * @example\n\t *\n\t * var abc = function(a, b, c) {\n\t * return [a, b, c];\n\t * };\n\t *\n\t * var curried = _.curryRight(abc);\n\t *\n\t * curried(3)(2)(1);\n\t * // => [1, 2, 3]\n\t *\n\t * curried(2, 3)(1);\n\t * // => [1, 2, 3]\n\t *\n\t * curried(1, 2, 3);\n\t * // => [1, 2, 3]\n\t *\n\t * // using placeholders\n\t * curried(3)(1, _)(2);\n\t * // => [1, 2, 3]\n\t */\n\t var curryRight = createCurry(CURRY_RIGHT_FLAG);\n\n\t /**\n\t * Creates a debounced function that delays invoking `func` until after `wait`\n\t * milliseconds have elapsed since the last time the debounced function was\n\t * invoked. The debounced function comes with a `cancel` method to cancel\n\t * delayed invocations. Provide an options object to indicate that `func`\n\t * should be invoked on the leading and/or trailing edge of the `wait` timeout.\n\t * Subsequent calls to the debounced function return the result of the last\n\t * `func` invocation.\n\t *\n\t * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked\n\t * on the trailing edge of the timeout only if the the debounced function is\n\t * invoked more than once during the `wait` timeout.\n\t *\n\t * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation)\n\t * for details over the differences between `_.debounce` and `_.throttle`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Function\n\t * @param {Function} func The function to debounce.\n\t * @param {number} [wait=0] The number of milliseconds to delay.\n\t * @param {Object} [options] The options object.\n\t * @param {boolean} [options.leading=false] Specify invoking on the leading\n\t * edge of the timeout.\n\t * @param {number} [options.maxWait] The maximum time `func` is allowed to be\n\t * delayed before it is invoked.\n\t * @param {boolean} [options.trailing=true] Specify invoking on the trailing\n\t * edge of the timeout.\n\t * @returns {Function} Returns the new debounced function.\n\t * @example\n\t *\n\t * // avoid costly calculations while the window size is in flux\n\t * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n\t *\n\t * // invoke `sendMail` when the click event is fired, debouncing subsequent calls\n\t * jQuery('#postbox').on('click', _.debounce(sendMail, 300, {\n\t * 'leading': true,\n\t * 'trailing': false\n\t * }));\n\t *\n\t * // ensure `batchLog` is invoked once after 1 second of debounced calls\n\t * var source = new EventSource('/stream');\n\t * jQuery(source).on('message', _.debounce(batchLog, 250, {\n\t * 'maxWait': 1000\n\t * }));\n\t *\n\t * // cancel a debounced call\n\t * var todoChanges = _.debounce(batchLog, 1000);\n\t * Object.observe(models.todo, todoChanges);\n\t *\n\t * Object.observe(models, function(changes) {\n\t * if (_.find(changes, { 'user': 'todo', 'type': 'delete'})) {\n\t * todoChanges.cancel();\n\t * }\n\t * }, ['delete']);\n\t *\n\t * // ...at some point `models.todo` is changed\n\t * models.todo.completed = true;\n\t *\n\t * // ...before 1 second has passed `models.todo` is deleted\n\t * // which cancels the debounced `todoChanges` call\n\t * delete models.todo;\n\t */\n\t function debounce(func, wait, options) {\n\t var args,\n\t maxTimeoutId,\n\t result,\n\t stamp,\n\t thisArg,\n\t timeoutId,\n\t trailingCall,\n\t lastCalled = 0,\n\t maxWait = false,\n\t trailing = true;\n\n\t if (typeof func != 'function') {\n\t throw new TypeError(FUNC_ERROR_TEXT);\n\t }\n\t wait = wait < 0 ? 0 : (+wait || 0);\n\t if (options === true) {\n\t var leading = true;\n\t trailing = false;\n\t } else if (isObject(options)) {\n\t leading = !!options.leading;\n\t maxWait = 'maxWait' in options && nativeMax(+options.maxWait || 0, wait);\n\t trailing = 'trailing' in options ? !!options.trailing : trailing;\n\t }\n\n\t function cancel() {\n\t if (timeoutId) {\n\t clearTimeout(timeoutId);\n\t }\n\t if (maxTimeoutId) {\n\t clearTimeout(maxTimeoutId);\n\t }\n\t lastCalled = 0;\n\t maxTimeoutId = timeoutId = trailingCall = undefined;\n\t }\n\n\t function complete(isCalled, id) {\n\t if (id) {\n\t clearTimeout(id);\n\t }\n\t maxTimeoutId = timeoutId = trailingCall = undefined;\n\t if (isCalled) {\n\t lastCalled = now();\n\t result = func.apply(thisArg, args);\n\t if (!timeoutId && !maxTimeoutId) {\n\t args = thisArg = undefined;\n\t }\n\t }\n\t }\n\n\t function delayed() {\n\t var remaining = wait - (now() - stamp);\n\t if (remaining <= 0 || remaining > wait) {\n\t complete(trailingCall, maxTimeoutId);\n\t } else {\n\t timeoutId = setTimeout(delayed, remaining);\n\t }\n\t }\n\n\t function maxDelayed() {\n\t complete(trailing, timeoutId);\n\t }\n\n\t function debounced() {\n\t args = arguments;\n\t stamp = now();\n\t thisArg = this;\n\t trailingCall = trailing && (timeoutId || !leading);\n\n\t if (maxWait === false) {\n\t var leadingCall = leading && !timeoutId;\n\t } else {\n\t if (!maxTimeoutId && !leading) {\n\t lastCalled = stamp;\n\t }\n\t var remaining = maxWait - (stamp - lastCalled),\n\t isCalled = remaining <= 0 || remaining > maxWait;\n\n\t if (isCalled) {\n\t if (maxTimeoutId) {\n\t maxTimeoutId = clearTimeout(maxTimeoutId);\n\t }\n\t lastCalled = stamp;\n\t result = func.apply(thisArg, args);\n\t }\n\t else if (!maxTimeoutId) {\n\t maxTimeoutId = setTimeout(maxDelayed, remaining);\n\t }\n\t }\n\t if (isCalled && timeoutId) {\n\t timeoutId = clearTimeout(timeoutId);\n\t }\n\t else if (!timeoutId && wait !== maxWait) {\n\t timeoutId = setTimeout(delayed, wait);\n\t }\n\t if (leadingCall) {\n\t isCalled = true;\n\t result = func.apply(thisArg, args);\n\t }\n\t if (isCalled && !timeoutId && !maxTimeoutId) {\n\t args = thisArg = undefined;\n\t }\n\t return result;\n\t }\n\t debounced.cancel = cancel;\n\t return debounced;\n\t }\n\n\t /**\n\t * Defers invoking the `func` until the current call stack has cleared. Any\n\t * additional arguments are provided to `func` when it is invoked.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Function\n\t * @param {Function} func The function to defer.\n\t * @param {...*} [args] The arguments to invoke the function with.\n\t * @returns {number} Returns the timer id.\n\t * @example\n\t *\n\t * _.defer(function(text) {\n\t * console.log(text);\n\t * }, 'deferred');\n\t * // logs 'deferred' after one or more milliseconds\n\t */\n\t var defer = restParam(function(func, args) {\n\t return baseDelay(func, 1, args);\n\t });\n\n\t /**\n\t * Invokes `func` after `wait` milliseconds. Any additional arguments are\n\t * provided to `func` when it is invoked.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Function\n\t * @param {Function} func The function to delay.\n\t * @param {number} wait The number of milliseconds to delay invocation.\n\t * @param {...*} [args] The arguments to invoke the function with.\n\t * @returns {number} Returns the timer id.\n\t * @example\n\t *\n\t * _.delay(function(text) {\n\t * console.log(text);\n\t * }, 1000, 'later');\n\t * // => logs 'later' after one second\n\t */\n\t var delay = restParam(function(func, wait, args) {\n\t return baseDelay(func, wait, args);\n\t });\n\n\t /**\n\t * Creates a function that returns the result of invoking the provided\n\t * functions with the `this` binding of the created function, where each\n\t * successive invocation is supplied the return value of the previous.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Function\n\t * @param {...Function} [funcs] Functions to invoke.\n\t * @returns {Function} Returns the new function.\n\t * @example\n\t *\n\t * function square(n) {\n\t * return n * n;\n\t * }\n\t *\n\t * var addSquare = _.flow(_.add, square);\n\t * addSquare(1, 2);\n\t * // => 9\n\t */\n\t var flow = createFlow();\n\n\t /**\n\t * This method is like `_.flow` except that it creates a function that\n\t * invokes the provided functions from right to left.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @alias backflow, compose\n\t * @category Function\n\t * @param {...Function} [funcs] Functions to invoke.\n\t * @returns {Function} Returns the new function.\n\t * @example\n\t *\n\t * function square(n) {\n\t * return n * n;\n\t * }\n\t *\n\t * var addSquare = _.flowRight(square, _.add);\n\t * addSquare(1, 2);\n\t * // => 9\n\t */\n\t var flowRight = createFlow(true);\n\n\t /**\n\t * Creates a function that memoizes the result of `func`. If `resolver` is\n\t * provided it determines the cache key for storing the result based on the\n\t * arguments provided to the memoized function. By default, the first argument\n\t * provided to the memoized function is coerced to a string and used as the\n\t * cache key. The `func` is invoked with the `this` binding of the memoized\n\t * function.\n\t *\n\t * **Note:** The cache is exposed as the `cache` property on the memoized\n\t * function. Its creation may be customized by replacing the `_.memoize.Cache`\n\t * constructor with one whose instances implement the [`Map`](http://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-map-prototype-object)\n\t * method interface of `get`, `has`, and `set`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Function\n\t * @param {Function} func The function to have its output memoized.\n\t * @param {Function} [resolver] The function to resolve the cache key.\n\t * @returns {Function} Returns the new memoizing function.\n\t * @example\n\t *\n\t * var upperCase = _.memoize(function(string) {\n\t * return string.toUpperCase();\n\t * });\n\t *\n\t * upperCase('fred');\n\t * // => 'FRED'\n\t *\n\t * // modifying the result cache\n\t * upperCase.cache.set('fred', 'BARNEY');\n\t * upperCase('fred');\n\t * // => 'BARNEY'\n\t *\n\t * // replacing `_.memoize.Cache`\n\t * var object = { 'user': 'fred' };\n\t * var other = { 'user': 'barney' };\n\t * var identity = _.memoize(_.identity);\n\t *\n\t * identity(object);\n\t * // => { 'user': 'fred' }\n\t * identity(other);\n\t * // => { 'user': 'fred' }\n\t *\n\t * _.memoize.Cache = WeakMap;\n\t * var identity = _.memoize(_.identity);\n\t *\n\t * identity(object);\n\t * // => { 'user': 'fred' }\n\t * identity(other);\n\t * // => { 'user': 'barney' }\n\t */\n\t function memoize(func, resolver) {\n\t if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {\n\t throw new TypeError(FUNC_ERROR_TEXT);\n\t }\n\t var memoized = function() {\n\t var args = arguments,\n\t key = resolver ? resolver.apply(this, args) : args[0],\n\t cache = memoized.cache;\n\n\t if (cache.has(key)) {\n\t return cache.get(key);\n\t }\n\t var result = func.apply(this, args);\n\t memoized.cache = cache.set(key, result);\n\t return result;\n\t };\n\t memoized.cache = new memoize.Cache;\n\t return memoized;\n\t }\n\n\t /**\n\t * Creates a function that runs each argument through a corresponding\n\t * transform function.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Function\n\t * @param {Function} func The function to wrap.\n\t * @param {...(Function|Function[])} [transforms] The functions to transform\n\t * arguments, specified as individual functions or arrays of functions.\n\t * @returns {Function} Returns the new function.\n\t * @example\n\t *\n\t * function doubled(n) {\n\t * return n * 2;\n\t * }\n\t *\n\t * function square(n) {\n\t * return n * n;\n\t * }\n\t *\n\t * var modded = _.modArgs(function(x, y) {\n\t * return [x, y];\n\t * }, square, doubled);\n\t *\n\t * modded(1, 2);\n\t * // => [1, 4]\n\t *\n\t * modded(5, 10);\n\t * // => [25, 20]\n\t */\n\t var modArgs = restParam(function(func, transforms) {\n\t transforms = baseFlatten(transforms);\n\t if (typeof func != 'function' || !arrayEvery(transforms, baseIsFunction)) {\n\t throw new TypeError(FUNC_ERROR_TEXT);\n\t }\n\t var length = transforms.length;\n\t return restParam(function(args) {\n\t var index = nativeMin(args.length, length);\n\t while (index--) {\n\t args[index] = transforms[index](args[index]);\n\t }\n\t return func.apply(this, args);\n\t });\n\t });\n\n\t /**\n\t * Creates a function that negates the result of the predicate `func`. The\n\t * `func` predicate is invoked with the `this` binding and arguments of the\n\t * created function.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Function\n\t * @param {Function} predicate The predicate to negate.\n\t * @returns {Function} Returns the new function.\n\t * @example\n\t *\n\t * function isEven(n) {\n\t * return n % 2 == 0;\n\t * }\n\t *\n\t * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n\t * // => [1, 3, 5]\n\t */\n\t function negate(predicate) {\n\t if (typeof predicate != 'function') {\n\t throw new TypeError(FUNC_ERROR_TEXT);\n\t }\n\t return function() {\n\t return !predicate.apply(this, arguments);\n\t };\n\t }\n\n\t /**\n\t * Creates a function that is restricted to invoking `func` once. Repeat calls\n\t * to the function return the value of the first call. The `func` is invoked\n\t * with the `this` binding and arguments of the created function.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Function\n\t * @param {Function} func The function to restrict.\n\t * @returns {Function} Returns the new restricted function.\n\t * @example\n\t *\n\t * var initialize = _.once(createApplication);\n\t * initialize();\n\t * initialize();\n\t * // `initialize` invokes `createApplication` once\n\t */\n\t function once(func) {\n\t return before(2, func);\n\t }\n\n\t /**\n\t * Creates a function that invokes `func` with `partial` arguments prepended\n\t * to those provided to the new function. This method is like `_.bind` except\n\t * it does **not** alter the `this` binding.\n\t *\n\t * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n\t * builds, may be used as a placeholder for partially applied arguments.\n\t *\n\t * **Note:** This method does not set the \"length\" property of partially\n\t * applied functions.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Function\n\t * @param {Function} func The function to partially apply arguments to.\n\t * @param {...*} [partials] The arguments to be partially applied.\n\t * @returns {Function} Returns the new partially applied function.\n\t * @example\n\t *\n\t * var greet = function(greeting, name) {\n\t * return greeting + ' ' + name;\n\t * };\n\t *\n\t * var sayHelloTo = _.partial(greet, 'hello');\n\t * sayHelloTo('fred');\n\t * // => 'hello fred'\n\t *\n\t * // using placeholders\n\t * var greetFred = _.partial(greet, _, 'fred');\n\t * greetFred('hi');\n\t * // => 'hi fred'\n\t */\n\t var partial = createPartial(PARTIAL_FLAG);\n\n\t /**\n\t * This method is like `_.partial` except that partially applied arguments\n\t * are appended to those provided to the new function.\n\t *\n\t * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n\t * builds, may be used as a placeholder for partially applied arguments.\n\t *\n\t * **Note:** This method does not set the \"length\" property of partially\n\t * applied functions.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Function\n\t * @param {Function} func The function to partially apply arguments to.\n\t * @param {...*} [partials] The arguments to be partially applied.\n\t * @returns {Function} Returns the new partially applied function.\n\t * @example\n\t *\n\t * var greet = function(greeting, name) {\n\t * return greeting + ' ' + name;\n\t * };\n\t *\n\t * var greetFred = _.partialRight(greet, 'fred');\n\t * greetFred('hi');\n\t * // => 'hi fred'\n\t *\n\t * // using placeholders\n\t * var sayHelloTo = _.partialRight(greet, 'hello', _);\n\t * sayHelloTo('fred');\n\t * // => 'hello fred'\n\t */\n\t var partialRight = createPartial(PARTIAL_RIGHT_FLAG);\n\n\t /**\n\t * Creates a function that invokes `func` with arguments arranged according\n\t * to the specified indexes where the argument value at the first index is\n\t * provided as the first argument, the argument value at the second index is\n\t * provided as the second argument, and so on.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Function\n\t * @param {Function} func The function to rearrange arguments for.\n\t * @param {...(number|number[])} indexes The arranged argument indexes,\n\t * specified as individual indexes or arrays of indexes.\n\t * @returns {Function} Returns the new function.\n\t * @example\n\t *\n\t * var rearged = _.rearg(function(a, b, c) {\n\t * return [a, b, c];\n\t * }, 2, 0, 1);\n\t *\n\t * rearged('b', 'c', 'a')\n\t * // => ['a', 'b', 'c']\n\t *\n\t * var map = _.rearg(_.map, [1, 0]);\n\t * map(function(n) {\n\t * return n * 3;\n\t * }, [1, 2, 3]);\n\t * // => [3, 6, 9]\n\t */\n\t var rearg = restParam(function(func, indexes) {\n\t return createWrapper(func, REARG_FLAG, undefined, undefined, undefined, baseFlatten(indexes));\n\t });\n\n\t /**\n\t * Creates a function that invokes `func` with the `this` binding of the\n\t * created function and arguments from `start` and beyond provided as an array.\n\t *\n\t * **Note:** This method is based on the [rest parameter](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/rest_parameters).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Function\n\t * @param {Function} func The function to apply a rest parameter to.\n\t * @param {number} [start=func.length-1] The start position of the rest parameter.\n\t * @returns {Function} Returns the new function.\n\t * @example\n\t *\n\t * var say = _.restParam(function(what, names) {\n\t * return what + ' ' + _.initial(names).join(', ') +\n\t * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n\t * });\n\t *\n\t * say('hello', 'fred', 'barney', 'pebbles');\n\t * // => 'hello fred, barney, & pebbles'\n\t */\n\t function restParam(func, start) {\n\t if (typeof func != 'function') {\n\t throw new TypeError(FUNC_ERROR_TEXT);\n\t }\n\t start = nativeMax(start === undefined ? (func.length - 1) : (+start || 0), 0);\n\t return function() {\n\t var args = arguments,\n\t index = -1,\n\t length = nativeMax(args.length - start, 0),\n\t rest = Array(length);\n\n\t while (++index < length) {\n\t rest[index] = args[start + index];\n\t }\n\t switch (start) {\n\t case 0: return func.call(this, rest);\n\t case 1: return func.call(this, args[0], rest);\n\t case 2: return func.call(this, args[0], args[1], rest);\n\t }\n\t var otherArgs = Array(start + 1);\n\t index = -1;\n\t while (++index < start) {\n\t otherArgs[index] = args[index];\n\t }\n\t otherArgs[start] = rest;\n\t return func.apply(this, otherArgs);\n\t };\n\t }\n\n\t /**\n\t * Creates a function that invokes `func` with the `this` binding of the created\n\t * function and an array of arguments much like [`Function#apply`](https://es5.github.io/#x15.3.4.3).\n\t *\n\t * **Note:** This method is based on the [spread operator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Function\n\t * @param {Function} func The function to spread arguments over.\n\t * @returns {Function} Returns the new function.\n\t * @example\n\t *\n\t * var say = _.spread(function(who, what) {\n\t * return who + ' says ' + what;\n\t * });\n\t *\n\t * say(['fred', 'hello']);\n\t * // => 'fred says hello'\n\t *\n\t * // with a Promise\n\t * var numbers = Promise.all([\n\t * Promise.resolve(40),\n\t * Promise.resolve(36)\n\t * ]);\n\t *\n\t * numbers.then(_.spread(function(x, y) {\n\t * return x + y;\n\t * }));\n\t * // => a Promise of 76\n\t */\n\t function spread(func) {\n\t if (typeof func != 'function') {\n\t throw new TypeError(FUNC_ERROR_TEXT);\n\t }\n\t return function(array) {\n\t return func.apply(this, array);\n\t };\n\t }\n\n\t /**\n\t * Creates a throttled function that only invokes `func` at most once per\n\t * every `wait` milliseconds. The throttled function comes with a `cancel`\n\t * method to cancel delayed invocations. Provide an options object to indicate\n\t * that `func` should be invoked on the leading and/or trailing edge of the\n\t * `wait` timeout. Subsequent calls to the throttled function return the\n\t * result of the last `func` call.\n\t *\n\t * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked\n\t * on the trailing edge of the timeout only if the the throttled function is\n\t * invoked more than once during the `wait` timeout.\n\t *\n\t * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation)\n\t * for details over the differences between `_.throttle` and `_.debounce`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Function\n\t * @param {Function} func The function to throttle.\n\t * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n\t * @param {Object} [options] The options object.\n\t * @param {boolean} [options.leading=true] Specify invoking on the leading\n\t * edge of the timeout.\n\t * @param {boolean} [options.trailing=true] Specify invoking on the trailing\n\t * edge of the timeout.\n\t * @returns {Function} Returns the new throttled function.\n\t * @example\n\t *\n\t * // avoid excessively updating the position while scrolling\n\t * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n\t *\n\t * // invoke `renewToken` when the click event is fired, but not more than once every 5 minutes\n\t * jQuery('.interactive').on('click', _.throttle(renewToken, 300000, {\n\t * 'trailing': false\n\t * }));\n\t *\n\t * // cancel a trailing throttled call\n\t * jQuery(window).on('popstate', throttled.cancel);\n\t */\n\t function throttle(func, wait, options) {\n\t var leading = true,\n\t trailing = true;\n\n\t if (typeof func != 'function') {\n\t throw new TypeError(FUNC_ERROR_TEXT);\n\t }\n\t if (options === false) {\n\t leading = false;\n\t } else if (isObject(options)) {\n\t leading = 'leading' in options ? !!options.leading : leading;\n\t trailing = 'trailing' in options ? !!options.trailing : trailing;\n\t }\n\t return debounce(func, wait, { 'leading': leading, 'maxWait': +wait, 'trailing': trailing });\n\t }\n\n\t /**\n\t * Creates a function that provides `value` to the wrapper function as its\n\t * first argument. Any additional arguments provided to the function are\n\t * appended to those provided to the wrapper function. The wrapper is invoked\n\t * with the `this` binding of the created function.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Function\n\t * @param {*} value The value to wrap.\n\t * @param {Function} wrapper The wrapper function.\n\t * @returns {Function} Returns the new function.\n\t * @example\n\t *\n\t * var p = _.wrap(_.escape, function(func, text) {\n\t * return '

' + func(text) + '

';\n\t * });\n\t *\n\t * p('fred, barney, & pebbles');\n\t * // => '

fred, barney, & pebbles

'\n\t */\n\t function wrap(value, wrapper) {\n\t wrapper = wrapper == null ? identity : wrapper;\n\t return createWrapper(wrapper, PARTIAL_FLAG, undefined, [value], []);\n\t }\n\n\t /*------------------------------------------------------------------------*/\n\n\t /**\n\t * Creates a clone of `value`. If `isDeep` is `true` nested objects are cloned,\n\t * otherwise they are assigned by reference. If `customizer` is provided it is\n\t * invoked to produce the cloned values. If `customizer` returns `undefined`\n\t * cloning is handled by the method instead. The `customizer` is bound to\n\t * `thisArg` and invoked with two argument; (value [, index|key, object]).\n\t *\n\t * **Note:** This method is loosely based on the\n\t * [structured clone algorithm](http://www.w3.org/TR/html5/infrastructure.html#internal-structured-cloning-algorithm).\n\t * The enumerable properties of `arguments` objects and objects created by\n\t * constructors other than `Object` are cloned to plain `Object` objects. An\n\t * empty object is returned for uncloneable values such as functions, DOM nodes,\n\t * Maps, Sets, and WeakMaps.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Lang\n\t * @param {*} value The value to clone.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @param {Function} [customizer] The function to customize cloning values.\n\t * @param {*} [thisArg] The `this` binding of `customizer`.\n\t * @returns {*} Returns the cloned value.\n\t * @example\n\t *\n\t * var users = [\n\t * { 'user': 'barney' },\n\t * { 'user': 'fred' }\n\t * ];\n\t *\n\t * var shallow = _.clone(users);\n\t * shallow[0] === users[0];\n\t * // => true\n\t *\n\t * var deep = _.clone(users, true);\n\t * deep[0] === users[0];\n\t * // => false\n\t *\n\t * // using a customizer callback\n\t * var el = _.clone(document.body, function(value) {\n\t * if (_.isElement(value)) {\n\t * return value.cloneNode(false);\n\t * }\n\t * });\n\t *\n\t * el === document.body\n\t * // => false\n\t * el.nodeName\n\t * // => BODY\n\t * el.childNodes.length;\n\t * // => 0\n\t */\n\t function clone(value, isDeep, customizer, thisArg) {\n\t if (isDeep && typeof isDeep != 'boolean' && isIterateeCall(value, isDeep, customizer)) {\n\t isDeep = false;\n\t }\n\t else if (typeof isDeep == 'function') {\n\t thisArg = customizer;\n\t customizer = isDeep;\n\t isDeep = false;\n\t }\n\t return typeof customizer == 'function'\n\t ? baseClone(value, isDeep, bindCallback(customizer, thisArg, 1))\n\t : baseClone(value, isDeep);\n\t }\n\n\t /**\n\t * Creates a deep clone of `value`. If `customizer` is provided it is invoked\n\t * to produce the cloned values. If `customizer` returns `undefined` cloning\n\t * is handled by the method instead. The `customizer` is bound to `thisArg`\n\t * and invoked with two argument; (value [, index|key, object]).\n\t *\n\t * **Note:** This method is loosely based on the\n\t * [structured clone algorithm](http://www.w3.org/TR/html5/infrastructure.html#internal-structured-cloning-algorithm).\n\t * The enumerable properties of `arguments` objects and objects created by\n\t * constructors other than `Object` are cloned to plain `Object` objects. An\n\t * empty object is returned for uncloneable values such as functions, DOM nodes,\n\t * Maps, Sets, and WeakMaps.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Lang\n\t * @param {*} value The value to deep clone.\n\t * @param {Function} [customizer] The function to customize cloning values.\n\t * @param {*} [thisArg] The `this` binding of `customizer`.\n\t * @returns {*} Returns the deep cloned value.\n\t * @example\n\t *\n\t * var users = [\n\t * { 'user': 'barney' },\n\t * { 'user': 'fred' }\n\t * ];\n\t *\n\t * var deep = _.cloneDeep(users);\n\t * deep[0] === users[0];\n\t * // => false\n\t *\n\t * // using a customizer callback\n\t * var el = _.cloneDeep(document.body, function(value) {\n\t * if (_.isElement(value)) {\n\t * return value.cloneNode(true);\n\t * }\n\t * });\n\t *\n\t * el === document.body\n\t * // => false\n\t * el.nodeName\n\t * // => BODY\n\t * el.childNodes.length;\n\t * // => 20\n\t */\n\t function cloneDeep(value, customizer, thisArg) {\n\t return typeof customizer == 'function'\n\t ? baseClone(value, true, bindCallback(customizer, thisArg, 1))\n\t : baseClone(value, true);\n\t }\n\n\t /**\n\t * Checks if `value` is greater than `other`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Lang\n\t * @param {*} value The value to compare.\n\t * @param {*} other The other value to compare.\n\t * @returns {boolean} Returns `true` if `value` is greater than `other`, else `false`.\n\t * @example\n\t *\n\t * _.gt(3, 1);\n\t * // => true\n\t *\n\t * _.gt(3, 3);\n\t * // => false\n\t *\n\t * _.gt(1, 3);\n\t * // => false\n\t */\n\t function gt(value, other) {\n\t return value > other;\n\t }\n\n\t /**\n\t * Checks if `value` is greater than or equal to `other`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Lang\n\t * @param {*} value The value to compare.\n\t * @param {*} other The other value to compare.\n\t * @returns {boolean} Returns `true` if `value` is greater than or equal to `other`, else `false`.\n\t * @example\n\t *\n\t * _.gte(3, 1);\n\t * // => true\n\t *\n\t * _.gte(3, 3);\n\t * // => true\n\t *\n\t * _.gte(1, 3);\n\t * // => false\n\t */\n\t function gte(value, other) {\n\t return value >= other;\n\t }\n\n\t /**\n\t * Checks if `value` is classified as an `arguments` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n\t * @example\n\t *\n\t * _.isArguments(function() { return arguments; }());\n\t * // => true\n\t *\n\t * _.isArguments([1, 2, 3]);\n\t * // => false\n\t */\n\t function isArguments(value) {\n\t return isObjectLike(value) && isArrayLike(value) &&\n\t hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee');\n\t }\n\n\t /**\n\t * Checks if `value` is classified as an `Array` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n\t * @example\n\t *\n\t * _.isArray([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isArray(function() { return arguments; }());\n\t * // => false\n\t */\n\t var isArray = nativeIsArray || function(value) {\n\t return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag;\n\t };\n\n\t /**\n\t * Checks if `value` is classified as a boolean primitive or object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n\t * @example\n\t *\n\t * _.isBoolean(false);\n\t * // => true\n\t *\n\t * _.isBoolean(null);\n\t * // => false\n\t */\n\t function isBoolean(value) {\n\t return value === true || value === false || (isObjectLike(value) && objToString.call(value) == boolTag);\n\t }\n\n\t /**\n\t * Checks if `value` is classified as a `Date` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n\t * @example\n\t *\n\t * _.isDate(new Date);\n\t * // => true\n\t *\n\t * _.isDate('Mon April 23 2012');\n\t * // => false\n\t */\n\t function isDate(value) {\n\t return isObjectLike(value) && objToString.call(value) == dateTag;\n\t }\n\n\t /**\n\t * Checks if `value` is a DOM element.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n\t * @example\n\t *\n\t * _.isElement(document.body);\n\t * // => true\n\t *\n\t * _.isElement('');\n\t * // => false\n\t */\n\t function isElement(value) {\n\t return !!value && value.nodeType === 1 && isObjectLike(value) && !isPlainObject(value);\n\t }\n\n\t /**\n\t * Checks if `value` is empty. A value is considered empty unless it is an\n\t * `arguments` object, array, string, or jQuery-like collection with a length\n\t * greater than `0` or an object with own enumerable properties.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Lang\n\t * @param {Array|Object|string} value The value to inspect.\n\t * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n\t * @example\n\t *\n\t * _.isEmpty(null);\n\t * // => true\n\t *\n\t * _.isEmpty(true);\n\t * // => true\n\t *\n\t * _.isEmpty(1);\n\t * // => true\n\t *\n\t * _.isEmpty([1, 2, 3]);\n\t * // => false\n\t *\n\t * _.isEmpty({ 'a': 1 });\n\t * // => false\n\t */\n\t function isEmpty(value) {\n\t if (value == null) {\n\t return true;\n\t }\n\t if (isArrayLike(value) && (isArray(value) || isString(value) || isArguments(value) ||\n\t (isObjectLike(value) && isFunction(value.splice)))) {\n\t return !value.length;\n\t }\n\t return !keys(value).length;\n\t }\n\n\t /**\n\t * Performs a deep comparison between two values to determine if they are\n\t * equivalent. If `customizer` is provided it is invoked to compare values.\n\t * If `customizer` returns `undefined` comparisons are handled by the method\n\t * instead. The `customizer` is bound to `thisArg` and invoked with three\n\t * arguments: (value, other [, index|key]).\n\t *\n\t * **Note:** This method supports comparing arrays, booleans, `Date` objects,\n\t * numbers, `Object` objects, regexes, and strings. Objects are compared by\n\t * their own, not inherited, enumerable properties. Functions and DOM nodes\n\t * are **not** supported. Provide a customizer function to extend support\n\t * for comparing other values.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @alias eq\n\t * @category Lang\n\t * @param {*} value The value to compare.\n\t * @param {*} other The other value to compare.\n\t * @param {Function} [customizer] The function to customize value comparisons.\n\t * @param {*} [thisArg] The `this` binding of `customizer`.\n\t * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n\t * @example\n\t *\n\t * var object = { 'user': 'fred' };\n\t * var other = { 'user': 'fred' };\n\t *\n\t * object == other;\n\t * // => false\n\t *\n\t * _.isEqual(object, other);\n\t * // => true\n\t *\n\t * // using a customizer callback\n\t * var array = ['hello', 'goodbye'];\n\t * var other = ['hi', 'goodbye'];\n\t *\n\t * _.isEqual(array, other, function(value, other) {\n\t * if (_.every([value, other], RegExp.prototype.test, /^h(?:i|ello)$/)) {\n\t * return true;\n\t * }\n\t * });\n\t * // => true\n\t */\n\t function isEqual(value, other, customizer, thisArg) {\n\t customizer = typeof customizer == 'function' ? bindCallback(customizer, thisArg, 3) : undefined;\n\t var result = customizer ? customizer(value, other) : undefined;\n\t return result === undefined ? baseIsEqual(value, other, customizer) : !!result;\n\t }\n\n\t /**\n\t * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n\t * `SyntaxError`, `TypeError`, or `URIError` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n\t * @example\n\t *\n\t * _.isError(new Error);\n\t * // => true\n\t *\n\t * _.isError(Error);\n\t * // => false\n\t */\n\t function isError(value) {\n\t return isObjectLike(value) && typeof value.message == 'string' && objToString.call(value) == errorTag;\n\t }\n\n\t /**\n\t * Checks if `value` is a finite primitive number.\n\t *\n\t * **Note:** This method is based on [`Number.isFinite`](http://ecma-international.org/ecma-262/6.0/#sec-number.isfinite).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n\t * @example\n\t *\n\t * _.isFinite(10);\n\t * // => true\n\t *\n\t * _.isFinite('10');\n\t * // => false\n\t *\n\t * _.isFinite(true);\n\t * // => false\n\t *\n\t * _.isFinite(Object(10));\n\t * // => false\n\t *\n\t * _.isFinite(Infinity);\n\t * // => false\n\t */\n\t function isFinite(value) {\n\t return typeof value == 'number' && nativeIsFinite(value);\n\t }\n\n\t /**\n\t * Checks if `value` is classified as a `Function` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n\t * @example\n\t *\n\t * _.isFunction(_);\n\t * // => true\n\t *\n\t * _.isFunction(/abc/);\n\t * // => false\n\t */\n\t function isFunction(value) {\n\t // The use of `Object#toString` avoids issues with the `typeof` operator\n\t // in older versions of Chrome and Safari which return 'function' for regexes\n\t // and Safari 8 equivalents which return 'object' for typed array constructors.\n\t return isObject(value) && objToString.call(value) == funcTag;\n\t }\n\n\t /**\n\t * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n\t * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n\t * @example\n\t *\n\t * _.isObject({});\n\t * // => true\n\t *\n\t * _.isObject([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isObject(1);\n\t * // => false\n\t */\n\t function isObject(value) {\n\t // Avoid a V8 JIT bug in Chrome 19-20.\n\t // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n\t var type = typeof value;\n\t return !!value && (type == 'object' || type == 'function');\n\t }\n\n\t /**\n\t * Performs a deep comparison between `object` and `source` to determine if\n\t * `object` contains equivalent property values. If `customizer` is provided\n\t * it is invoked to compare values. If `customizer` returns `undefined`\n\t * comparisons are handled by the method instead. The `customizer` is bound\n\t * to `thisArg` and invoked with three arguments: (value, other, index|key).\n\t *\n\t * **Note:** This method supports comparing properties of arrays, booleans,\n\t * `Date` objects, numbers, `Object` objects, regexes, and strings. Functions\n\t * and DOM nodes are **not** supported. Provide a customizer function to extend\n\t * support for comparing other values.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Lang\n\t * @param {Object} object The object to inspect.\n\t * @param {Object} source The object of property values to match.\n\t * @param {Function} [customizer] The function to customize value comparisons.\n\t * @param {*} [thisArg] The `this` binding of `customizer`.\n\t * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n\t * @example\n\t *\n\t * var object = { 'user': 'fred', 'age': 40 };\n\t *\n\t * _.isMatch(object, { 'age': 40 });\n\t * // => true\n\t *\n\t * _.isMatch(object, { 'age': 36 });\n\t * // => false\n\t *\n\t * // using a customizer callback\n\t * var object = { 'greeting': 'hello' };\n\t * var source = { 'greeting': 'hi' };\n\t *\n\t * _.isMatch(object, source, function(value, other) {\n\t * return _.every([value, other], RegExp.prototype.test, /^h(?:i|ello)$/) || undefined;\n\t * });\n\t * // => true\n\t */\n\t function isMatch(object, source, customizer, thisArg) {\n\t customizer = typeof customizer == 'function' ? bindCallback(customizer, thisArg, 3) : undefined;\n\t return baseIsMatch(object, getMatchData(source), customizer);\n\t }\n\n\t /**\n\t * Checks if `value` is `NaN`.\n\t *\n\t * **Note:** This method is not the same as [`isNaN`](https://es5.github.io/#x15.1.2.4)\n\t * which returns `true` for `undefined` and other non-numeric values.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n\t * @example\n\t *\n\t * _.isNaN(NaN);\n\t * // => true\n\t *\n\t * _.isNaN(new Number(NaN));\n\t * // => true\n\t *\n\t * isNaN(undefined);\n\t * // => true\n\t *\n\t * _.isNaN(undefined);\n\t * // => false\n\t */\n\t function isNaN(value) {\n\t // An `NaN` primitive is the only value that is not equal to itself.\n\t // Perform the `toStringTag` check first to avoid errors with some host objects in IE.\n\t return isNumber(value) && value != +value;\n\t }\n\n\t /**\n\t * Checks if `value` is a native function.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a native function, else `false`.\n\t * @example\n\t *\n\t * _.isNative(Array.prototype.push);\n\t * // => true\n\t *\n\t * _.isNative(_);\n\t * // => false\n\t */\n\t function isNative(value) {\n\t if (value == null) {\n\t return false;\n\t }\n\t if (isFunction(value)) {\n\t return reIsNative.test(fnToString.call(value));\n\t }\n\t return isObjectLike(value) && reIsHostCtor.test(value);\n\t }\n\n\t /**\n\t * Checks if `value` is `null`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n\t * @example\n\t *\n\t * _.isNull(null);\n\t * // => true\n\t *\n\t * _.isNull(void 0);\n\t * // => false\n\t */\n\t function isNull(value) {\n\t return value === null;\n\t }\n\n\t /**\n\t * Checks if `value` is classified as a `Number` primitive or object.\n\t *\n\t * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are classified\n\t * as numbers, use the `_.isFinite` method.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n\t * @example\n\t *\n\t * _.isNumber(8.4);\n\t * // => true\n\t *\n\t * _.isNumber(NaN);\n\t * // => true\n\t *\n\t * _.isNumber('8.4');\n\t * // => false\n\t */\n\t function isNumber(value) {\n\t return typeof value == 'number' || (isObjectLike(value) && objToString.call(value) == numberTag);\n\t }\n\n\t /**\n\t * Checks if `value` is a plain object, that is, an object created by the\n\t * `Object` constructor or one with a `[[Prototype]]` of `null`.\n\t *\n\t * **Note:** This method assumes objects created by the `Object` constructor\n\t * have no inherited enumerable properties.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n\t * @example\n\t *\n\t * function Foo() {\n\t * this.a = 1;\n\t * }\n\t *\n\t * _.isPlainObject(new Foo);\n\t * // => false\n\t *\n\t * _.isPlainObject([1, 2, 3]);\n\t * // => false\n\t *\n\t * _.isPlainObject({ 'x': 0, 'y': 0 });\n\t * // => true\n\t *\n\t * _.isPlainObject(Object.create(null));\n\t * // => true\n\t */\n\t function isPlainObject(value) {\n\t var Ctor;\n\n\t // Exit early for non `Object` objects.\n\t if (!(isObjectLike(value) && objToString.call(value) == objectTag && !isArguments(value)) ||\n\t (!hasOwnProperty.call(value, 'constructor') && (Ctor = value.constructor, typeof Ctor == 'function' && !(Ctor instanceof Ctor)))) {\n\t return false;\n\t }\n\t // IE < 9 iterates inherited properties before own properties. If the first\n\t // iterated property is an object's own property then there are no inherited\n\t // enumerable properties.\n\t var result;\n\t // In most environments an object's own properties are iterated before\n\t // its inherited properties. If the last iterated property is an object's\n\t // own property then there are no inherited enumerable properties.\n\t baseForIn(value, function(subValue, key) {\n\t result = key;\n\t });\n\t return result === undefined || hasOwnProperty.call(value, result);\n\t }\n\n\t /**\n\t * Checks if `value` is classified as a `RegExp` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n\t * @example\n\t *\n\t * _.isRegExp(/abc/);\n\t * // => true\n\t *\n\t * _.isRegExp('/abc/');\n\t * // => false\n\t */\n\t function isRegExp(value) {\n\t return isObject(value) && objToString.call(value) == regexpTag;\n\t }\n\n\t /**\n\t * Checks if `value` is classified as a `String` primitive or object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n\t * @example\n\t *\n\t * _.isString('abc');\n\t * // => true\n\t *\n\t * _.isString(1);\n\t * // => false\n\t */\n\t function isString(value) {\n\t return typeof value == 'string' || (isObjectLike(value) && objToString.call(value) == stringTag);\n\t }\n\n\t /**\n\t * Checks if `value` is classified as a typed array.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n\t * @example\n\t *\n\t * _.isTypedArray(new Uint8Array);\n\t * // => true\n\t *\n\t * _.isTypedArray([]);\n\t * // => false\n\t */\n\t function isTypedArray(value) {\n\t return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objToString.call(value)];\n\t }\n\n\t /**\n\t * Checks if `value` is `undefined`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n\t * @example\n\t *\n\t * _.isUndefined(void 0);\n\t * // => true\n\t *\n\t * _.isUndefined(null);\n\t * // => false\n\t */\n\t function isUndefined(value) {\n\t return value === undefined;\n\t }\n\n\t /**\n\t * Checks if `value` is less than `other`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Lang\n\t * @param {*} value The value to compare.\n\t * @param {*} other The other value to compare.\n\t * @returns {boolean} Returns `true` if `value` is less than `other`, else `false`.\n\t * @example\n\t *\n\t * _.lt(1, 3);\n\t * // => true\n\t *\n\t * _.lt(3, 3);\n\t * // => false\n\t *\n\t * _.lt(3, 1);\n\t * // => false\n\t */\n\t function lt(value, other) {\n\t return value < other;\n\t }\n\n\t /**\n\t * Checks if `value` is less than or equal to `other`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Lang\n\t * @param {*} value The value to compare.\n\t * @param {*} other The other value to compare.\n\t * @returns {boolean} Returns `true` if `value` is less than or equal to `other`, else `false`.\n\t * @example\n\t *\n\t * _.lte(1, 3);\n\t * // => true\n\t *\n\t * _.lte(3, 3);\n\t * // => true\n\t *\n\t * _.lte(3, 1);\n\t * // => false\n\t */\n\t function lte(value, other) {\n\t return value <= other;\n\t }\n\n\t /**\n\t * Converts `value` to an array.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Lang\n\t * @param {*} value The value to convert.\n\t * @returns {Array} Returns the converted array.\n\t * @example\n\t *\n\t * (function() {\n\t * return _.toArray(arguments).slice(1);\n\t * }(1, 2, 3));\n\t * // => [2, 3]\n\t */\n\t function toArray(value) {\n\t var length = value ? getLength(value) : 0;\n\t if (!isLength(length)) {\n\t return values(value);\n\t }\n\t if (!length) {\n\t return [];\n\t }\n\t return arrayCopy(value);\n\t }\n\n\t /**\n\t * Converts `value` to a plain object flattening inherited enumerable\n\t * properties of `value` to own properties of the plain object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Lang\n\t * @param {*} value The value to convert.\n\t * @returns {Object} Returns the converted plain object.\n\t * @example\n\t *\n\t * function Foo() {\n\t * this.b = 2;\n\t * }\n\t *\n\t * Foo.prototype.c = 3;\n\t *\n\t * _.assign({ 'a': 1 }, new Foo);\n\t * // => { 'a': 1, 'b': 2 }\n\t *\n\t * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n\t * // => { 'a': 1, 'b': 2, 'c': 3 }\n\t */\n\t function toPlainObject(value) {\n\t return baseCopy(value, keysIn(value));\n\t }\n\n\t /*------------------------------------------------------------------------*/\n\n\t /**\n\t * Recursively merges own enumerable properties of the source object(s), that\n\t * don't resolve to `undefined` into the destination object. Subsequent sources\n\t * overwrite property assignments of previous sources. If `customizer` is\n\t * provided it is invoked to produce the merged values of the destination and\n\t * source properties. If `customizer` returns `undefined` merging is handled\n\t * by the method instead. The `customizer` is bound to `thisArg` and invoked\n\t * with five arguments: (objectValue, sourceValue, key, object, source).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The destination object.\n\t * @param {...Object} [sources] The source objects.\n\t * @param {Function} [customizer] The function to customize assigned values.\n\t * @param {*} [thisArg] The `this` binding of `customizer`.\n\t * @returns {Object} Returns `object`.\n\t * @example\n\t *\n\t * var users = {\n\t * 'data': [{ 'user': 'barney' }, { 'user': 'fred' }]\n\t * };\n\t *\n\t * var ages = {\n\t * 'data': [{ 'age': 36 }, { 'age': 40 }]\n\t * };\n\t *\n\t * _.merge(users, ages);\n\t * // => { 'data': [{ 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }] }\n\t *\n\t * // using a customizer callback\n\t * var object = {\n\t * 'fruits': ['apple'],\n\t * 'vegetables': ['beet']\n\t * };\n\t *\n\t * var other = {\n\t * 'fruits': ['banana'],\n\t * 'vegetables': ['carrot']\n\t * };\n\t *\n\t * _.merge(object, other, function(a, b) {\n\t * if (_.isArray(a)) {\n\t * return a.concat(b);\n\t * }\n\t * });\n\t * // => { 'fruits': ['apple', 'banana'], 'vegetables': ['beet', 'carrot'] }\n\t */\n\t var merge = createAssigner(baseMerge);\n\n\t /**\n\t * Assigns own enumerable properties of source object(s) to the destination\n\t * object. Subsequent sources overwrite property assignments of previous sources.\n\t * If `customizer` is provided it is invoked to produce the assigned values.\n\t * The `customizer` is bound to `thisArg` and invoked with five arguments:\n\t * (objectValue, sourceValue, key, object, source).\n\t *\n\t * **Note:** This method mutates `object` and is based on\n\t * [`Object.assign`](http://ecma-international.org/ecma-262/6.0/#sec-object.assign).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @alias extend\n\t * @category Object\n\t * @param {Object} object The destination object.\n\t * @param {...Object} [sources] The source objects.\n\t * @param {Function} [customizer] The function to customize assigned values.\n\t * @param {*} [thisArg] The `this` binding of `customizer`.\n\t * @returns {Object} Returns `object`.\n\t * @example\n\t *\n\t * _.assign({ 'user': 'barney' }, { 'age': 40 }, { 'user': 'fred' });\n\t * // => { 'user': 'fred', 'age': 40 }\n\t *\n\t * // using a customizer callback\n\t * var defaults = _.partialRight(_.assign, function(value, other) {\n\t * return _.isUndefined(value) ? other : value;\n\t * });\n\t *\n\t * defaults({ 'user': 'barney' }, { 'age': 36 }, { 'user': 'fred' });\n\t * // => { 'user': 'barney', 'age': 36 }\n\t */\n\t var assign = createAssigner(function(object, source, customizer) {\n\t return customizer\n\t ? assignWith(object, source, customizer)\n\t : baseAssign(object, source);\n\t });\n\n\t /**\n\t * Creates an object that inherits from the given `prototype` object. If a\n\t * `properties` object is provided its own enumerable properties are assigned\n\t * to the created object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} prototype The object to inherit from.\n\t * @param {Object} [properties] The properties to assign to the object.\n\t * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.\n\t * @returns {Object} Returns the new object.\n\t * @example\n\t *\n\t * function Shape() {\n\t * this.x = 0;\n\t * this.y = 0;\n\t * }\n\t *\n\t * function Circle() {\n\t * Shape.call(this);\n\t * }\n\t *\n\t * Circle.prototype = _.create(Shape.prototype, {\n\t * 'constructor': Circle\n\t * });\n\t *\n\t * var circle = new Circle;\n\t * circle instanceof Circle;\n\t * // => true\n\t *\n\t * circle instanceof Shape;\n\t * // => true\n\t */\n\t function create(prototype, properties, guard) {\n\t var result = baseCreate(prototype);\n\t if (guard && isIterateeCall(prototype, properties, guard)) {\n\t properties = undefined;\n\t }\n\t return properties ? baseAssign(result, properties) : result;\n\t }\n\n\t /**\n\t * Assigns own enumerable properties of source object(s) to the destination\n\t * object for all destination properties that resolve to `undefined`. Once a\n\t * property is set, additional values of the same property are ignored.\n\t *\n\t * **Note:** This method mutates `object`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The destination object.\n\t * @param {...Object} [sources] The source objects.\n\t * @returns {Object} Returns `object`.\n\t * @example\n\t *\n\t * _.defaults({ 'user': 'barney' }, { 'age': 36 }, { 'user': 'fred' });\n\t * // => { 'user': 'barney', 'age': 36 }\n\t */\n\t var defaults = createDefaults(assign, assignDefaults);\n\n\t /**\n\t * This method is like `_.defaults` except that it recursively assigns\n\t * default properties.\n\t *\n\t * **Note:** This method mutates `object`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The destination object.\n\t * @param {...Object} [sources] The source objects.\n\t * @returns {Object} Returns `object`.\n\t * @example\n\t *\n\t * _.defaultsDeep({ 'user': { 'name': 'barney' } }, { 'user': { 'name': 'fred', 'age': 36 } });\n\t * // => { 'user': { 'name': 'barney', 'age': 36 } }\n\t *\n\t */\n\t var defaultsDeep = createDefaults(merge, mergeDefaults);\n\n\t /**\n\t * This method is like `_.find` except that it returns the key of the first\n\t * element `predicate` returns truthy for instead of the element itself.\n\t *\n\t * If a property name is provided for `predicate` the created `_.property`\n\t * style callback returns the property value of the given element.\n\t *\n\t * If a value is also provided for `thisArg` the created `_.matchesProperty`\n\t * style callback returns `true` for elements that have a matching property\n\t * value, else `false`.\n\t *\n\t * If an object is provided for `predicate` the created `_.matches` style\n\t * callback returns `true` for elements that have the properties of the given\n\t * object, else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The object to search.\n\t * @param {Function|Object|string} [predicate=_.identity] The function invoked\n\t * per iteration.\n\t * @param {*} [thisArg] The `this` binding of `predicate`.\n\t * @returns {string|undefined} Returns the key of the matched element, else `undefined`.\n\t * @example\n\t *\n\t * var users = {\n\t * 'barney': { 'age': 36, 'active': true },\n\t * 'fred': { 'age': 40, 'active': false },\n\t * 'pebbles': { 'age': 1, 'active': true }\n\t * };\n\t *\n\t * _.findKey(users, function(chr) {\n\t * return chr.age < 40;\n\t * });\n\t * // => 'barney' (iteration order is not guaranteed)\n\t *\n\t * // using the `_.matches` callback shorthand\n\t * _.findKey(users, { 'age': 1, 'active': true });\n\t * // => 'pebbles'\n\t *\n\t * // using the `_.matchesProperty` callback shorthand\n\t * _.findKey(users, 'active', false);\n\t * // => 'fred'\n\t *\n\t * // using the `_.property` callback shorthand\n\t * _.findKey(users, 'active');\n\t * // => 'barney'\n\t */\n\t var findKey = createFindKey(baseForOwn);\n\n\t /**\n\t * This method is like `_.findKey` except that it iterates over elements of\n\t * a collection in the opposite order.\n\t *\n\t * If a property name is provided for `predicate` the created `_.property`\n\t * style callback returns the property value of the given element.\n\t *\n\t * If a value is also provided for `thisArg` the created `_.matchesProperty`\n\t * style callback returns `true` for elements that have a matching property\n\t * value, else `false`.\n\t *\n\t * If an object is provided for `predicate` the created `_.matches` style\n\t * callback returns `true` for elements that have the properties of the given\n\t * object, else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The object to search.\n\t * @param {Function|Object|string} [predicate=_.identity] The function invoked\n\t * per iteration.\n\t * @param {*} [thisArg] The `this` binding of `predicate`.\n\t * @returns {string|undefined} Returns the key of the matched element, else `undefined`.\n\t * @example\n\t *\n\t * var users = {\n\t * 'barney': { 'age': 36, 'active': true },\n\t * 'fred': { 'age': 40, 'active': false },\n\t * 'pebbles': { 'age': 1, 'active': true }\n\t * };\n\t *\n\t * _.findLastKey(users, function(chr) {\n\t * return chr.age < 40;\n\t * });\n\t * // => returns `pebbles` assuming `_.findKey` returns `barney`\n\t *\n\t * // using the `_.matches` callback shorthand\n\t * _.findLastKey(users, { 'age': 36, 'active': true });\n\t * // => 'barney'\n\t *\n\t * // using the `_.matchesProperty` callback shorthand\n\t * _.findLastKey(users, 'active', false);\n\t * // => 'fred'\n\t *\n\t * // using the `_.property` callback shorthand\n\t * _.findLastKey(users, 'active');\n\t * // => 'pebbles'\n\t */\n\t var findLastKey = createFindKey(baseForOwnRight);\n\n\t /**\n\t * Iterates over own and inherited enumerable properties of an object invoking\n\t * `iteratee` for each property. The `iteratee` is bound to `thisArg` and invoked\n\t * with three arguments: (value, key, object). Iteratee functions may exit\n\t * iteration early by explicitly returning `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The object to iterate over.\n\t * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n\t * @param {*} [thisArg] The `this` binding of `iteratee`.\n\t * @returns {Object} Returns `object`.\n\t * @example\n\t *\n\t * function Foo() {\n\t * this.a = 1;\n\t * this.b = 2;\n\t * }\n\t *\n\t * Foo.prototype.c = 3;\n\t *\n\t * _.forIn(new Foo, function(value, key) {\n\t * console.log(key);\n\t * });\n\t * // => logs 'a', 'b', and 'c' (iteration order is not guaranteed)\n\t */\n\t var forIn = createForIn(baseFor);\n\n\t /**\n\t * This method is like `_.forIn` except that it iterates over properties of\n\t * `object` in the opposite order.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The object to iterate over.\n\t * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n\t * @param {*} [thisArg] The `this` binding of `iteratee`.\n\t * @returns {Object} Returns `object`.\n\t * @example\n\t *\n\t * function Foo() {\n\t * this.a = 1;\n\t * this.b = 2;\n\t * }\n\t *\n\t * Foo.prototype.c = 3;\n\t *\n\t * _.forInRight(new Foo, function(value, key) {\n\t * console.log(key);\n\t * });\n\t * // => logs 'c', 'b', and 'a' assuming `_.forIn ` logs 'a', 'b', and 'c'\n\t */\n\t var forInRight = createForIn(baseForRight);\n\n\t /**\n\t * Iterates over own enumerable properties of an object invoking `iteratee`\n\t * for each property. The `iteratee` is bound to `thisArg` and invoked with\n\t * three arguments: (value, key, object). Iteratee functions may exit iteration\n\t * early by explicitly returning `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The object to iterate over.\n\t * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n\t * @param {*} [thisArg] The `this` binding of `iteratee`.\n\t * @returns {Object} Returns `object`.\n\t * @example\n\t *\n\t * function Foo() {\n\t * this.a = 1;\n\t * this.b = 2;\n\t * }\n\t *\n\t * Foo.prototype.c = 3;\n\t *\n\t * _.forOwn(new Foo, function(value, key) {\n\t * console.log(key);\n\t * });\n\t * // => logs 'a' and 'b' (iteration order is not guaranteed)\n\t */\n\t var forOwn = createForOwn(baseForOwn);\n\n\t /**\n\t * This method is like `_.forOwn` except that it iterates over properties of\n\t * `object` in the opposite order.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The object to iterate over.\n\t * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n\t * @param {*} [thisArg] The `this` binding of `iteratee`.\n\t * @returns {Object} Returns `object`.\n\t * @example\n\t *\n\t * function Foo() {\n\t * this.a = 1;\n\t * this.b = 2;\n\t * }\n\t *\n\t * Foo.prototype.c = 3;\n\t *\n\t * _.forOwnRight(new Foo, function(value, key) {\n\t * console.log(key);\n\t * });\n\t * // => logs 'b' and 'a' assuming `_.forOwn` logs 'a' and 'b'\n\t */\n\t var forOwnRight = createForOwn(baseForOwnRight);\n\n\t /**\n\t * Creates an array of function property names from all enumerable properties,\n\t * own and inherited, of `object`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @alias methods\n\t * @category Object\n\t * @param {Object} object The object to inspect.\n\t * @returns {Array} Returns the new array of property names.\n\t * @example\n\t *\n\t * _.functions(_);\n\t * // => ['after', 'ary', 'assign', ...]\n\t */\n\t function functions(object) {\n\t return baseFunctions(object, keysIn(object));\n\t }\n\n\t /**\n\t * Gets the property value at `path` of `object`. If the resolved value is\n\t * `undefined` the `defaultValue` is used in its place.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The object to query.\n\t * @param {Array|string} path The path of the property to get.\n\t * @param {*} [defaultValue] The value returned if the resolved value is `undefined`.\n\t * @returns {*} Returns the resolved value.\n\t * @example\n\t *\n\t * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n\t *\n\t * _.get(object, 'a[0].b.c');\n\t * // => 3\n\t *\n\t * _.get(object, ['a', '0', 'b', 'c']);\n\t * // => 3\n\t *\n\t * _.get(object, 'a.b.c', 'default');\n\t * // => 'default'\n\t */\n\t function get(object, path, defaultValue) {\n\t var result = object == null ? undefined : baseGet(object, toPath(path), path + '');\n\t return result === undefined ? defaultValue : result;\n\t }\n\n\t /**\n\t * Checks if `path` is a direct property.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The object to query.\n\t * @param {Array|string} path The path to check.\n\t * @returns {boolean} Returns `true` if `path` is a direct property, else `false`.\n\t * @example\n\t *\n\t * var object = { 'a': { 'b': { 'c': 3 } } };\n\t *\n\t * _.has(object, 'a');\n\t * // => true\n\t *\n\t * _.has(object, 'a.b.c');\n\t * // => true\n\t *\n\t * _.has(object, ['a', 'b', 'c']);\n\t * // => true\n\t */\n\t function has(object, path) {\n\t if (object == null) {\n\t return false;\n\t }\n\t var result = hasOwnProperty.call(object, path);\n\t if (!result && !isKey(path)) {\n\t path = toPath(path);\n\t object = path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1));\n\t if (object == null) {\n\t return false;\n\t }\n\t path = last(path);\n\t result = hasOwnProperty.call(object, path);\n\t }\n\t return result || (isLength(object.length) && isIndex(path, object.length) &&\n\t (isArray(object) || isArguments(object)));\n\t }\n\n\t /**\n\t * Creates an object composed of the inverted keys and values of `object`.\n\t * If `object` contains duplicate values, subsequent values overwrite property\n\t * assignments of previous values unless `multiValue` is `true`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The object to invert.\n\t * @param {boolean} [multiValue] Allow multiple values per key.\n\t * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.\n\t * @returns {Object} Returns the new inverted object.\n\t * @example\n\t *\n\t * var object = { 'a': 1, 'b': 2, 'c': 1 };\n\t *\n\t * _.invert(object);\n\t * // => { '1': 'c', '2': 'b' }\n\t *\n\t * // with `multiValue`\n\t * _.invert(object, true);\n\t * // => { '1': ['a', 'c'], '2': ['b'] }\n\t */\n\t function invert(object, multiValue, guard) {\n\t if (guard && isIterateeCall(object, multiValue, guard)) {\n\t multiValue = undefined;\n\t }\n\t var index = -1,\n\t props = keys(object),\n\t length = props.length,\n\t result = {};\n\n\t while (++index < length) {\n\t var key = props[index],\n\t value = object[key];\n\n\t if (multiValue) {\n\t if (hasOwnProperty.call(result, value)) {\n\t result[value].push(key);\n\t } else {\n\t result[value] = [key];\n\t }\n\t }\n\t else {\n\t result[value] = key;\n\t }\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * Creates an array of the own enumerable property names of `object`.\n\t *\n\t * **Note:** Non-object values are coerced to objects. See the\n\t * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys)\n\t * for more details.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of property names.\n\t * @example\n\t *\n\t * function Foo() {\n\t * this.a = 1;\n\t * this.b = 2;\n\t * }\n\t *\n\t * Foo.prototype.c = 3;\n\t *\n\t * _.keys(new Foo);\n\t * // => ['a', 'b'] (iteration order is not guaranteed)\n\t *\n\t * _.keys('hi');\n\t * // => ['0', '1']\n\t */\n\t var keys = !nativeKeys ? shimKeys : function(object) {\n\t var Ctor = object == null ? undefined : object.constructor;\n\t if ((typeof Ctor == 'function' && Ctor.prototype === object) ||\n\t (typeof object != 'function' && isArrayLike(object))) {\n\t return shimKeys(object);\n\t }\n\t return isObject(object) ? nativeKeys(object) : [];\n\t };\n\n\t /**\n\t * Creates an array of the own and inherited enumerable property names of `object`.\n\t *\n\t * **Note:** Non-object values are coerced to objects.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of property names.\n\t * @example\n\t *\n\t * function Foo() {\n\t * this.a = 1;\n\t * this.b = 2;\n\t * }\n\t *\n\t * Foo.prototype.c = 3;\n\t *\n\t * _.keysIn(new Foo);\n\t * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n\t */\n\t function keysIn(object) {\n\t if (object == null) {\n\t return [];\n\t }\n\t if (!isObject(object)) {\n\t object = Object(object);\n\t }\n\t var length = object.length;\n\t length = (length && isLength(length) &&\n\t (isArray(object) || isArguments(object)) && length) || 0;\n\n\t var Ctor = object.constructor,\n\t index = -1,\n\t isProto = typeof Ctor == 'function' && Ctor.prototype === object,\n\t result = Array(length),\n\t skipIndexes = length > 0;\n\n\t while (++index < length) {\n\t result[index] = (index + '');\n\t }\n\t for (var key in object) {\n\t if (!(skipIndexes && isIndex(key, length)) &&\n\t !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n\t result.push(key);\n\t }\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * The opposite of `_.mapValues`; this method creates an object with the\n\t * same values as `object` and keys generated by running each own enumerable\n\t * property of `object` through `iteratee`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The object to iterate over.\n\t * @param {Function|Object|string} [iteratee=_.identity] The function invoked\n\t * per iteration.\n\t * @param {*} [thisArg] The `this` binding of `iteratee`.\n\t * @returns {Object} Returns the new mapped object.\n\t * @example\n\t *\n\t * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n\t * return key + value;\n\t * });\n\t * // => { 'a1': 1, 'b2': 2 }\n\t */\n\t var mapKeys = createObjectMapper(true);\n\n\t /**\n\t * Creates an object with the same keys as `object` and values generated by\n\t * running each own enumerable property of `object` through `iteratee`. The\n\t * iteratee function is bound to `thisArg` and invoked with three arguments:\n\t * (value, key, object).\n\t *\n\t * If a property name is provided for `iteratee` the created `_.property`\n\t * style callback returns the property value of the given element.\n\t *\n\t * If a value is also provided for `thisArg` the created `_.matchesProperty`\n\t * style callback returns `true` for elements that have a matching property\n\t * value, else `false`.\n\t *\n\t * If an object is provided for `iteratee` the created `_.matches` style\n\t * callback returns `true` for elements that have the properties of the given\n\t * object, else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The object to iterate over.\n\t * @param {Function|Object|string} [iteratee=_.identity] The function invoked\n\t * per iteration.\n\t * @param {*} [thisArg] The `this` binding of `iteratee`.\n\t * @returns {Object} Returns the new mapped object.\n\t * @example\n\t *\n\t * _.mapValues({ 'a': 1, 'b': 2 }, function(n) {\n\t * return n * 3;\n\t * });\n\t * // => { 'a': 3, 'b': 6 }\n\t *\n\t * var users = {\n\t * 'fred': { 'user': 'fred', 'age': 40 },\n\t * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n\t * };\n\t *\n\t * // using the `_.property` callback shorthand\n\t * _.mapValues(users, 'age');\n\t * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n\t */\n\t var mapValues = createObjectMapper();\n\n\t /**\n\t * The opposite of `_.pick`; this method creates an object composed of the\n\t * own and inherited enumerable properties of `object` that are not omitted.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The source object.\n\t * @param {Function|...(string|string[])} [predicate] The function invoked per\n\t * iteration or property names to omit, specified as individual property\n\t * names or arrays of property names.\n\t * @param {*} [thisArg] The `this` binding of `predicate`.\n\t * @returns {Object} Returns the new object.\n\t * @example\n\t *\n\t * var object = { 'user': 'fred', 'age': 40 };\n\t *\n\t * _.omit(object, 'age');\n\t * // => { 'user': 'fred' }\n\t *\n\t * _.omit(object, _.isNumber);\n\t * // => { 'user': 'fred' }\n\t */\n\t var omit = restParam(function(object, props) {\n\t if (object == null) {\n\t return {};\n\t }\n\t if (typeof props[0] != 'function') {\n\t var props = arrayMap(baseFlatten(props), String);\n\t return pickByArray(object, baseDifference(keysIn(object), props));\n\t }\n\t var predicate = bindCallback(props[0], props[1], 3);\n\t return pickByCallback(object, function(value, key, object) {\n\t return !predicate(value, key, object);\n\t });\n\t });\n\n\t /**\n\t * Creates a two dimensional array of the key-value pairs for `object`,\n\t * e.g. `[[key1, value1], [key2, value2]]`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the new array of key-value pairs.\n\t * @example\n\t *\n\t * _.pairs({ 'barney': 36, 'fred': 40 });\n\t * // => [['barney', 36], ['fred', 40]] (iteration order is not guaranteed)\n\t */\n\t function pairs(object) {\n\t object = toObject(object);\n\n\t var index = -1,\n\t props = keys(object),\n\t length = props.length,\n\t result = Array(length);\n\n\t while (++index < length) {\n\t var key = props[index];\n\t result[index] = [key, object[key]];\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * Creates an object composed of the picked `object` properties. Property\n\t * names may be specified as individual arguments or as arrays of property\n\t * names. If `predicate` is provided it is invoked for each property of `object`\n\t * picking the properties `predicate` returns truthy for. The predicate is\n\t * bound to `thisArg` and invoked with three arguments: (value, key, object).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The source object.\n\t * @param {Function|...(string|string[])} [predicate] The function invoked per\n\t * iteration or property names to pick, specified as individual property\n\t * names or arrays of property names.\n\t * @param {*} [thisArg] The `this` binding of `predicate`.\n\t * @returns {Object} Returns the new object.\n\t * @example\n\t *\n\t * var object = { 'user': 'fred', 'age': 40 };\n\t *\n\t * _.pick(object, 'user');\n\t * // => { 'user': 'fred' }\n\t *\n\t * _.pick(object, _.isString);\n\t * // => { 'user': 'fred' }\n\t */\n\t var pick = restParam(function(object, props) {\n\t if (object == null) {\n\t return {};\n\t }\n\t return typeof props[0] == 'function'\n\t ? pickByCallback(object, bindCallback(props[0], props[1], 3))\n\t : pickByArray(object, baseFlatten(props));\n\t });\n\n\t /**\n\t * This method is like `_.get` except that if the resolved value is a function\n\t * it is invoked with the `this` binding of its parent object and its result\n\t * is returned.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The object to query.\n\t * @param {Array|string} path The path of the property to resolve.\n\t * @param {*} [defaultValue] The value returned if the resolved value is `undefined`.\n\t * @returns {*} Returns the resolved value.\n\t * @example\n\t *\n\t * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n\t *\n\t * _.result(object, 'a[0].b.c1');\n\t * // => 3\n\t *\n\t * _.result(object, 'a[0].b.c2');\n\t * // => 4\n\t *\n\t * _.result(object, 'a.b.c', 'default');\n\t * // => 'default'\n\t *\n\t * _.result(object, 'a.b.c', _.constant('default'));\n\t * // => 'default'\n\t */\n\t function result(object, path, defaultValue) {\n\t var result = object == null ? undefined : object[path];\n\t if (result === undefined) {\n\t if (object != null && !isKey(path, object)) {\n\t path = toPath(path);\n\t object = path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1));\n\t result = object == null ? undefined : object[last(path)];\n\t }\n\t result = result === undefined ? defaultValue : result;\n\t }\n\t return isFunction(result) ? result.call(object) : result;\n\t }\n\n\t /**\n\t * Sets the property value of `path` on `object`. If a portion of `path`\n\t * does not exist it is created.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The object to augment.\n\t * @param {Array|string} path The path of the property to set.\n\t * @param {*} value The value to set.\n\t * @returns {Object} Returns `object`.\n\t * @example\n\t *\n\t * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n\t *\n\t * _.set(object, 'a[0].b.c', 4);\n\t * console.log(object.a[0].b.c);\n\t * // => 4\n\t *\n\t * _.set(object, 'x[0].y.z', 5);\n\t * console.log(object.x[0].y.z);\n\t * // => 5\n\t */\n\t function set(object, path, value) {\n\t if (object == null) {\n\t return object;\n\t }\n\t var pathKey = (path + '');\n\t path = (object[pathKey] != null || isKey(path, object)) ? [pathKey] : toPath(path);\n\n\t var index = -1,\n\t length = path.length,\n\t lastIndex = length - 1,\n\t nested = object;\n\n\t while (nested != null && ++index < length) {\n\t var key = path[index];\n\t if (isObject(nested)) {\n\t if (index == lastIndex) {\n\t nested[key] = value;\n\t } else if (nested[key] == null) {\n\t nested[key] = isIndex(path[index + 1]) ? [] : {};\n\t }\n\t }\n\t nested = nested[key];\n\t }\n\t return object;\n\t }\n\n\t /**\n\t * An alternative to `_.reduce`; this method transforms `object` to a new\n\t * `accumulator` object which is the result of running each of its own enumerable\n\t * properties through `iteratee`, with each invocation potentially mutating\n\t * the `accumulator` object. The `iteratee` is bound to `thisArg` and invoked\n\t * with four arguments: (accumulator, value, key, object). Iteratee functions\n\t * may exit iteration early by explicitly returning `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Object\n\t * @param {Array|Object} object The object to iterate over.\n\t * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n\t * @param {*} [accumulator] The custom accumulator value.\n\t * @param {*} [thisArg] The `this` binding of `iteratee`.\n\t * @returns {*} Returns the accumulated value.\n\t * @example\n\t *\n\t * _.transform([2, 3, 4], function(result, n) {\n\t * result.push(n *= n);\n\t * return n % 2 == 0;\n\t * });\n\t * // => [4, 9]\n\t *\n\t * _.transform({ 'a': 1, 'b': 2 }, function(result, n, key) {\n\t * result[key] = n * 3;\n\t * });\n\t * // => { 'a': 3, 'b': 6 }\n\t */\n\t function transform(object, iteratee, accumulator, thisArg) {\n\t var isArr = isArray(object) || isTypedArray(object);\n\t iteratee = getCallback(iteratee, thisArg, 4);\n\n\t if (accumulator == null) {\n\t if (isArr || isObject(object)) {\n\t var Ctor = object.constructor;\n\t if (isArr) {\n\t accumulator = isArray(object) ? new Ctor : [];\n\t } else {\n\t accumulator = baseCreate(isFunction(Ctor) ? Ctor.prototype : undefined);\n\t }\n\t } else {\n\t accumulator = {};\n\t }\n\t }\n\t (isArr ? arrayEach : baseForOwn)(object, function(value, index, object) {\n\t return iteratee(accumulator, value, index, object);\n\t });\n\t return accumulator;\n\t }\n\n\t /**\n\t * Creates an array of the own enumerable property values of `object`.\n\t *\n\t * **Note:** Non-object values are coerced to objects.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of property values.\n\t * @example\n\t *\n\t * function Foo() {\n\t * this.a = 1;\n\t * this.b = 2;\n\t * }\n\t *\n\t * Foo.prototype.c = 3;\n\t *\n\t * _.values(new Foo);\n\t * // => [1, 2] (iteration order is not guaranteed)\n\t *\n\t * _.values('hi');\n\t * // => ['h', 'i']\n\t */\n\t function values(object) {\n\t return baseValues(object, keys(object));\n\t }\n\n\t /**\n\t * Creates an array of the own and inherited enumerable property values\n\t * of `object`.\n\t *\n\t * **Note:** Non-object values are coerced to objects.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of property values.\n\t * @example\n\t *\n\t * function Foo() {\n\t * this.a = 1;\n\t * this.b = 2;\n\t * }\n\t *\n\t * Foo.prototype.c = 3;\n\t *\n\t * _.valuesIn(new Foo);\n\t * // => [1, 2, 3] (iteration order is not guaranteed)\n\t */\n\t function valuesIn(object) {\n\t return baseValues(object, keysIn(object));\n\t }\n\n\t /*------------------------------------------------------------------------*/\n\n\t /**\n\t * Checks if `n` is between `start` and up to but not including, `end`. If\n\t * `end` is not specified it is set to `start` with `start` then set to `0`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Number\n\t * @param {number} n The number to check.\n\t * @param {number} [start=0] The start of the range.\n\t * @param {number} end The end of the range.\n\t * @returns {boolean} Returns `true` if `n` is in the range, else `false`.\n\t * @example\n\t *\n\t * _.inRange(3, 2, 4);\n\t * // => true\n\t *\n\t * _.inRange(4, 8);\n\t * // => true\n\t *\n\t * _.inRange(4, 2);\n\t * // => false\n\t *\n\t * _.inRange(2, 2);\n\t * // => false\n\t *\n\t * _.inRange(1.2, 2);\n\t * // => true\n\t *\n\t * _.inRange(5.2, 4);\n\t * // => false\n\t */\n\t function inRange(value, start, end) {\n\t start = +start || 0;\n\t if (end === undefined) {\n\t end = start;\n\t start = 0;\n\t } else {\n\t end = +end || 0;\n\t }\n\t return value >= nativeMin(start, end) && value < nativeMax(start, end);\n\t }\n\n\t /**\n\t * Produces a random number between `min` and `max` (inclusive). If only one\n\t * argument is provided a number between `0` and the given number is returned.\n\t * If `floating` is `true`, or either `min` or `max` are floats, a floating-point\n\t * number is returned instead of an integer.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Number\n\t * @param {number} [min=0] The minimum possible value.\n\t * @param {number} [max=1] The maximum possible value.\n\t * @param {boolean} [floating] Specify returning a floating-point number.\n\t * @returns {number} Returns the random number.\n\t * @example\n\t *\n\t * _.random(0, 5);\n\t * // => an integer between 0 and 5\n\t *\n\t * _.random(5);\n\t * // => also an integer between 0 and 5\n\t *\n\t * _.random(5, true);\n\t * // => a floating-point number between 0 and 5\n\t *\n\t * _.random(1.2, 5.2);\n\t * // => a floating-point number between 1.2 and 5.2\n\t */\n\t function random(min, max, floating) {\n\t if (floating && isIterateeCall(min, max, floating)) {\n\t max = floating = undefined;\n\t }\n\t var noMin = min == null,\n\t noMax = max == null;\n\n\t if (floating == null) {\n\t if (noMax && typeof min == 'boolean') {\n\t floating = min;\n\t min = 1;\n\t }\n\t else if (typeof max == 'boolean') {\n\t floating = max;\n\t noMax = true;\n\t }\n\t }\n\t if (noMin && noMax) {\n\t max = 1;\n\t noMax = false;\n\t }\n\t min = +min || 0;\n\t if (noMax) {\n\t max = min;\n\t min = 0;\n\t } else {\n\t max = +max || 0;\n\t }\n\t if (floating || min % 1 || max % 1) {\n\t var rand = nativeRandom();\n\t return nativeMin(min + (rand * (max - min + parseFloat('1e-' + ((rand + '').length - 1)))), max);\n\t }\n\t return baseRandom(min, max);\n\t }\n\n\t /*------------------------------------------------------------------------*/\n\n\t /**\n\t * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category String\n\t * @param {string} [string=''] The string to convert.\n\t * @returns {string} Returns the camel cased string.\n\t * @example\n\t *\n\t * _.camelCase('Foo Bar');\n\t * // => 'fooBar'\n\t *\n\t * _.camelCase('--foo-bar');\n\t * // => 'fooBar'\n\t *\n\t * _.camelCase('__foo_bar__');\n\t * // => 'fooBar'\n\t */\n\t var camelCase = createCompounder(function(result, word, index) {\n\t word = word.toLowerCase();\n\t return result + (index ? (word.charAt(0).toUpperCase() + word.slice(1)) : word);\n\t });\n\n\t /**\n\t * Capitalizes the first character of `string`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category String\n\t * @param {string} [string=''] The string to capitalize.\n\t * @returns {string} Returns the capitalized string.\n\t * @example\n\t *\n\t * _.capitalize('fred');\n\t * // => 'Fred'\n\t */\n\t function capitalize(string) {\n\t string = baseToString(string);\n\t return string && (string.charAt(0).toUpperCase() + string.slice(1));\n\t }\n\n\t /**\n\t * Deburrs `string` by converting [latin-1 supplementary letters](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n\t * to basic latin letters and removing [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category String\n\t * @param {string} [string=''] The string to deburr.\n\t * @returns {string} Returns the deburred string.\n\t * @example\n\t *\n\t * _.deburr('déjà vu');\n\t * // => 'deja vu'\n\t */\n\t function deburr(string) {\n\t string = baseToString(string);\n\t return string && string.replace(reLatin1, deburrLetter).replace(reComboMark, '');\n\t }\n\n\t /**\n\t * Checks if `string` ends with the given target string.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category String\n\t * @param {string} [string=''] The string to search.\n\t * @param {string} [target] The string to search for.\n\t * @param {number} [position=string.length] The position to search from.\n\t * @returns {boolean} Returns `true` if `string` ends with `target`, else `false`.\n\t * @example\n\t *\n\t * _.endsWith('abc', 'c');\n\t * // => true\n\t *\n\t * _.endsWith('abc', 'b');\n\t * // => false\n\t *\n\t * _.endsWith('abc', 'b', 2);\n\t * // => true\n\t */\n\t function endsWith(string, target, position) {\n\t string = baseToString(string);\n\t target = (target + '');\n\n\t var length = string.length;\n\t position = position === undefined\n\t ? length\n\t : nativeMin(position < 0 ? 0 : (+position || 0), length);\n\n\t position -= target.length;\n\t return position >= 0 && string.indexOf(target, position) == position;\n\t }\n\n\t /**\n\t * Converts the characters \"&\", \"<\", \">\", '\"', \"'\", and \"\\`\", in `string` to\n\t * their corresponding HTML entities.\n\t *\n\t * **Note:** No other characters are escaped. To escape additional characters\n\t * use a third-party library like [_he_](https://mths.be/he).\n\t *\n\t * Though the \">\" character is escaped for symmetry, characters like\n\t * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n\t * unless they're part of a tag or unquoted attribute value.\n\t * See [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n\t * (under \"semi-related fun fact\") for more details.\n\t *\n\t * Backticks are escaped because in Internet Explorer < 9, they can break out\n\t * of attribute values or HTML comments. See [#59](https://html5sec.org/#59),\n\t * [#102](https://html5sec.org/#102), [#108](https://html5sec.org/#108), and\n\t * [#133](https://html5sec.org/#133) of the [HTML5 Security Cheatsheet](https://html5sec.org/)\n\t * for more details.\n\t *\n\t * When working with HTML you should always [quote attribute values](http://wonko.com/post/html-escaping)\n\t * to reduce XSS vectors.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category String\n\t * @param {string} [string=''] The string to escape.\n\t * @returns {string} Returns the escaped string.\n\t * @example\n\t *\n\t * _.escape('fred, barney, & pebbles');\n\t * // => 'fred, barney, & pebbles'\n\t */\n\t function escape(string) {\n\t // Reset `lastIndex` because in IE < 9 `String#replace` does not.\n\t string = baseToString(string);\n\t return (string && reHasUnescapedHtml.test(string))\n\t ? string.replace(reUnescapedHtml, escapeHtmlChar)\n\t : string;\n\t }\n\n\t /**\n\t * Escapes the `RegExp` special characters \"\\\", \"/\", \"^\", \"$\", \".\", \"|\", \"?\",\n\t * \"*\", \"+\", \"(\", \")\", \"[\", \"]\", \"{\" and \"}\" in `string`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category String\n\t * @param {string} [string=''] The string to escape.\n\t * @returns {string} Returns the escaped string.\n\t * @example\n\t *\n\t * _.escapeRegExp('[lodash](https://lodash.com/)');\n\t * // => '\\[lodash\\]\\(https:\\/\\/lodash\\.com\\/\\)'\n\t */\n\t function escapeRegExp(string) {\n\t string = baseToString(string);\n\t return (string && reHasRegExpChars.test(string))\n\t ? string.replace(reRegExpChars, escapeRegExpChar)\n\t : (string || '(?:)');\n\t }\n\n\t /**\n\t * Converts `string` to [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category String\n\t * @param {string} [string=''] The string to convert.\n\t * @returns {string} Returns the kebab cased string.\n\t * @example\n\t *\n\t * _.kebabCase('Foo Bar');\n\t * // => 'foo-bar'\n\t *\n\t * _.kebabCase('fooBar');\n\t * // => 'foo-bar'\n\t *\n\t * _.kebabCase('__foo_bar__');\n\t * // => 'foo-bar'\n\t */\n\t var kebabCase = createCompounder(function(result, word, index) {\n\t return result + (index ? '-' : '') + word.toLowerCase();\n\t });\n\n\t /**\n\t * Pads `string` on the left and right sides if it's shorter than `length`.\n\t * Padding characters are truncated if they can't be evenly divided by `length`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category String\n\t * @param {string} [string=''] The string to pad.\n\t * @param {number} [length=0] The padding length.\n\t * @param {string} [chars=' '] The string used as padding.\n\t * @returns {string} Returns the padded string.\n\t * @example\n\t *\n\t * _.pad('abc', 8);\n\t * // => ' abc '\n\t *\n\t * _.pad('abc', 8, '_-');\n\t * // => '_-abc_-_'\n\t *\n\t * _.pad('abc', 3);\n\t * // => 'abc'\n\t */\n\t function pad(string, length, chars) {\n\t string = baseToString(string);\n\t length = +length;\n\n\t var strLength = string.length;\n\t if (strLength >= length || !nativeIsFinite(length)) {\n\t return string;\n\t }\n\t var mid = (length - strLength) / 2,\n\t leftLength = nativeFloor(mid),\n\t rightLength = nativeCeil(mid);\n\n\t chars = createPadding('', rightLength, chars);\n\t return chars.slice(0, leftLength) + string + chars;\n\t }\n\n\t /**\n\t * Pads `string` on the left side if it's shorter than `length`. Padding\n\t * characters are truncated if they exceed `length`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category String\n\t * @param {string} [string=''] The string to pad.\n\t * @param {number} [length=0] The padding length.\n\t * @param {string} [chars=' '] The string used as padding.\n\t * @returns {string} Returns the padded string.\n\t * @example\n\t *\n\t * _.padLeft('abc', 6);\n\t * // => ' abc'\n\t *\n\t * _.padLeft('abc', 6, '_-');\n\t * // => '_-_abc'\n\t *\n\t * _.padLeft('abc', 3);\n\t * // => 'abc'\n\t */\n\t var padLeft = createPadDir();\n\n\t /**\n\t * Pads `string` on the right side if it's shorter than `length`. Padding\n\t * characters are truncated if they exceed `length`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category String\n\t * @param {string} [string=''] The string to pad.\n\t * @param {number} [length=0] The padding length.\n\t * @param {string} [chars=' '] The string used as padding.\n\t * @returns {string} Returns the padded string.\n\t * @example\n\t *\n\t * _.padRight('abc', 6);\n\t * // => 'abc '\n\t *\n\t * _.padRight('abc', 6, '_-');\n\t * // => 'abc_-_'\n\t *\n\t * _.padRight('abc', 3);\n\t * // => 'abc'\n\t */\n\t var padRight = createPadDir(true);\n\n\t /**\n\t * Converts `string` to an integer of the specified radix. If `radix` is\n\t * `undefined` or `0`, a `radix` of `10` is used unless `value` is a hexadecimal,\n\t * in which case a `radix` of `16` is used.\n\t *\n\t * **Note:** This method aligns with the [ES5 implementation](https://es5.github.io/#E)\n\t * of `parseInt`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category String\n\t * @param {string} string The string to convert.\n\t * @param {number} [radix] The radix to interpret `value` by.\n\t * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.\n\t * @returns {number} Returns the converted integer.\n\t * @example\n\t *\n\t * _.parseInt('08');\n\t * // => 8\n\t *\n\t * _.map(['6', '08', '10'], _.parseInt);\n\t * // => [6, 8, 10]\n\t */\n\t function parseInt(string, radix, guard) {\n\t // Firefox < 21 and Opera < 15 follow ES3 for `parseInt`.\n\t // Chrome fails to trim leading whitespace characters.\n\t // See https://code.google.com/p/v8/issues/detail?id=3109 for more details.\n\t if (guard ? isIterateeCall(string, radix, guard) : radix == null) {\n\t radix = 0;\n\t } else if (radix) {\n\t radix = +radix;\n\t }\n\t string = trim(string);\n\t return nativeParseInt(string, radix || (reHasHexPrefix.test(string) ? 16 : 10));\n\t }\n\n\t /**\n\t * Repeats the given string `n` times.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category String\n\t * @param {string} [string=''] The string to repeat.\n\t * @param {number} [n=0] The number of times to repeat the string.\n\t * @returns {string} Returns the repeated string.\n\t * @example\n\t *\n\t * _.repeat('*', 3);\n\t * // => '***'\n\t *\n\t * _.repeat('abc', 2);\n\t * // => 'abcabc'\n\t *\n\t * _.repeat('abc', 0);\n\t * // => ''\n\t */\n\t function repeat(string, n) {\n\t var result = '';\n\t string = baseToString(string);\n\t n = +n;\n\t if (n < 1 || !string || !nativeIsFinite(n)) {\n\t return result;\n\t }\n\t // Leverage the exponentiation by squaring algorithm for a faster repeat.\n\t // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n\t do {\n\t if (n % 2) {\n\t result += string;\n\t }\n\t n = nativeFloor(n / 2);\n\t string += string;\n\t } while (n);\n\n\t return result;\n\t }\n\n\t /**\n\t * Converts `string` to [snake case](https://en.wikipedia.org/wiki/Snake_case).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category String\n\t * @param {string} [string=''] The string to convert.\n\t * @returns {string} Returns the snake cased string.\n\t * @example\n\t *\n\t * _.snakeCase('Foo Bar');\n\t * // => 'foo_bar'\n\t *\n\t * _.snakeCase('fooBar');\n\t * // => 'foo_bar'\n\t *\n\t * _.snakeCase('--foo-bar');\n\t * // => 'foo_bar'\n\t */\n\t var snakeCase = createCompounder(function(result, word, index) {\n\t return result + (index ? '_' : '') + word.toLowerCase();\n\t });\n\n\t /**\n\t * Converts `string` to [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category String\n\t * @param {string} [string=''] The string to convert.\n\t * @returns {string} Returns the start cased string.\n\t * @example\n\t *\n\t * _.startCase('--foo-bar');\n\t * // => 'Foo Bar'\n\t *\n\t * _.startCase('fooBar');\n\t * // => 'Foo Bar'\n\t *\n\t * _.startCase('__foo_bar__');\n\t * // => 'Foo Bar'\n\t */\n\t var startCase = createCompounder(function(result, word, index) {\n\t return result + (index ? ' ' : '') + (word.charAt(0).toUpperCase() + word.slice(1));\n\t });\n\n\t /**\n\t * Checks if `string` starts with the given target string.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category String\n\t * @param {string} [string=''] The string to search.\n\t * @param {string} [target] The string to search for.\n\t * @param {number} [position=0] The position to search from.\n\t * @returns {boolean} Returns `true` if `string` starts with `target`, else `false`.\n\t * @example\n\t *\n\t * _.startsWith('abc', 'a');\n\t * // => true\n\t *\n\t * _.startsWith('abc', 'b');\n\t * // => false\n\t *\n\t * _.startsWith('abc', 'b', 1);\n\t * // => true\n\t */\n\t function startsWith(string, target, position) {\n\t string = baseToString(string);\n\t position = position == null\n\t ? 0\n\t : nativeMin(position < 0 ? 0 : (+position || 0), string.length);\n\n\t return string.lastIndexOf(target, position) == position;\n\t }\n\n\t /**\n\t * Creates a compiled template function that can interpolate data properties\n\t * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n\t * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n\t * properties may be accessed as free variables in the template. If a setting\n\t * object is provided it takes precedence over `_.templateSettings` values.\n\t *\n\t * **Note:** In the development build `_.template` utilizes\n\t * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n\t * for easier debugging.\n\t *\n\t * For more information on precompiling templates see\n\t * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n\t *\n\t * For more information on Chrome extension sandboxes see\n\t * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category String\n\t * @param {string} [string=''] The template string.\n\t * @param {Object} [options] The options object.\n\t * @param {RegExp} [options.escape] The HTML \"escape\" delimiter.\n\t * @param {RegExp} [options.evaluate] The \"evaluate\" delimiter.\n\t * @param {Object} [options.imports] An object to import into the template as free variables.\n\t * @param {RegExp} [options.interpolate] The \"interpolate\" delimiter.\n\t * @param {string} [options.sourceURL] The sourceURL of the template's compiled source.\n\t * @param {string} [options.variable] The data object variable name.\n\t * @param- {Object} [otherOptions] Enables the legacy `options` param signature.\n\t * @returns {Function} Returns the compiled template function.\n\t * @example\n\t *\n\t * // using the \"interpolate\" delimiter to create a compiled template\n\t * var compiled = _.template('hello <%= user %>!');\n\t * compiled({ 'user': 'fred' });\n\t * // => 'hello fred!'\n\t *\n\t * // using the HTML \"escape\" delimiter to escape data property values\n\t * var compiled = _.template('<%- value %>');\n\t * compiled({ 'value': '