{"version":3,"mappings":"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","names":["x","Ot","xe","_DOM","adapter","DomAdapter","DOCUMENT","InjectionToken","PlatformLocation","relativePosition","Error","ɵfac","t","ɵprov","ɵɵdefineInjectable","factory","useBrowserPlatformLocation","token","providedIn","ɵɵinject","BrowserPlatformLocation","LOCATION_INITIALIZED","_doc","W","_init","this","location","window","_history","history","getDOM","getBaseHref","fn","getGlobalEventTarget","addEventListener","removeEventListener","href","protocol","hostname","port","pathname","newPath","search","hash","state","title","url","supportsState","pushState","replaceState","forward","back","arguments","go","ɵngcc0","createBrowserPlatformLocation","start","end","length","slashes","endsWith","startsWith","substring","match","pathEndIdx","index","slice","params","LocationStrategy","provideLocationStrategy","platformLocation","PathLocationStrategy","origin","APP_BASE_HREF","_platformLocation","an","K","_removeListenerFns","getBaseHrefFromDOM","_baseHref","pop","push","onPopState","onHashChange","internal","joinWithSlash","includeHash","normalizeQueryParams","concat","queryParams","externalUrl","prepareExternalUrl","_a","_b","historyGo","call","HashLocationStrategy","path","Location","platformStrategy","_subject","EventEmitter","_urlChangeListeners","_platformStrategy","browserBaseHref","stripTrailingSlash","_stripIndexHtml","ev","H","emit","type","normalize","getState","query","baseHref","_stripBaseHref","_notifyUrlChangeListeners","_urlChangeSubscription","subscribe","v","forEach","onNext","onThrow","onReturn","next","error","complete","createLocation","replace","NumberFormatStyle","Decimal","Percent","Currency","Scientific","Plural","Zero","One","Two","Few","Many","Other","FormStyle","Format","Standalone","TranslationWidth","Narrow","Abbreviated","Wide","Short","FormatWidth","Medium","Long","Full","NumberSymbol","Group","List","PercentSign","PlusSign","MinusSign","Exponential","SuperscriptingExponent","PerMille","Infinity","NaN","TimeSeparator","CurrencyDecimal","CurrencyGroup","locale","formStyle","width","data","ɵfindLocaleData","amPm","getLastDefinedValue","ɵLocaleDataIndex","days","months","symbol","res","getLocalePluralCase","ɵgetLocalePluralCase","i","time","split","Tn","hours","minutes","ISO8601_DATE_REGEX","NAMED_FORMATS","DATE_FORMATS_SPLIT","ZoneWidth","ShortGMT","Extended","DateType","FullYear","Month","Date","Hours","Minutes","Seconds","FractionalSeconds","Day","TranslationType","DayPeriods","Days","Months","Eras","value","format","timezone","date","isDate","isNaN","trim","test","map","val","createDate","parsedNb","parseFloat","tzHour","tzMin","dateSetter","setUTCFullYear","setFullYear","timeSetter","setUTCHours","setHours","Number","h","m","s","ms","Math","floor","isoStringToDate","toDate","getNamedFormat","parts","exec","part","dateTimezoneOffset","getTimezoneOffset","timezoneToOffset","reverse","getTime","setMinutes","getMinutes","addDateMinutes","convertTimezoneToLocal","text","dateFormatter","DATE_FORMATS","formatter","dateStrGetter","dateGetter","weekNumberingYearGetter","weekGetter","timeZoneGetter","getDateFormatter","year","month","newDate","localeId","getLocaleId","formatValue","getLocaleDateFormat","getLocaleTimeFormat","shortTime","shortDate","formatDateTime","getLocaleDateTimeFormat","mediumTime","mediumDate","longTime","longDate","fullTime","fullDate","str","opt_values","key","num","digits","minusSign","negWrap","neg","strNum","String","substr","milliseconds","padNumber","name","size","offset","getDatePart","formatFractionalSeconds","localeMinus","getLocaleNumberSymbol","getFullYear","getMonth","getDate","getHours","getSeconds","getMilliseconds","getDay","form","extended","getDateTranslation","getLocaleMonthNames","getLocaleDayNames","currentHours","currentMinutes","rules","checkFullData","rule","extractTime","getLocaleExtraDayPeriodRules","dayPeriods","getLocaleExtraDayPeriods","findIndex","Array","isArray","from","Eo","to","afterFrom","beforeTo","getLocaleDayPeriods","getLocaleEraNames","zone","ceil","abs","firstDayOfYear","THURSDAY","datetime","monthBased","result","nbDaysBefore1stDayOfMonth","today","thisThurs","getThursdayThisWeek","firstThurs","getFirstThursdayOfYear","diff","round","fallback","requestedTimezoneOffset","parse","valueOf","NUMBER_FORMAT_REGEXP","ZERO_CHAR","pattern","groupSymbol","decimalSymbol","digitsInfo","isPercent","formattedText","isZero","isFinite","parsedNumber","parseNumber","toPercent","minInt","minFraction","minFrac","maxFraction","maxFrac","minIntPart","minFractionPart","maxFractionPart","parseIntAutoRadix","roundNumber","integerLen","exponent","decimals","every","d","unshift","splice","groups","lgSize","join","gSize","negPre","negSuf","posPre","posSuf","p","patternParts","positive","negative","positiveParts","indexOf","lastIndexOf","integer","fraction","ch","charAt","ft","trunkLen","pos","fractionLen","j","zeros","numStr","MAX_DIGITS","fractionSize","min","max","roundAt","digit","k","dropTrailingZeros","minLen","carry","reduceRight","parseInt","NgLocalization","NgLocaleLocalization","plural","LOCALE_ID","extraData","ɵregisterLocaleData","cookieStr","encodeURIComponent","cookie","xn","eqIndex","en","cookieValue","decodeURIComponent","NgClass","_iterableDiffers","_keyValueDiffers","_ngEl","_renderer","_iterableDiffer","_keyValueDiffer","_initialClasses","_rawClass","_removeClasses","_applyClasses","ɵisListLikeIterable","find","create","iterableChanges","_applyIterableChanges","keyValueChanges","_applyKeyValueChanges","changes","forEachAddedItem","record","_toggleClass","currentValue","forEachChangedItem","forEachRemovedItem","previousValue","item","ɵstringify","rawClassVal","Set","klass","Object","keys","enabled","addClass","nativeElement","removeClass","ɵdir","selectors","inputs","ngClass","NgForOfContext","$implicit","ngForOf","count","even","NgForOf","_viewContainer","_template","_differs","_ngForOf","_ngForOfDirty","_differ","_trackByFn","ngForTrackBy","getTypeName","_applyChanges","insertTuples","forEachOperation","adjustedPreviousIndex","currentIndex","previousIndex","view","createEmbeddedView","undefined","tuple","RecordViewTuple","remove","get","move","_perViewChange","ilen","viewRef","context","forEachIdentityChange","dir","ctx","ngForTemplate","NgIf","templateRef","_context","NgIfContext","_thenTemplateRef","_elseTemplateRef","_thenViewRef","_elseViewRef","condition","ngIf","_updateView","assertTemplate","clear","ngIfThen","ngIfElse","property","SwitchView","_viewContainerRef","_templateRef","_created","created","destroy","NgSwitch","_defaultUsed","_caseCount","_lastCaseCheckIndex","_lastCasesMatched","newValue","_ngSwitch","_updateDefaultCases","_defaultViews","matched","useDefault","enforceState","ngSwitch","NgSwitchCase","viewContainer","_addCase","_view","_matchCase","ngSwitchCase","NgStyle","_ngStyle","values","nameAndUnit","unit","setStyle","removeStyle","_setStyle","ngStyle","NgTemplateOutlet","_viewRef","ngTemplateOutletContext","ngTemplateOutlet","viewContainerRef","features","SubscribableStrategy","async","updateLatestValue","e","subscription","unsubscribe","_promiseStrategy","PromiseStrategy","then","_subscribableStrategy","AsyncPipe","_ref","_latestValue","_subscription","_obj","_strategy","_dispose","obj","transform","_subscribe","_selectStrategy","createSubscription","_updateLatestValue","ɵisPromise","ɵisSubscribable","invalidPipeArgumentError","dispose","markForCheck","ɵpipe","pure","unicodeWordMatch","TitleCasePipe","txt","toUpperCase","toLowerCase","DatePipe","formatDate","message","_INTERPOLATION_REGEXP","I18nPluralPipe","_localization","pluralMap","cases","ngLocalization","getPluralCategory","toString","DecimalPipe","_locale","isValue","formatNumberToLocaleString","parseNumberFormat","getLocaleNumberFormat","formatNumber","strToNumber","PercentPipe","RegExp","formatPercent","SlicePipe","supports","CommonModule","ɵmod","ɵinj","providers","provide","useClass","PLATFORM_BROWSER_ID","platformId","ViewportScroller","BrowserViewportScroller","document","supportsScrolling","pageXOffset","pageYOffset","position","scrollTo","target","elSelected","documentResult","getElementById","getElementsByName","createTreeWalker","body","createShadowRoot","attachShadow","treeWalker","NodeFilter","SHOW_ELEMENT","currentNode","shadowRoot","querySelector","nextNode","findAnchorFromDocument","scrollToElement","attemptFocus","scrollRestoration","supportScrollRestoration","el","rect","getBoundingClientRect","left","top","focusTarget","focus","activeElement","scrollRestorationDescriptor","getScrollRestorationProperty","getPrototypeOf","writable","set","getOwnPropertyDescriptor","XhrFactory","HttpHandler","HttpBackend","HttpHeaders","headers","normalizedNames","Map","lazyUpdate","lazyInit","Vn","line","maybeSetNormalizedName","has","init","clone","op","lcName","copyFrom","applyUpdate","update","other","rt","base","apply","Y","toDelete","existing","filter","delete","HttpUrlEncodingCodec","standardEncoding","rawParams","codec","param","eqIdx","$n","decodeKey","decodeValue","xt","list","STANDARD_ENCODING_REGEX","STANDARD_ENCODING_REPLACEMENTS","HttpParams","options","updates","cloneFrom","encoder","fromString","fromObject","paramParser","ae","_value","eKey","encodeKey","encodeValue","valueToString","idx","Rn","HttpContext","defaultValue","ArrayBuffer","Blob","FormData","HttpRequest","method","third","fourth","reportProgress","withCredentials","responseType","u","urlWithParams","qIdx","isArrayBuffer","isBlob","isFormData","URLSearchParams","isUrlSearchParams","JSON","stringify","setHeaders","reduce","setParams","HttpEventType","Sent","UploadProgress","ResponseHeader","DownloadProgress","Response","User","HttpResponseBase","defaultStatus","defaultStatusText","status","statusText","ok","HttpHeaderResponse","HttpResponse","HttpErrorResponse","ot","observe","HttpClient","handler","first","req","events$","of","pipe","concatMap","handle","res$","event","request","callbackParam","append","addBody","HttpInterceptorHandler","interceptor","intercept","HTTP_INTERCEPTORS","NoopInterceptor","XSSI_PREFIX","HttpXhrBackend","xhrFactory","Observable","observer","xhr","build","open","setRequestHeader","detectedType","detectContentTypeHeader","reqBody","serializeBody","headerResponse","partialFromXhr","getAllResponseHeaders","responseURL","getResponseHeader","getResponseUrl","onLoad","Bo","response","responseText","originalBody","onError","Go","sentHeaders","onDownProgress","progressEvent","loaded","lengthComputable","total","partialText","onUpProgress","progress","upload","send","readyState","DONE","abort","ɵngcc1","XSRF_COOKIE_NAME","XSRF_HEADER_NAME","HttpXsrfTokenExtractor","HttpXsrfCookieExtractor","doc","platform","cookieName","lastCookieString","lastToken","parseCount","cookieString","ɵparseCookieValue","PLATFORM_ID","HttpXsrfInterceptor","tokenService","headerName","lcUrl","getToken","HttpInterceptingHandler","backend","injector","chain","interceptors","HttpClientXsrfModule","ngModule","useValue","useExisting","multi","HttpClientModule","imports","withOptions","module","exports","define","require","defineProperty","default","ARS","AUD","BEF","BMD","BND","BZD","CAD","CLP","CNY","COP","CYP","EGP","FJD","FKP","FRF","GBP","GIP","HKD","IEP","ILP","ITL","JPY","KMF","LBP","MTP","MXN","NAD","NIO","NZD","RHD","RON","RWF","SBD","SGD","SRD","TOP","TTD","TWD","USD","UYU","WST","XCD","XPF","ZMW","n","Gn","Fn","Reflect","D","nn","Function","zt","a","o","constructor","enumerable","configurable","objWithPropertyToExtract","getClosureSafeProperty","source","hasOwnProperty","overriddenName","newLineIndex","before","after","__forward_ref__","forwardRefFn","forwardRef","isForwardRef","RuntimeError","code","fullCode","formatRuntimeError","renderStringify","injectorName","injectorDetails","stringifyForError","msg","actual","expected","comparison","opts","getOwnDefinition","NG_PROV_DEF","NG_INJECTABLE_DEF","field","NG_INJ_DEF","NG_INJECTOR_DEF","_injectImplementation","ngInjectableDef","ngInjectorDef","InjectFlags","Default","Host","Self","SkipSelf","Optional","impl","previous","notFoundValue","flags","injectableDef","getInjectableDef","throwProviderNotFoundError","ChangeDetectionStrategy","OnPush","ViewEncapsulation","Emulated","None","ShadowDom","__globalThis","globalThis","__window","__self","self","WorkerGlobalScope","__global","global","_global","EMPTY_OBJ","EMPTY_ARRAY","NG_COMP_DEF","ɵcmp","NG_DIR_DEF","NG_PIPE_DEF","NG_MOD_DEF","NG_LOC_ID_DEF","ɵloc","NG_FACTORY_DEF","NG_ELEMENT_ID","__NG_ELEMENT_ID__","_renderCompCount","componentDefinition","noSideEffects","declaredInputs","def","providersResolver","decls","vars","template","consts","ngContentSelectors","hostBindings","hostVars","hostAttrs","contentQueries","outputs","exportAs","onPush","changeDetection","directiveDefs","pipeDefs","viewQuery","encapsulation","id","styles","_","setInput","schemas","tView","directiveTypes","directives","feature","pipeTypes","pipes","invertObject","extractDirectiveDef","extractPipeDef","getComponentDef","getDirectiveDef","getPipeDef","autoRegisterModuleById","bootstrap","declarations","transitiveCompileScopes","scope","ngModuleDef","getNgModuleDef","secondary","newLookup","minifiedKey","publicName","declaredName","ɵɵdefineDirective","ɵɵdefineComponent","pipeDef","onDestroy","prototype","ngOnDestroy","throwNotFound","tNode","SimpleChange","firstChange","NgOnChangesFeatureImpl","definition","ngOnChanges","ngOnChangesSetInput","rememberChangeHistoryAndInvokeOnChangesHook","simpleChangesStore","getSimpleChangesStore","current","instance","privateName","store","SIMPLE_CHANGES_STORE","setSimpleChangesStore","previousChange","ɵɵNgOnChangesFeature","ngInherit","SVG_NAMESPACE","MATH_ML_NAMESPACE","renderer","listen","domRendererFactory3","createRenderer","hostElement","rendererType","getDocument","lView","unwrapRNode","nodeIndex","hostView","slotValue","isLView","lContainer","amount","viewOrContainer","parent","instructionState","lFrame","createLFrame","bindingsEnabled","isInCheckNoChangesMode","viewToRestore","contextLView","currentTNode","getCurrentTNodePlaceholderOk","isParent","mode","bindingRootIndex","bindingStartIndex","bindingIndex","isInI18nBlock","inI18n","currentDirectiveIndex","setCurrentDirectiveIndex","tData","currentQueryIndex","declTNode","parentTNode","parentLView","getDeclarationTNode","allocLFrame","newView","newLFrame","firstChild","currentLFrame","childLFrame","child","selectedIndex","elementDepthCount","currentNamespace","oldLFrame","leaveDI","leaveViewLight","level","nestingLevel","currentView","walkUpViews","getTNode","directiveStart","directiveEnd","lifecycleHooks","ngAfterContentInit","ngAfterContentChecked","ngAfterViewInit","ngAfterViewChecked","contentHooks","contentCheckHooks","viewHooks","viewCheckHooks","destroyHooks","hooks","callHooks","initPhase","arr","currentNodeIndex","nodeIndexLimit","lastNodeIndexFound","callHook","isInitHook","hook","directive","NodeInjectorFactory","isViewProvider","injectImplementation","resolving","canSeeViewProviders","injectImpl","native","attrs","isProc","isProceduralRenderer","namespaceURI","attrName","attrVal","setAttribute","setAttributeNS","isAnimationProp","setProperty","marker","charCodeAt","dst","src","srcMarker","mergeHostAttribute","key1","key2","markerInsertPosition","dstValue","parentLocation","startView","viewOffset","getParentInjectorViewOffset","parentView","includeViewProviders","oldValue","nextNgElementId","existingInjectorIndex","getInjectorIndex","firstCreatePass","injectorIndex","insertBloom","blueprint","parentLoc","getParentInjectorLocation","hasParentInjector","parentIndex","getParentInjectorIndex","getParentInjectorView","parentData","footer","declarationViewOffset","lViewCursor","tViewType","w","bloomHash","BLOOM_SIZE","bloomAdd","moduleInjector","previousInjectImplementation","setInjectImplementation","injectRootLimpMode","notFoundValueOrThrow","bloomHashBitOrFactory","enterDI","lookupTokenUsingModuleInjector","previousTView","hostTElementNode","shouldSearchParent","bloomHasToken","searchTokensOnInjector","NOT_FOUND","NodeInjector","getCurrentTNode","getLView","currentTView","injectableIdx","locateDirectiveOrProvider","isComponentHost","getNodeInjectable","canAccessViewProviders","isHostSpecialCase","nodeProviderIndexes","providerIndexes","tInjectables","injectablesStart","directivesStart","cptViewProvidersCount","endIndex","providerTokenOrDef","dirDef","isComponentDef","isFactory","throwCyclicDependencyError","previousIncludeViewProviders","setIncludeViewProviders","directiveIndex","directiveDef","ngOnInit","ngDoCheck","wrappedOnChanges","preOrderHooks","preOrderCheckHooks","registerPreOrderHooks","tokenId","createNodeInjector","injectorView","isFirstHostTNode","_tNode","_lView","et","getOrCreateInjectable","ownConstructor","ownFactory","getFactoryOf","objectPrototype","resolveForwardRef","getFactoryDef","attrNameToInject","classes","attrsLength","isNameOnlyAttributeMarker","injectAttributeImpl","ANNOTATIONS","PARAMETERS","PROP_METADATA","props","parentClass","additionalProcessing","typeFn","metaCtor","makeMetadataCtor","args","DecoratorFactory","annotationInstance","cls","annotations","ngMetadataName","annotationCls","propName","ParamDecoratorFactory","ParamDecorator","annotation","unusedKey","parameters","V","PropDecoratorFactory","decoratorInstance","meta","PropDecorator","Attribute","makeParamDecorator","attributeName","ɵɵinjectAttribute","CREATE_ATTRIBUTE_DECORATOR_IMPL","_desc","ANALYZE_FOR_ENTRY_COMPONENTS","globalNg","ng","ɵcompilerFacade","Type","flatten","input","deepForEach","keyValueArray","keyValueArrayIndexOf","array","value1","value2","arrayInsert2","shift","middle","_arrayIndexOfSorted","ES5_DELEGATE_CTOR","ES2015_INHERITED_CLASS","ES2015_INHERITED_CLASS_WITH_CTOR","ES2015_INHERITED_CLASS_WITH_DELEGATE_CTOR","ReflectionCapabilities","reflect","_reflect","paramTypes","paramAnnotations","newArray","parentCtor","typeStr","isDelegateCtor","tsickleCtorParams","ctorParameters","ctorParam","convertTsickleDecoratorIntoMetadata","decorators","_zipTypesAndAnnotations","getOwnMetadata","isType","getParentCtor","_ownParameters","typeOrFunc","ownAnnotations","_ownAnnotations","propMetadata","propDecorators","prop","parentPropMetadata","ownPropMetadata","_ownPropMetadata","lcProperty","functionBody","filePath","moduleUrl","members","runtime","enumIdentifier","decoratorInvocations","decoratorInvocation","ctor","parentProto","THROW_IF_NOT_FOUND","DI_DECORATOR_FLAG","NG_TEMP_TOKEN_PATH","NEW_LINE","SOURCE","USE_VALUE","_currentInjector","former","getInjectImplementation","injectInjectorOnly","types","arg","flag","getInjectFlag","decorator","injectorErrorName","tokenPath","formatError","NG_TOKEN_PATH","policy","policy$1","Inject","attachInjectFlag","convertDependencies","getReflect","deps","dep","attribute","host","optional","skipSelf","proto","reflectDependency","trustedTypes","createPolicy","createHTML","createScript","createScriptURL","html","getPolicy","getPolicy$1","script","SafeValueImpl","changingThisBreaksApplicationSecurity","SafeHtmlImpl","SafeStyleImpl","SafeScriptImpl","SafeUrlImpl","SafeResourceUrlImpl","actualType","getSanitizationBypassType","trustedHtml","trustedStyle","trustedScript","trustedUrl","trustedResourceUrl","defaultDoc","inertDocumentHelper","InertDocumentHelper","DOMParser","parseFromString","trustedHTMLFromString","isDOMParserAvailable","DOMParserHelper","getInertBodyElement","removeChild","inertDocument","implementation","createHTMLDocument","inertHtml","createElement","appendChild","inertBodyElement","templateEl","innerHTML","inertBody","documentMode","stripCustomNsAttrs","elAttrs","attributes","removeAttribute","childNode","nodeType","Node","ELEMENT_NODE","nextSibling","SAFE_URL_PATTERN","DATA_URL_PATTERN","srcset","_sanitizeUrl","tags","r","sets","inertBodyHelper","VOID_ELEMENTS","tagSet","OPTIONAL_END_TAG_BLOCK_ELEMENTS","OPTIONAL_END_TAG_INLINE_ELEMENTS","OPTIONAL_END_TAG_ELEMENTS","merge","VALID_ELEMENTS","URI_ATTRS","SRCSET_ATTRS","VALID_ATTRS","SKIP_TRAVERSING_CONTENT_IF_INVALID_ELEMENTS","SanitizingHtmlSerializer","sanitizedSomething","buf","traverseContent","startElement","TEXT_NODE","chars","nodeValue","endElement","checkClobberedElement","parentNode","element","tagName","nodeName","elAttr","lower","sanitizeSrcset","encodeEntities","node","compareDocumentPosition","DOCUMENT_POSITION_CONTAINED_BY","outerHTML","SURROGATE_PAIR_REGEXP","NON_ALPHANUMERIC_REGEXP","unsafeHtmlInput","getInertBodyHelper","unsafeHtml","mXSSAttempts","parsedHtml","sanitizeChildren","getTemplateContent","safeHtml","isTemplateElement","content","SecurityContext","NONE","HTML","STYLE","SCRIPT","URL","RESOURCE_URL","sanitizer","getSanitizer","trustedHTMLFromStringBypass","sanitize","allowSanitizationBypassAndThrow","unwrapSafeValue","_sanitizeHtml","unsafeStyle","unsafeUrl","unsafeResourceUrl","trustedScriptURLFromStringBypass","unsafeScript","trustedScriptFromStringBypass","trustedScriptURLFromString","tag","ɵɵsanitizeResourceUrl","ɵɵsanitizeUrl","getUrlSanitizer","MONKEY_PATCH_KEY_NAME","readPatchedData","ERROR_ORIGINAL_ERROR","console","ErrorHandler","_console","originalError","_findOriginalError","_findContext","errorLogger","ERROR_LOGGER","defaultErrorLogger","getErrorLogger","ERROR_DEBUG_CONTEXT","getDebugContext","getOriginalError","COMMENT_DISALLOWED","COMMENT_DELIMITER","defaultScheduler","requestAnimationFrame","setTimeout","bind","ɵ0$4","ownerDocument","defaultView","_icuContainerIterate","RendererStyleFlags2","Important","DashCase","tIcuContainerNode","isLContainer","getNearestLContainer","container","action","lNodeToHandle","beforeNode","isComponent","rNode","nativeAppendChild","nativeInsertBefore","nativeRemoveNode","destroyNode","parentRElement","anchor","applyToElementOrContainer","applyView","applyContainer","createText","createTextNode","setValue","textContent","createComment","escapeCommentText","namespace","createElementNS","declarationContainer","movedViews","declarationViewIndex","insertionLContainer","updateTransplantedViewCount","removeIndex","indexInContainer","viewToDetach","declarationLContainer","detachMovedView","removedLView","removeFromArray","removeViewFromContainer","lQueries","detachView","rootView","lViewOrLContainer","cleanUpView","firstView","destroyViewTree","toCall","callContext","executeOnDestroys","tCleanup","cleanup","lCleanup","lastLCleanupIndex","idxOrTargetGetter","listener","useCaptureOrSubIdx","instanceCleanupFn","processCleanups","getClosestRElement","getNativeByTNode","isMove","insertBefore","_getInsertInFrontOfRNodeWithI18n","_processI18nInsertBefore","getInsertInFrontOfRNodeWithNoI18n","getInsertInFrontOfRNodeWithI18n","processI18nInsertBefore","childRNode","childTNode","parentRNode","getParentRElement","anchorNode","getInsertInFrontOfRNode","nativeAppendOrInsertBefore","tNodeType","getBeforeNodeForView","elIcuContainerChild","getFirstNativeNode","rNodeOrLContainer","icuContainerIterate","nextRNode","projectionNodes","getProjectionNodes","getLViewParent","projection","viewIndexInContainer","nextViewIndex","firstTNodeOfView","isHostElement","nativeParent","nativeParentNode","nativeRemoveChild","isProjection","rawSlotValue","attachPatchData","applyNodes","applyProjectionRecursive","projectionNext","tProjectionNode","componentLView","nodeToProjectOrRNodes","style","cssText","className","classToSearch","startingIndex","foundIndex","NG_TEMPLATE_SELECTOR","cssClassToMatch","isProjectionMode","classIndexOf","currentSelector","selector","nodeAttrs","nameOnlyMarkerIdx","getNameOnlyMarkerIndex","skipToNextSelector","hasTagAndTypeMatch","isPositive","selectorAttrValue","isCssClassMatching","attrIndexInNode","findAttrIndexInNode","isInlineTemplate","nodeAttrValue","compareAgainstClassName","bindingsMode","maybeAttrName","attr","matchTemplateAttribute","isNodeMatchingSelector","selectorListLoop","currentSelectorInList","isNegativeMode","chunk","currentChunk","valueOrMarker","attrValue","maybeWrapInNotSelector","NO_CHANGE","delta","selectIndexInternal","getTView","getSelectedIndex","checkNoChangesMode","executeCheckHooks","executeInitAndCheckHooks","setSelectedIndex","prev","tStylingRange","directiveDefIdx","setCurrentQueryIndex","tHostNode","rendererFactory","resetPreOrderHookFlags","createTNodeAtIndex","getCurrentParentTNode","setCurrentTNode","isCurrentTNodeParent","tParent","insertBeforeIndex","directiveStylingLast","propertyBindings","mergedAttrs","localNames","initialInputs","tViews","stylesWithoutHost","residualStyles","classesWithoutHost","residualClasses","classBindings","styleBindings","createTNode","numSlotsToAlloc","initialValue","allocIdx","enterView","executeViewQueryFn","templateFn","executeTemplate","staticContentQueries","refreshContentQueries","staticViewQueries","components","hostLView","renderComponent","renderChildComponents","incompleteFirstPass","leaveView","isInCheckNoChangesPass","setBindingIndex","hooksInitPhaseCompleted","incrementInitPhaseFlags","getFirstLContainer","getNextLContainer","movedLView","markTransplantedViewsForRefresh","embeddedLView","embeddedTView","viewAttachedToChangeDetector","refreshView","refreshEmbeddedViews","hostBindingOpCodes","opCode","directiveIdx","bindingRootIndx","hostBindingFn","setBindingRootForHostBindings","processHostBindingOpCodes","refreshComponent","refreshChildComponents","firstUpdatePass","normalExecutionPath","creationModeIsActive","isCreationMode","begin","renderView","rf","prevSelectedIndex","isUpdatePhase","isContentQueryHost","getBindingsEnabled","getOrCreateNodeInjectorForNode","addComponentLogic","setInputsFromAttrs","getComponentLViewByIndex","instantiateAllDirectives","elementIndex","dirIndex","invokeHostBindingsInCreationMode","invokeDirectivesHostBindings","viewData","localRefExtractor","localIndex","createTView","constsOrFactory","initialViewLength","createViewBlueprint","queries","fill","expandoStartIndex","directiveRegistry","pipeRegistry","cleanupFn","getOrCreateLViewCleanup","getOrCreateTViewCleanup","inputAliasMap","propStore","internalName","nativeOnly","dataValue","inputData","setInputsForProperty","viewIndex","childComponentLView","markDirtyIfOnPush","mapPropName","localRefs","hasDirectives","registry","matches","isNodeMatchingSelectorList","diPublicInInjector","markAsComponentHost","findDirectiveDefMatches","exportsMap","initTNodeFlags","preOrderHooksFound","preOrderCheckHooksFound","allocExpando","mergeHostAttrs","configureViewWithDirective","saveNameToExportMap","lifeCycleHooks","tViewData","tNodeAttrs","inputsFromAttrs","inputsStore","outputsStore","directiveInputs","generateInitialInputs","generatePropertyAliases","initializeInputAndOutputAliases","cacheMatchingLocalNames","directiveVarsIdx","elementIndx","lastSelectedElementIdx","hostTNode","numberOfDirectives","directiveFactory","nodeInjectorFactory","registerHostBindingOpCodes","getOrCreateTComponentView","componentView","addToViewTree","createLView","setElementAttribute","strValue","initialInputData","inputsToStore","hostNative","componentHostIdx","refreshContainsDirtyView","componentTView","syncViewWithBlueprint","isRootView","handleError","rootContext","rootComponent","readPatchedLView","renderComponentOrTemplate","tickRootContext","viewQueryFn","component","CLEAN_PROMISE","Promise","resolve","ɵ0$5","currentDef","unwrapLView","errorHandler","getNativeByIndex","updateTextNode","writeToHost","concatStringsWithSpace","INJECTOR$1","NullInjector","INJECTOR_SCOPE","NOT_YET","CIRCULAR","NULL_INJECTOR","defType","additionalProviders","R3Injector","getNullInjector","records","injectorDefTypes","_destroyed","dedupStack","processProvider","provider","processInjectorType","injectorDef","makeRecord","assertNotDestroyed","service","previousInjector","setCurrentInjector","couldBeInjectableType","injectableDefInScope","injectableDefOrInjectorDefFactory","hydrate","nextInjector","catchInjectorError","tokens","defOrWrappedDef","parents","getInjectorDef","isDuplicate","importTypesWithProviders","imported","at","Er","add","defProviders","injectorType","ngModuleType","isTypeProvider","isValueProvider","providerToFactory","providerToRecord","multiRecord","injectArgs","hasOnDestroy","paramLength","inheritedInjectableDef","typeName","warn","getInheritedInjectableDef","getUndecoratedInjectableFactory","unwrappedProvider","useFactory","isFactoryProvider","isExistingProvider","classRef","hasDeps","INJECTOR_IMPL","createInjectorWithoutInjectorInstances","_resolveInjectorDefTypes","createInjector","Injector","NULL","registerPostOrderHooks","superType","getSuperType","shouldInheritFields","inheritanceChain","superDef","writeableDef","maybeUnwrapEmpty","superHostBindings","inheritHostBindings","superViewQuery","superContentQueries","inheritViewQuery","inheritContentQueries","fillProperties","animation","defData","ɵɵInheritDefinitionFeature","mergeHostAttrsAcrossInheritance","prevViewQuery","prevContentQueries","prevHostBindings","COPY_DIRECTIVE_FIELDS","COPY_COMPONENT_FIELDS","defAny","dn","_symbolIterator","Symbol","iterator","getOwnPropertyNames","entries","WrappedValue","wrapped","isWrapped","isJsObject","getSymbolIterator","is","exp1","exp2","different","bindingUpdated","exp3","bindingUpdated2","exp4","nextBindingIndex","elementAttributeInternal","getSelectedTNode","ɵɵattribute","isBindingUpdated","getBindingIndex","prefix","v0","suffix","i0","v1","incrementBindingIndex","i1","v2","bindingUpdated3","i2","v3","bindingUpdated4","i3","v4","i4","v5","i5","v6","i6","v7","interpolatedValue","interpolation1","ɵɵattributeInterpolate1","interpolation2","ɵɵattributeInterpolate2","interpolation3","ɵɵattributeInterpolate3","interpolation4","ɵɵattributeInterpolate4","interpolation5","ɵɵattributeInterpolate5","interpolation6","ɵɵattributeInterpolate6","interpolation7","ɵɵattributeInterpolate7","interpolation8","ɵɵattributeInterpolate8","interpolated","interpolationV","ɵɵattributeInterpolateV","attrsIndex","localRefsIndex","adjustedIndex","tViewConsts","getOrCreateTNode","getConstant","resolveDirectives","templateFirstCreatePass","comment","createLContainer","isDirectiveHost","createDirectivesInstances","saveResolvedLocalsInData","load","angularCoreDiEnv","ɵɵdefineInjector","ɵɵinvalidFactoryDep","USE_VALUE$1","Injectable","makeDecorator","SWITCH_COMPILE_INJECTABLE","ngFactoryDef","compiler","getCompilerFacade","compileInjectable","srcMeta","compilerMeta","typeArgumentCount","isUseClassProvider","isUseFactoryProvider","hm","li","isUseExistingProvider","getInjectableMetadata","compileFactory","reflectDependencies","FactoryTarget","elementPropertyInternal","ɵɵproperty","isClassBased","createElementNode","computeStaticStyling","elementStart","elementStartFirstCreatePass","setUpAttributes","writeDirectClass","writeDirectStyle","executeContentQueries","setCurrentTNodeAsNotParent","elementEnd","hasClassInput","setDirectiveInputsWhichShadowsStyling","hasStyleInput","ɵɵelementStart","ɵɵelementEnd","elementContainerStartFirstCreatePass","ɵɵelementContainerStart","ɵɵelementContainerEnd","isObservable","isSubscribable","eventName","listenerFn","useCapture","eventTargetResolver","listenerInternal","ɵɵlistener","loadComponentRenderer","getCurrentDirectiveDef","ɵɵsyntheticHostListener","isTNodeDirectiveHost","processOutputs","lCleanupIndex","existingListener","tNodeIdx","cleanupEventName","listenerIdxInLCleanup","findExistingListener","__ngLastListenerFn__","__ngNextListenerFn__","wrapListener","propsLength","profiler","wrapWithPreventDefault","markViewDirty","executeListenerWithErrorHandling","nextListenerFn","wrapListenerIn_markDirtyAndPreventDefault","preventDefault","returnValue","nextContextImpl","projectionSlots","wildcardNgContentIndex","ngProjectAsAttrVal","ngProjectAsAttrIdx","getProjectAsAttrValue","isSelectorInSelectorList","componentNode","projectionHeads","tails","componentChild","slotIndex","matchingProjectionSlotIndex","selectorIndex","applyProjection","ɵɵpropertyInterpolate1","ɵɵpropertyInterpolate","ɵɵpropertyInterpolate2","ɵɵpropertyInterpolate3","ɵɵpropertyInterpolate4","ɵɵpropertyInterpolate5","ɵɵpropertyInterpolate6","ɵɵpropertyInterpolate7","ɵɵpropertyInterpolate8","ɵɵpropertyInterpolateV","tStylingKey","isPrevDir","isClassBinding","tStylingAtIndex","isMap","cursor","getTStylingRangePrev","getTStylingRangeNext","foundDuplicate","tStyleRangeAtCursor","isStylingMatch","setTStylingRangeNextDuplicate","setTStylingRangePrevDuplicate","tStylingKeyCursor","parserState","textEnd","keyEnd","valueEnd","startIndex","consumeClassToken","consumeWhitespace","consumeStyleKey","consumeSeparator","ch1","ch2","ch3","lastChIndex","consumeQuotedText","consumeStyleValue","separator","quoteCharCode","checkStylingProperty","ɵɵstyleProp","ɵɵclassProp","checkStylingMap","styleKeyValueArraySet","styleStringParser","resetParserState","parseStyleNext","parseStyle","getLastParsedKey","getLastParsedValue","keyValueArraySet","classStringParser","parseClassNameNext","parseClassName","stylingFirstUpdatePass","updateStyling","normalizeSuffix","stringParser","hasStylingInputShadow","isInHostBindings","staticPrefix","oldKeyValueArray","newKeyValueArray","oldIndex","newIndex","oldKey","newKey","setKey","Nn","updateStylingMap","styleKeyValueArray","unwrappedValue","toStylingKeyValueArray","isHostBindings","stylingKey","hostDirectiveDef","residual","collectStylingFromTAttrs","collectStylingFromDirectives","templateStylingKey","bindings","getTemplateHeadTStylingKey","setTemplateHeadTStylingKey","collectResidual","wrapInStaticStylingKey","tStylingKeyWithStatic","isHostBinding","tBindings","tmplHead","tmplTail","isKeyDuplicateOfStatic","previousNode","toTStylingRange","setTStylingRangeNext","setTStylingRangePrev","markDuplicates","markDuplicateOfResidualStyling","insertTStylingBinding","currentDirective","desiredMarker","currentMarker","tRange","isStylingValuePresent","getTStylingRangeNextDuplicate","findStylingValue","getTStylingRangePrevDuplicate","isProcedural","classList","removeProperty","isImportant","applyStyling","isPrevDirection","rawKey","containsStatics","isStylingMap","valueAtLViewIndex","keyValueArrayGet","textNative","ɵɵtextInterpolate1","ɵɵtextInterpolate","textBindingInternal","ɵɵtextInterpolate2","ɵɵtextInterpolate3","ɵɵtextInterpolate4","ɵɵtextInterpolate5","ɵɵtextInterpolate6","ɵɵtextInterpolate7","ɵɵtextInterpolate8","ɵɵtextInterpolateV","ɵɵstyleMap","valueSuffix","ɵɵstylePropInterpolate1","ɵɵstylePropInterpolate2","ɵɵstylePropInterpolate3","ɵɵstylePropInterpolate4","ɵɵstylePropInterpolate5","ɵɵstylePropInterpolate6","ɵɵstylePropInterpolate7","ɵɵstylePropInterpolate8","ɵɵstylePropInterpolateV","ɵɵhostProperty","ɵɵsyntheticHostProperty","localeEn","LOCALE_DATA","LocaleDataIndex","LocaleId","ExtraData","normalizedLocale","normalizeLocale","getLocaleData","parentLocale","findLocaleData","PluralCase","common","locales","DayPeriodsFormat","DayPeriodsStandalone","DaysFormat","DaysStandalone","MonthsFormat","MonthsStandalone","FirstDayOfWeek","WeekendRange","DateFormat","TimeFormat","DateTimeFormat","NumberSymbols","NumberFormats","CurrencyCode","CurrencySymbol","CurrencyName","Currencies","Directionality","pluralMapping","DEFAULT_LOCALE_ID","ELEMENT_MARKER","ICU_MARKER","I18nCreateOpCode","SHIFT","APPEND_EAGERLY","COMMENT","throwError","assertDefined","tNodeInsertBeforeIndex","i18nParent","anchorRNode","previousTNodes","newTNode","existingTNode","isI18nText","isNewTNodeCreatedBefore","getInsertBeforeIndex","setInsertBeforeIndex","setI18nHandling","addTNodeAndUpdateInsertBeforeIndex","tIcu","currentCase","currentCaseLViewIndex","mergedCode","changeMask","changeMaskCounter","createOpCodes","insertInFrontOf","appendNow","mutableOpCodes","rootRNode","rootIdx","textNodeIndex","parentIdx","getParentFromIcuCreateOpCode","refIdx","getRefFromIcuCreateOpCode","getTIcu","caseIndex","getCurrentICUCaseIndex","applyMutableOpCodes","anchorIdx","commentValue","commentNodeIndex","createCommentNode","elementNodeIndex","updateOpCodes","bindingsStartIndex","checkBit","skipCodes","sanitizeFn","tNodeOrTagName","rText","applyIcuSwitchCase","applyIcuUpdateCase","activeCaseIndex","mask","applyUpdateOpCodes","icuExpression","bindingValue","resolvedCase","getPluralCase","getCaseIndex","applyIcuSwitchCaseRemove","removeCodes","nodeOrIcuIndex","_removes","_stack","_index","removeOpCode","enterIcu","icuContainerIteratorNext","BINDING_REGEXP","ICU_REGEXP","NESTED_ICU","ICU_BLOCK_REGEXP","SUBTEMPLATE_REGEXP","PH_REGEXP","NGSP_UNICODE_REGEXP","parentTNodeIndex","subTemplateIndex","rootTNode","existingTNodeStack","msgParts","replaceNgsp","isRootTemplateMessage","removeInnerTemplateTranslation","getTranslationForTemplate","i18nParseTextIntoPartsAndICU","i18nStartFirstCreatePassProcessTextNode","icuStart","createTNodeAndAddOpCode","isClosing","createTNodePlaceholder","existingTNodes","isICU","i18nNodeIdx","loader","ensureIcuContainerVisitorLoaded","loadIcuContainerVisitor","assertEqual","setTNodeInsertBeforeIndex","hasBinding","generateBindingUpdateOpCodes","destinationNode","bindingStart","maskIndex","sizeIndex","textParts","textValue","toMaskBit","opCodes","tagMatched","inTemplate","bindingMask","mainBinding","addUpdateIcuSwitch","setTIcu","valueArr","nestedIcus","icuIndex","parseIcuCase","addUpdateIcuUpdate","icuType","binding","blocks","prevPos","braceStack","results","braces","lastIndex","block","parseICUBlock","caseName","unsafeCaseHtml","inertRootNode","walkIcuTree","sharedUpdateOpCodes","depth","addCreateNodeAndAppend","lowerAttrName","addCreateAttribute","addRemoveNode","COMMENT_NODE","isNestedIcu","addRemoveNestedIcu","appendToParentIdx","createAtIdx","icuCreateOpCode","PP_MULTI_VALUE_PLACEHOLDERS_REGEXP","PP_PLACEHOLDERS_REGEXP","PP_ICU_VARS_REGEXP","PP_ICU_PLACEHOLDERS_REGEXP","PP_ICUS_REGEXP","PP_CLOSE_TEMPLATE_REGEXP","PP_TEMPLATE_ID_REGEXP","replacements","templateIdsStack","phs","tmpl","placeholders","placeholder","templateId","isCloseTemplateTag","currentTemplateId","_type","_idx","messageIndex","i18nStartFirstCreatePass","tI18n","sameViewParentTNode","applyCreateOpCodes","setInI18nBlock","ɵɵi18nStart","ɵɵi18nEnd","previousElementIndex","countBindings","i18nAttributesFirstPass","setMaskBit","hasChange","ɵɵi18nExp","applyI18n","i18nPostprocess","viewProviders","resolveProvider$1","lInjectablesBlueprint","providerFactory","beginIndex","ɵɵdirectiveInject","existingFactoryIndex","registerDestroyHooksIfSupported","existingProvidersFactoryIndex","existingViewProvidersFactoryIndex","doesViewProvidersFactoryExist","factoryFn","f","componentProviders","multiFactoryAdd","multiFactory","multiViewProvidersFactoryResolver","multiProvidersFactoryResolver","contextIndex","indexInFactory","providerIsTypeProvider","isClassProvider","existingCallbacksIndex","isComponentProvider","lData","multiResolve","factories","componentCount","multiProviders","processProvidersFn","ComponentRef","ComponentFactory","_NullComponentFactoryResolver","ERROR_COMPONENT","noComponentFactoryError","ComponentFactoryResolver","ElementRef","SWITCH_ELEMENT_REF_FACTORY","createElementRef","RendererFactory2","Renderer2","SWITCH_RENDERER2_FACTORY","nodeAtIndex","getOrCreateRenderer2","Sanitizer","Version","full","major","minor","patch","VERSION","DefaultIterableDifferFactory","isListLikeIterable","trackByFn","DefaultIterableDiffer","trackByIdentity","_linkedRecords","_unlinkedRecords","_previousItHead","_itHead","_itTail","_additionsHead","_additionsTail","_movesHead","_movesTail","_removalsHead","_removalsTail","_identityChangesHead","_identityChangesTail","_next","nextIt","nextRemove","addRemoveOffset","moveOffsets","getPreviousIndex","adjPreviousIndex","_nextRemoved","localMovePreviousIndex","localCurrentIndex","_nextPrevious","_nextAdded","_nextMoved","_nextIdentityChange","collection","check","_reset","itemTrackBy","mayBeDirty","trackById","_verifyReinsertion","_addIdentityChange","_mismatch","done","iterateListLike","_truncate","isDirty","previousRecord","_prev","_remove","_reinsertAfter","_moveAfter","_addAfter","IterableChangeRecord_","reinsertRecord","_addToMoves","nextRecord","_addToRemovals","_unlink","prevRecord","_prevRemoved","_insertAfter","_DuplicateMap","put","toIndex","_prevDup","_nextDup","_DuplicateItemRecordList","_head","_tail","atOrAfterIndex","duplicates","recordList","moveOffset","DefaultKeyValueDifferFactory","DefaultKeyValueDiffer","_records","_mapHead","_appendAfter","_previousMapHead","_changesHead","_changesTail","_nextChanged","_forEach","_maybeAddToChanges","_getOrCreateRecordForKey","_insertBeforeOrAppend","KeyValueChangeRecord_","_addToAdditions","_addToChanges","IterableDiffers","iterable","getTypeNameForDebugging","copied","defaultIterableDiffersFactory","KeyValueDiffers","kv","defaultKeyValueDiffersFactory","lNode","lViewInAContainer","lViewFirstChildTNode","collectNativeNodes","nodesInSlot","jn","ViewRef","_cdRefInjectingView","_appRef","_attachedToViewContainer","viewRefs","destroyLView","callback","storeCleanupWithContext","detectChangesInternal","setIsInCheckNoChangesMode","checkNoChangesInternal","renderDetachView","appRef","RootViewRef","detectChangesInRootView","checkNoChangesInRootView","SWITCH_CHANGE_DETECTOR_REF_FACTORY","isPipe","createViewRef","ChangeDetectorRef","keyValDiff","defaultIterableDiffers","defaultKeyValueDiffers","SWITCH_TEMPLATE_REF_FACTORY","createTemplateRef","TemplateRef","R3TemplateRef","_declarationLView","_declarationTContainer","elementRef","declarationViewLQueries","NgModuleRef","NgModuleFactory","SWITCH_VIEW_CONTAINER_REF_FACTORY","createContainerRef","ViewContainerRef","R3ViewContainerRef","_lContainer","_hostTNode","_hostLView","getViewRefs","insert","componentFactory","projectableNodes","ngModuleRef","contextInjector","parentInjector","componentRef","viewAttachedToContainer","prevIdx","detach","prevLContainer","prevVCRef","adjustedIdx","_adjustIndex","containerLength","addToArray","trackMovedView","insertView","parentNativeNode","addViewToContainer","attachToViewContainerRef","getOrCreateViewRefs","viewRefsArr","detachedView","commentNode","nativeNextSibling","NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR","ComponentFactoryResolver$1","componentDef","ComponentFactory$1","nonMinified","templateName","SCHEDULER","componentType","selectorList","stringifyCSSSelector","stringifyCSSSelectorList","isBoundToModule","toRefArray","rootSelectorOrNode","tElementNode","rootViewInjector","createChainedInjector","hostRenderer","elementName","hostRNode","elementOrSelector","selectRootElement","rElement","locateHostElement","getNamespace$1","rootFlags","scheduler","playerHandler","clean","createRootContext","rootTView","rootLView","viewRenderer","createRootComponentView","extractAttrsAndClassesFromSelector","si","nodesforSlot","hostFeatures","instantiateRootComponent","createRootComponent","LifecycleHooksFeature","ComponentRef$1","_rootLView","changeDetectorRef","clazz","assign","modules","NgModuleRef$1","_parent","_bootstrapComponents","destroyCbs","componentFactoryResolver","zn","ngLocaleIdDef","getNgLocaleIdDef","setLocaleId","maybeUnwrapFn","_r3Injector","injectFlags","destroyed","NgModuleFactory$1","moduleType","visited","incoming","assertSameOrNotExisting","recurse","registerNgModuleType","slotOffset","pureFn","thisArg","getBindingRoot","updateBinding","getBinding","exp","pureFunction1Internal","pureFunction2Internal","pureFunction3Internal","pureFunction4Internal","exp5","exp6","exp7","exp8","exps","pureFunctionVInternal","returnValueIndex","lastReturnValue","bindingRoot","getPureFunctionReturnValue","pipeName","getPipeDef$1","pipeFactory","pipeInstance","unwrapValue$1","isPure","unwrap","EventEmitter_","isAsync","__isAsync","observerOrNext","_c","nextFn","errorFn","completeFn","_wrapInTimeout","sink","Subscription","Subject","_results","QueryList","_emitDistinctChangesOnly","dirty","_changesDetected","_changes","last","symbolIterator","some","resultsTree","identityAccessor","newResultFlat","b","valueA","valueB","arrayEquals","LQuery_","queryList","setDirty","LQueries_","tQueries","noOfInheritedQueries","viewLQueries","tQuery","getByIndex","indexInDeclarationView","dirtyQueriesWithMatches","getTQuery","TQueryMetadata_","predicate","read","TQueries_","queriesForTemplateRef","childQueryIndex","tqueryClone","tquery","TQuery_","metadata","crossesNgTemplate","_appliesToNextNode","_declarationNodeIndex","isApplyingToNode","matchTNode","addMatch","declarationNodeIdx","matchTNodeWithReadOption","getIdxOfMatchingSelector","nodeMatchIdx","directiveOrProviderIdx","matchIdx","matchingIdx","createResultByTNodeType","createSpecialToken","queryIndex","lQuery","tQueryMatches","matchedNodeIdx","createResultForNode","lViewResults","materializeViewResults","collectQueryResults","embeddedLViews","getCurrentQueryIndex","reset","unwrapElementRef","notifyOnChanges","createTQuery","createLQuery","tViewContentQueries","saveContentQueryAndDirectiveIndex","track","angularCoreEnv","ɵɵdefineNgModule","ɵɵdefinePipe","ɵɵgetInheritedFactory","ɵɵinvalidFactory","ɵɵtemplateRefExtractor","ɵɵProvidersFeature","ɵɵCopyDefinitionFeature","ɵɵnextContext","ɵɵnamespaceHTML","ɵɵnamespaceMathML","ɵɵnamespaceSVG","ɵɵenableBindings","ɵɵdisableBindings","ɵɵelement","ɵɵelementContainer","ɵɵpureFunction0","ɵɵpureFunction1","ɵɵpureFunction2","ɵɵpureFunction3","ɵɵpureFunction4","ɵɵpureFunction5","ɵɵpureFunction6","ɵɵpureFunction7","ɵɵpureFunction8","ɵɵpureFunctionV","ɵɵgetCurrentView","ɵɵrestoreView","ɵɵprojection","ɵɵpipeBind1","ɵɵpipeBind2","ɵɵpipeBind3","ɵɵpipeBind4","ɵɵpipeBindV","ɵɵprojectionDef","ɵɵpipe","ɵɵqueryRefresh","ɵɵviewQuery","ɵɵloadQuery","ɵɵcontentQuery","ɵɵreference","ɵɵclassMap","ɵɵclassMapInterpolate1","ɵɵclassMapInterpolate2","ɵɵclassMapInterpolate3","ɵɵclassMapInterpolate4","ɵɵclassMapInterpolate5","ɵɵclassMapInterpolate6","ɵɵclassMapInterpolate7","ɵɵclassMapInterpolate8","ɵɵclassMapInterpolateV","ɵɵstyleMapInterpolate1","ɵɵstyleMapInterpolate2","ɵɵstyleMapInterpolate3","ɵɵstyleMapInterpolate4","ɵɵstyleMapInterpolate5","ɵɵstyleMapInterpolate6","ɵɵstyleMapInterpolate7","ɵɵstyleMapInterpolate8","ɵɵstyleMapInterpolateV","ɵɵadvance","ɵɵtemplate","ɵɵtext","ɵɵi18n","ɵɵi18nAttributes","ɵɵi18nApply","ɵɵi18nPostprocess","ɵɵresolveWindow","ɵɵresolveDocument","ɵɵresolveBody","ɵɵsetComponentScope","ɵɵsetNgModuleScope","ɵɵsanitizeHtml","ɵɵsanitizeStyle","ɵɵsanitizeScript","ɵɵsanitizeUrlOrResourceUrl","ɵɵtrustConstantHtml","ɵɵtrustConstantResourceUrl","ɵ0$c","moduleQueue","compileNgModule","expandModuleWithProviders","NgModule","compileInjector","isModuleWithProviders","ngDirectiveDef","getDirectiveMetadata$1","Directive","addDirectiveFactoryDef","compileDirective","sourceMapUrl","facade","extractQueriesMetadata","isContentQuery","lifecycle","usesOnChanges","hasLifecycleHook","typeSourceSpan","usesInheritance","extendsDirectlyFromObject","extractExportAs","viewQueries","isViewQuery","directiveMetadata","createParseSourceSpan","objPrototype","shouldAddAbstractDirective","addDirectiveDefToUndecoratedParents","splitByComma","isQueryAnn","queriesMeta","ann","isInputAnnotation","propertyName","convertToR3QueryPredicate","descendants","static","emitDistinctChangesOnly","convertToR3QueryMetadata","piece","LIFECYCLE_HOOKS","hookName","metadataName","SWITCH_COMPILE_DIRECTIVE","Input","makePropDecorator","bindingPropertyName","Output","SWITCH_COMPILE_NGMODULE","compileNgModuleDefs","enqueueModuleForDelayedScoping","APP_INITIALIZER","ApplicationInitStatus","appInits","noop","reject","initialized","donePromise","rej","asyncInitPromises","initResult","isPromise","observableAsPromise","all","catch","APP_ID","APP_ID_RANDOM_PROVIDER","_randomChar","fromCharCode","random","PLATFORM_INITIALIZER","APP_BOOTSTRAP_LISTENER","Console","log","LOCALE_ID$1","DEFAULT_CURRENCY_CODE","ModuleWithComponentFactories","ngModuleFactory","componentFactories","Compiler_compileModuleSync__POST_R3__","Compiler_compileModuleSync","Compiler_compileModuleAsync","Compiler_compileModuleAndAllComponentsSync__POST_R3__","declaration","Compiler_compileModuleAndAllComponentsSync","Compiler_compileModuleAndAllComponentsAsync","Compiler","compileModuleSync","compileModuleAsync","compileModuleAndAllComponentsSync","compileModuleAndAllComponentsAsync","promise","Zone","scheduleMicroTask","NgZone","enableLongStackTrace","shouldCoalesceEventChangeDetection","shouldCoalesceRunChangeDetection","hasPendingMacrotasks","hasPendingMicrotasks","isStable","onUnstable","onMicrotaskEmpty","onStable","assertZonePatched","_nesting","_outer","_inner","TaskTrackingZoneSpec","fork","longStackTraceZoneSpec","lastRequestAnimationFrameId","nativeRequestAnimationFrame","nativeCancelAnimationFrame","cancelAnimationFrame","unpatchedRequestAnimationFrame","__symbol__","unpatchedCancelAnimationFrame","getNativeRequestAnimationFrame","delayChangeDetectionForEventsDelegate","isCheckStableRunning","fakeTopEventTask","root","scheduleEventTask","updateMicroTaskStatus","checkStable","invoke","delayChangeDetectionForEvents","properties","isAngularZone","onInvokeTask","delegate","task","applyThis","applyArgs","onEnter","invokeTask","onLeave","onInvoke","onHasTask","hasTaskState","hasTask","change","_hasPendingMicrotasks","microTask","macroTask","onHandleError","runOutsideAngular","forkInnerZoneWithAngularBehavior","run","EMPTY_PAYLOAD","runTask","cancelTask","runGuarded","isInAngularZone","NoopNgZone","Testability","_ngZone","_pendingCount","_isZoneStable","_didWork","_callbacks","taskTrackingZone","_watchAngularEvents","assertNotInAngularZone","_runCallbacksIfReady","cb","clearTimeout","timeoutId","doneCb","pending","getPendingTasks","updateCb","macroTasks","creationLocation","timeout","addCallback","using","exactMatch","TestabilityRegistry","_applications","_testabilityGetter","addToWindow","testability","elem","findInAncestors","findTestabilityInTree","getter","_NoopGetTestability","_devMode","_runModeLocked","_platform","compileNgModuleFactory","moduleFactory","ALLOW_MULTIPLE_PLATFORMS","NgProbeToken","PlatformRef","inits","parentPlatformFactory","desc","extraProviders","getPlatform","injectedProviders","createPlatform","assertPlatform","requiredToken","_injector","_modules","_destroyListeners","ngZone","ngZoneOption","extra","ngZoneEventCoalescing","ngZoneRunCoalescing","getNgZone","ngZoneInjector","moduleRef","exceptionHandler","initStatus","runInitializers","_moduleDoBootstrap","_callAndReportToErrorHandler","compilerOptions","optionsReducer","bootstrapModuleFactory","ApplicationRef","ngDoBootstrap","objs","_zone","_exceptionHandler","_componentFactoryResolver","_initStatus","_bootstrapListeners","_views","_runningTick","_stable","componentTypes","_onMicrotaskEmptySubscription","tick","isCurrentlyStable","stableSub","unstableSub","assertInAngularZone","merge$1","share","componentOrFactory","resolveComponentFactory","cf","compRef","testabilityRegistry","registerApplication","unregisterApplication","_loadComponent","detectChanges","attachToAppRef","detachFromAppRef","attachView","NgModuleFactoryLoader","SystemJsNgModuleLoaderConfig","DEFAULT_CONFIG","factoryPathPrefix","factoryPathSuffix","SystemJsNgModuleLoader","_compiler","config","_config","loadAndCompile","exportName","System","checkNotEmpty","factoryClassSuffix","modulePath","getDebugNodeR2","_nativeNode","platformCore","createPlatformFactory","APPLICATION_MODULE_PROVIDERS","queue","$localize","ApplicationModule","BaseControlValueAccessor","_elementRef","onChange","onTouched","isDisabled","BuiltInControlValueAccessor","ɵBuiltInControlValueAccessor_BaseFactory","NG_VALUE_ACCESSOR","CHECKBOX_VALUE_ACCESSOR","CheckboxControlValueAccessor","ɵCheckboxControlValueAccessor_BaseFactory","$event","checked","DEFAULT_VALUE_ACCESSOR","DefaultValueAccessor","COMPOSITION_BUFFER_MODE","_compositionMode","Jt","_composing","userAgent","ɵgetDOM","getUserAgent","_isAndroid","_handleInput","_compositionStart","_compositionEnd","NG_VALIDATORS","NG_ASYNC_VALIDATORS","EMAIL_REGEXP","Validators","minValidator","control","isEmptyInputValue","maxValidator","requiredValidator","required","requiredTrueValidator","emailValidator","minLength","minLengthValidator","maxLength","maxLengthValidator","patternValidator","validators","compose","composeAsync","email","hasValidLength","minlength","requiredLength","actualLength","maxlength","regexStr","regex","requiredPattern","actualValue","nullValidator","obs","ɵisObservable","arrayOfErrors","errors","validator","validate","isValidatorFn","c","presentValidators","isPresent","mergeErrors","executeValidators","normalizeValidators","observables","toObservable","forkJoin","controlValidators","dirValidator","_rawValidators","_rawAsyncValidators","includes","currentValidators","makeValidatorsArray","validatorsToAdd","hasValidator","AbstractControlDirective","_onDestroyCallbacks","valid","invalid","disabled","pristine","touched","untouched","statusChanges","valueChanges","_composedValidatorFn","composeValidators","_composedAsyncValidatorFn","composeAsyncValidators","errorCode","hasError","getError","ControlContainer","ɵControlContainer_BaseFactory","NgControl","valueAccessor","AbstractControlStatus","cd","_cd","submitted","NgControlStatus","NgControlStatusGroup","setUpValidators","writeValue","registerOnChange","_pendingValue","_pendingChange","_pendingDirty","updateOn","updateControl","setUpViewChangePipeline","emitModelEvent","viewToModelUpdate","_registerOnDestroy","_unregisterOnChange","setUpModelChangePipeline","registerOnTouched","_pendingTouched","markAsTouched","setUpBlurPipeline","setDisabledState","onDisabledChange","registerOnDisabledChange","_unregisterOnDisabledChange","setUpDisabledChangeHandler","cleanUpValidators","_invokeOnDestroyCallbacks","_registerOnCollectionChange","registerOnValidatorChange","getControlValidators","setValidators","mergeValidators","asyncValidators","getControlAsyncValidators","asyncValidator","setAsyncValidators","onValidatorChange","updateValueAndValidity","isControlUpdated","updatedValidators","updatedAsyncValidators","markAsDirty","emitModelToViewChange","viewModel","model","isFirstChange","_syncPendingControls","valueAccessors","defaultAccessor","builtinAccessor","customAccessor","rr","VALID","INVALID","PENDING","DISABLED","validatorOrOpts","isOptionsObj","AbstractControl","_hasOwnPendingAsyncValidator","_onCollectionChange","_onDisabledChange","coerceToValidator","coerceToAsyncValidator","validatorFn","asyncValidatorFn","_updateOn","addValidators","removeValidators","onlySelf","_forEachChild","markAllAsTouched","markAsUntouched","_updateTouched","markAsPristine","_updatePristine","emitEvent","markAsPending","skipPristineCheck","_parentMarkedDirty","disable","_updateValue","_updateAncestors","changeFn","enable","_setInitialStatus","_cancelExistingSubscription","_runValidator","_calculateStatus","_runAsyncValidator","ctrl","_updateTreeValidity","_allControlsDisabled","_asyncValidationSubscription","setErrors","_updateControlsErrors","delimiter","controlToFind","FormGroup","controls","FormArray","_find","_anyControlsHaveStatus","_anyControls","_anyControlsDirty","_anyControlsTouched","formState","FormControl","pickValidators","pickAsyncValidators","_onChange","_applyFormState","_setUpdateStrategy","_initObservables","yn","emitViewToModelChange","removeListItem","_isBoxedValue","_setUpControls","setParent","registerControl","controlName","_checkAllValuesPresent","_throwIfControlMissing","patchValue","_reduceChildren","acc","getRawValue","subtreeUpdated","updated","un","_reduceValue","contains","initValue","_registerControl","formDirectiveProvider","NgForm","resolvedPromise","ɵ0","_directives","ngSubmit","_findContainer","setUpControl","removeControl","group","setUpFormContainer","syncPendingControls","resetForm","onSubmit","onReset","formControlBinding","NgModel","resolvedPromise$1","ɵ0$1","Ae","_registered","_setValidators","_setAsyncValidators","selectValueAccessor","_checkForErrors","_setUpControl","_updateDisabled","isPropertyUpdated","formDirective","controlPath","_isStandalone","_setUpStandalone","addControl","standalone","_checkParentType","_checkName","disabledValue","ɵNgNoValidate","NUMBER_VALUE_ACCESSOR","NumberValueAccessor","ɵNumberValueAccessor_BaseFactory","RADIO_VALUE_ACCESSOR","RadioControlValueAccessor","RadioControlRegistryModule","RadioControlRegistry","_accessors","accessor","_isSameGroup","fireUncheck","controlPair","_control","_registry","_state","_fn","select","formControlName","NG_MODEL_WITH_FORM_CONTROL_WARNING","formDirectiveProvider$1","FormGroupDirective","_updateDomValue","_checkFormPresent","_updateValidators","_updateRegistrations","_oldForm","cleanUpControl","_setUpFormContainer","_cleanUpFormContainer","oldCtrl","newCtrl","cleanUpFormContainer","controlNameBinding","FormControlName","_ngModelWarningConfig","_added","_ngModelWarningSent","updateModel","_ngModelWarningSentOnce","SELECT_VALUE_ACCESSOR","SelectControlValueAccessor","_optionMap","_idCounter","_compareWith","_getOptionId","valueString","_buildValueString","_getOptionValue","_extractId","ɵSelectControlValueAccessor_BaseFactory","compareWith","NgSelectOption","_element","_select","_registerOption","_setElementValue","ngValue","SELECT_MULTIPLE_VALUE_ACCESSOR","SelectMultipleControlValueAccessor","optionSelectedStateSetter","ids","opt","_setSelected","selected","selectedOptions","_extractId$1","ɵSelectMultipleControlValueAccessor_BaseFactory","ɵNgSelectMultipleOption","_buildValueString$1","AbstractValidatorDirective","_validator","inputName","normalizeInput","createValidator","MIN_VALIDATOR","MinValidator","handleChanges","ɵMinValidator_BaseFactory","tmp_b_0","REQUIRED_VALIDATOR","RequiredValidator","_required","EMAIL_VALIDATOR","EmailValidator","_enabled","MIN_LENGTH_VALIDATOR","MinLengthValidator","_createValidator","toNumber","MAX_LENGTH_VALIDATOR","MaxLengthValidator","PATTERN_VALIDATOR","PatternValidator","ɵInternalFormsSharedModule","FormsModule","ReactiveFormsModule","warnOnNgModelWithFormControl","FormBuilder","controlsConfig","_reduceControls","isAbstractControlOptions","_createControl","controlConfig","urlParsingNode","BrowserDomAdapter","evt","dispatchEvent","getDefaultDocument","DocumentFragment","baseElement","getAttribute","pathName","relativePath","navigator","ɵsetRootDomAdapter","GenericBrowserDomAdapter","At","supportsDOMEvents","ɵDomAdapter","TRANSITION_ID","SERVER_TRANSITION_PROVIDERS","transitionId","dom","querySelectorAll","BrowserGetTestability","ɵglobal","getAllTestabilities","getAllRootElements","testabilities","didWork","decrement","didWork_","whenStable","getTestability","isShadowRoot","parentElement","setTestabilityGetter","BrowserXhr","XMLHttpRequest","EVENT_MANAGER_PLUGINS","EventManager","plugins","_eventNameToPlugin","manager","Ct","_plugins","_findPluginFor","addGlobalEventListener","plugin","EventManagerPlugin","SharedStylesHost","_stylesSet","additions","onStylesAdded","DomSharedStylesHost","Dt","_hostNodes","head","styleNodes","styleEl","Kn","hostNode","_addStylesToHost","vn","styleNode","NAMESPACE_URIS","svg","xhtml","xlink","xml","xmlns","COMPONENT_REGEX","HOST_ATTR","CONTENT_ATTR","compId","flattenStyles","eventHandler","DomRendererFactory2","eventManager","sharedStylesHost","appId","rendererByCompId","defaultRenderer","DefaultDomRenderer2","EmulatedEncapsulationDomRenderer2","applyToHost","ShadowDomRenderer","addStyles","newChild","refChild","oldChild","selectorOrNode","preserveContent","namespaceUri","removeAttributeNS","decoratePreventDefault","Et","contentAttr","componentShortId","shimContentAttribute","hostAttr","shimHostAttribute","hostEl","addHost","removeHost","nodeOrShadowRoot","DomEventsPlugin","MODIFIER_KEYS","_keyMap","Del","Esc","Left","Right","Up","Down","Menu","Scroll","Win","_chromeNumKeyPadMap","A","B","C","E","F","G","I","J","M","N","O","MODIFIER_KEY_GETTERS","alt","altKey","ctrlKey","metaKey","shiftKey","KeyEventsPlugin","parseEventName","parsedEvent","outsideHandler","eventCallback","fullKey","getZone","onAndCancel","domEventName","_normalizeKey","modifierName","keyIdentifier","getEventKey","modifierGetter","getEventFullKey","keyName","DomSanitizer","DomSanitizerImpl","ɵallowSanitizationBypassAndThrow","ɵunwrapSafeValue","ɵ_sanitizeHtml","ɵgetSanitizationBypassType","ɵ_sanitizeUrl","ɵbypassSanitizationTrustHtml","ɵbypassSanitizationTrustStyle","ɵbypassSanitizationTrustScript","ɵbypassSanitizationTrustUrl","ɵbypassSanitizationTrustResourceUrl","domSanitizerImplFactory","INJECTOR","platformBrowser","ɵPLATFORM_BROWSER_ID","makeCurrent","ɵsetDocument","BROWSER_MODULE_PROVIDERS","ɵINJECTOR_SCOPE","BrowserModule","parentModule","EmptyError","EmptyErrorImpl","accumulator","seed","hasSeed","lift","ScanOperator","subscriber","ScanSubscriber","destination","_seed","ht","_tryNext","err","Subscriber","empty","TakeLastOperator","ArgumentOutOfRangeError","TakeLastSubscriber","mn","ring","errorFactory","defaultErrorFactory","ThrowIfEmptyOperator","ThrowIfEmptySubscriber","hasValue","DefaultIfEmptyOperator","DefaultIfEmptySubscriber","isEmpty","hasDefaultValue","identity","take","defaultIfEmpty","throwIfEmpty","RouterEvent","NavigationStart","navigationTrigger","restoredState","NavigationEnd","urlAfterRedirects","Hn","NavigationCancel","reason","NavigationError","RoutesRecognized","GuardsCheckStart","GuardsCheckEnd","shouldActivate","Gt","ResolveStart","ResolveEnd","RouteConfigLoadStart","route","RouteConfigLoadEnd","ChildActivationStart","snapshot","routeConfig","ChildActivationEnd","ActivationStart","ActivationEnd","routerEvent","PRIMARY_OUTLET","ParamsAsMap","NAVIGATION_CANCELING_ERROR","segments","segmentGroup","pathMatch","hasChildren","posParams","segment","consumed","k1","k2","equalArraysOrString","aSorted","sort","bSorted","pathCompareMap","exact","containee","matrixParams","equalPath","matrixParamsMatch","numberOfChildren","children","equalSegmentGroups","subset","containsSegmentGroup","paramCompareMap","shallowEqual","ignored","paths","fragment","containsSegmentGroupHelper","containeePaths","containerPaths","containeeSegment","UrlTree","_queryParamMap","convertToParamMap","DEFAULT_SERIALIZER","serialize","UrlSegmentGroup","serializePaths","UrlSegment","_parameterMap","serializePath","as","bs","UrlSerializer","DefaultUrlSerializer","UrlParser","parseRootSegment","parseQueryParams","parseFragment","tree","serializeSegment","strParams","encodeUriQuery","serializeQueryParams","encodeURI","encodeUriFragment","primary","childOutlet","mapChildrenIntoArray","encodeUriString","decode","encodeUriSegment","serializeMatrixParams","SEGMENT_RE","QUERY_PARAM_RE","QUERY_PARAM_VALUE_RE","remaining","consumeOptional","peekStartsWith","parseChildren","parseQueryParam","parseSegment","capture","parseParens","matchSegments","parseMatrixParams","parseParam","valueMatch","matchQueryParams","matchUrlQueryParamValue","decodedKey","decodeQuery","decodedVal","currentVal","allowPrimary","outletName","Tree","_root","pathFromRoot","findNode","findPath","cc","TreeNode","outlet","RouterState","setRouterState","urlTree","activated","ActivatedRouteSnapshot","RouterStateSnapshot","createEmptyStateSnapshot","emptyUrl","BehaviorSubject","emptyParams","emptyData","emptyQueryParams","ActivatedRoute","futureSnapshot","_futureSnapshot","_routerState","_paramMap","paramsInheritanceStrategy","inheritingStartingFrom","flattenInherited","curr","_resolvedData","urlSegment","lastPathIndex","_urlSegment","_lastPathIndex","_resolve","serializeNode","currentSnapshot","nextSnapshot","shallowEqualArrays","equalSegments","equalParamsAndUrlSegments","routeReuseStrategy","prevState","shouldReuseRoute","createNode","createOrReuseChildren","shouldAttach","detachedRouteHandle","retrieve","setFutureSnapshotsOfActivatedRoutes","createActivatedRoute","commands","nav","Navigation","numberOfDoubleDots","isAbsolute","cmd","cmdIdx","outlets","segmentPath","urlPart","partIndex","computeNavigation","toRoot","startingPosition","Position","modifier","isMatrixParams","g","ci","dd","createPositionApplyingDoubleDots","findStartingPosition","processChildren","updateSegmentGroupChildren","updateSegmentGroup","command","oldSegmentGroup","newSegmentGroup","qp","replaceSegment","oldSegment","newSegment","cmdWithOutlet","isCommandWithOutlets","currentCommandIndex","currentPathIndex","noMatch","pathIndex","commandIndex","compare","prefixedWith","slicedCommands","createNewSegmentGroup","getOutlets","createNewSegmentChildren","ActivateRoutes","futureState","currState","forwardEvent","parentContexts","futureRoot","currRoot","deactivateChildRoutes","advanceActivatedRoute","activateChildRoutes","futureNode","currNode","contexts","nodeChildrenAsMap","childOutletName","futureChild","deactivateRoutes","childName","deactivateRouteAndItsChildren","parentContext","future","getContext","shouldDetach","detachAndStoreRouteSubtree","deactivateRouteAndOutlet","onOutletDeactivated","deactivate","attachRef","resolver","activateRoutes","getOrCreateContext","stored","onOutletReAttached","attach","advanceActivatedRouteNodeAndItsChildren","_loadedConfig","parentLoadedConfig","cmpFactoryResolver","activateWith","LoadedRouterConfig","routes","INITIAL_VALUE","switchMap","combineLatest","startWith","scan","isPending","innerAcc","isUrlTree","ɵEmptyOutletComponent","RouterOutlet","parentPath","fullPath","getFullPath","validateNode","validateConfig","currentRoute","standardizeConfig","loadChildren","sortedConfig","getOutlet","consumedSegments","lastChild","positionalParamSegments","matcher","defaultUrlMatcher","slicedSegments","relativeLinkResolution","containsEmptyPathMatchesWithNamedOutlets","createChildrenForEmptyPaths","_sourceSegment","_segmentIndexShift","containsEmptyPathMatches","addEmptyPathsToChildrenIfNeeded","emptyPathMatch","oo","primarySegment","kt","rawSegment","NoMatch","AbsoluteRedirect","newTree","redirectTo","ApplyRedirects","configLoader","urlSerializer","allowRedirects","splitGroup","rootSegmentGroup","expandSegmentGroup","createUrlTree","squashSegmentGroup","catchError","noMatchError","rootCandidate","expandChildren","expandSegment","childOutlets","sortedRoutes","sortByMatchingOutlets","expandedChild","takeLast","last$1","expandSegmentAgainstRoute","noLeftoversInUrl","isImmediateMatch","matchSegmentAgainstRoute","expandSegmentAgainstRouteUsingRedirect","noMatch$1","expandWildCardWithParamsAgainstRouteUsingRedirect","expandRegularSegmentAgainstRouteUsingRedirect","applyRedirectCommands","absoluteRedirect","lineralizeSegments","mergeMap","newSegments","rawSegmentGroup","cfg","rawSlicedSegments","getChildConfig","routerConfig","childModule","childConfig","qo","splitSegmentGroup","matchedOnOutlet","cs","runCanLoadGuards","shouldLoadResult","navigationCancelingError","canLoadFails","canLoad","canLoadObservables","injectionToken","guardVal","guard","isFunction","isCanLoad","wrapIntoObservable","prioritizedGuardValue","tap","namedOutletsRedirect","applyRedirectCreatreUrlTree","newRoot","createSegmentGroup","createQueryParams","redirectToParams","actualParams","sourceName","updatedSegments","createSegments","redirectToSegments","actualSegments","findPosParam","findOrReturn","redirectToUrlSegment","newChildren","childCandidate","mergeTrivialChildren","CanActivate","CanDeactivate","getChildRouteGuards","getClosestLoadedConfig","futurePath","checks","canDeactivateChecks","canActivateChecks","prevChildren","getRouteGuards","shouldRun","shouldRunGuardsAndResolvers","runGuardsAndResolvers","isActivated","Q","X","NoMatch$1","Recognizer","rootComponentType","processSegmentGroup","freeze","rootNode","routeState","inheritParamsAndData","routeNode","inheritedParamsDataResolve","processSegment","outletChildren","mergedChildren","mergeEmptyPathMatches","sortActivatedRouteSnapshots","nodes","localeCompare","processSegmentAgainstRoute","ye","getData","getSourceSegmentGroup","getPathIndexShift","getResolve","So","mergedNodes","hasEmptyPathConfig","Zn","duplicateEmptyPathNode","resultNode","mergedNode","nextResult","RouteReuseStrategy","DefaultRouteReuseStrategy","BaseRouteReuseStrategy","detachedTree","ROUTES","RouterConfigLoader","onLoadStartListener","onLoadEndListener","_loader$","loadRunner","loadModuleFactory","ConnectableObservable","refCount","OutletContext","ChildrenOutletContexts","UrlHandlingStrategy","DefaultUrlHandlingStrategy","newUrlPart","wholeUrl","runExtras","exactMatchOptions","subsetMatchOptions","Router","rootContexts","lastSuccessfulNavigation","currentNavigation","disposed","lastLocationChangeInfo","navigationId","currentPageId","isNgZoneEnabled","events","defaultErrorHandler","malformedUriErrorHandler","defaultMalformedUriErrorHandler","navigated","lastSuccessfulId","beforePreactivation","defaultRouterHook","afterPreactivation","urlHandlingStrategy","onSameUrlNavigation","urlUpdateStrategy","canceledNavigationResolution","ɵConsole","resetConfig","currentUrlTree","rawUrlTree","browserUrlTree","triggerEvent","routerState","createEmptyState","transitions","targetPageId","currentRawUrl","extractedUrl","extract","rawUrl","extras","targetSnapshot","currentRouterState","targetRouterState","guards","guardsResult","navigations","setupNavigations","processNavigations","ɵrouterPageId","eventsSubject","completed","errored","initialUrl","trigger","previousNavigation","urlTransition","shouldProcessUrl","isBrowserTriggeredNavigation","transition","getValue","serializeUrl","EMPTY","applyRedirects","applyRedirects$1","finalUrl","serializer","recognize","newObservableError","recognize$1","skipLocationChange","setBrowserUrl","routesRecognized","navStart","replaceUrl","switchTap","appliedUrlTree","guardsStart","getAllRouteGuards","futureRSS","currRSS","currARS","canDeactivate","canDeactivateObservables","observable","isCanDeactivate","runCanDeactivate","runCanDeactivateChecks","isBoolean","fireChildActivationStart","fireActivationStart","futureARS","canActivateChildGuardsMapped","canActivateChild","getCanActivateChild","defer","guardsMapped","isCanActivateChild","runCanActivateChild","canActivate","canActivateObservables","isCanActivate","runCanActivate","runCanActivateChecks","checkGuards","guardsEnd","restoreHistory","cancelNavigationTransition","resolveStart","dataResolved","canActivateChecksResolved","getResolver","resolveNode","resolvedData","runResolve","resolveData","resolveEnd","createRouterState","activate","finalize","cancelationReason","isNavigationCancelingError","redirecting","navCancel","mergedTree","scheduleNavigation","navError","ee","getTransition","setUpLocationChangeListener","navigateByUrl","locationSubscription","currentChange","extractLocationChangeInfoFromEvent","shouldScheduleNavigation","stateCopy","parseUrl","sameDestination","navigationExtras","relativeTo","queryParamsHandling","preserveFragment","q","removeEmptyProps","validateCommands","matchOptions","containsTree","priorPromise","lastNavigation","browserNavPrecededByRouterNav","duplicateNav","browserPageId","setTransition","generateNgRouterState","isCurrentPathEqualTo","restoringFromCaughtError","targetPagePosition","browserUrlUpdateOccurred","resetState","resetUrlToCurrentUrlTree","routerPageId","RouterLink","router","tabIndex","onChanges","attrBoolValue","onClick","routerLink","RouterLinkWithHref","locationStrategy","updateTargetUrlAndHref","button","changeDetector","_activatedRoute","activateEvents","deactivateEvents","onChildOutletCreated","onChildOutletDestroyed","cmp","ref","activatedRoute","childContexts","OutletInjector","createComponent","PreloadingStrategy","PreloadAllModules","NoPreloading","RouterPreloader","moduleLoader","preloadingStrategy","preload","processRoutes","preloadConfig","mergeAll","RouterScroller","viewportScroller","lastId","lastSource","restoredId","scrollPositionRestoration","anchorScrolling","setHistoryScrollRestoration","routerEventsSubscription","createScrollEvents","scrollEventsSubscription","consumeScrollEvents","getScrollPosition","scheduleScrollEvent","scrollToPosition","scrollToAnchor","ROUTER_CONFIGURATION","ROUTER_FORROOT_GUARD","ROUTER_PROVIDERS","assignExtraOptionsToRouter","enableTracing","groupEnd","RouterModule","provideRoutes","provideForRootGuard","createRouterScroller","routerNgProbeToken","RouterInitializer","getAppInitializer","ROUTER_INITIALIZER","getBootstrapListener","scrollOffset","setOffset","platformLocationStrategy","useHash","initNavigation","resultOfPreactivationDone","initialNavigation","bootstrappedComponentRef","preloader","routerScroller","setUpPreloading","resetRootComponentType","appInitializer","bootstrapListener","_typeof","descriptor","ownKeys","getOwnPropertySymbols","sym","_defineProperty","_arrayWithHoles","_arr","_n","_d","_e","_s","_i","return","_iterableToArrayLimit","TypeError","_nonIterableRest","_WINDOW","_DOCUMENT","MutationObserver","performance","_ref$userAgent","WINDOW","IS_DOM","documentElement","NAMESPACE_IDENTIFIER","DEFAULT_REPLACEMENT_CLASS","oneToTen","oneToTwenty","DUOTONE_CLASSES","GROUP","SWAP_OPACITY","PRIMARY","SECONDARY","initial","FontAwesomeConfig","_ref2","_slicedToArray","coerce","getAttrConfig","_objectSpread","familyPrefix","replacementClass","autoReplaceSvg","autoAddCss","autoA11y","searchPseudoElements","observeMutations","mutateApproach","keepOriginalSource","measurePerformance","showMissingIcons","shims","functions","doScroll","asyncTimer","SETTLED","FULFILLED","REJECTED","NOOP","isNode","process","asyncSetTimer","setImmediate","asyncQueue","asyncFlush","owner","settled","_data","handleThenable","resolved","An","fulfill","asyncCall","publishFulfillment","publishRejection","_then","invokeCallback","publish","_handled","P","rejectPromise","invokeResolver","onFulfillment","onRejection","fulfilled","rejected","notifyRejectionHandled","promises","race","meaninglessTransform","y","rotate","flipX","flipY","styleName","iconWidth","outer","containerWidth","innerTranslate","innerScale","innerRotate","inner","ALL_SPACE","height","abstract","force","_params$icons","icons","main","iconName","_params$watchable","watchable","found","widthClass","attrClass","class","role","viewBox","nextUniqueId","mainPath","icon","maskPath","trans","transformForSvg","maskRect","maskInnerGroupChildrenMixin","fillBlack","maskInnerGroup","maskOuterGroup","maskId","clipId","maskTag","maskUnits","maskContentUnits","defs","deGroup","makeIconMasking","styleString","joinStyles","transformIsMeaningful","makeIconStandard","asSymbol","asIcon","subject","thisContext","func","bindInternal4","tt","_params$skipHooks","skipHooks","normalized","addPack","defineIcons","lookup","reducer","ligatures","ligature","hasRegular","shim","mapping","abstractNodes","_abstractNodes$attrib","_abstractNodes$childr","htmlEscape","joinAttributes","toHtml","stack","MissingIcon","FILL","ANIMATION_BASE","attributeType","repeatCount","dur","OPACITY_ANIMATE","vectorData","_cssInserted","css","headChildren","childNodes","beforeChild","insertCss","drc","fp","rc","dPatt","customPropPatt","rPatt","abstractCreator","iconLookup","_iconLookup$prefix","iconFromMapping","library","definitions","cx","cy","opacity","Constructor","_classCallCheck","Library","_createClass","protoProps","staticProps","_defineProperties","_this","_len","_key","_pullDefinitions","_normalized$key","transformString","rest","parseTransformString","iconDefinition","_params$transform","_params$symbol","_params$mask","_params$title","_params$classes","_params$attributes","_params$styles","apiObject","ensureCss","focusable","makeInlineSvgAbstract","asFoundIcon","maybeIconDefinition","findIconDefinition","_c0","FaConfig","defaultPrefix","fallbackIcon","globalLibrary","FaIconLibrary","ne","Kt","pe","packs","pack","co","addIcons","Qe","faClassList","hn","spin","pulse","fixedWidth","border","inverse","counter","flip","pull","stackItemSize","Jn","FaStackItemSizeDirective","FaStackComponent","FaIconComponent","iconLibrary","stackItem","faWarnIfIconSpecMissing","buildParams","renderIcon","iconSpec","isIconLookup","faNormalizeIconSpec","getIconDefinition","globalDefinition","faWarnIfIconDefinitionMissing","classOpts","parsedTransform","a11yRole","renderedIcon","renderedIconHTML","bypassSecurityTrustHtml","FontAwesomeModule","T","raw","resultSelector","fromEvent","setupSubscription","sourceObj","isEventTarget","on","off","isJQueryStyleEventEmitter","addListener","removeListener","isNodeStyleEventEmitter","len","period","closed","schedule","fromArray","RaceOperator","RaceSubscriber","S","hasFirst","subscriptions","subscribeToResult","_outerValue","innerValue","outerIndex","OuterSubscriber","ZipOperator","ZipSubscriber","z","R","iterators","active","StaticArrayIterator","Symbol_iterator","StaticIterator","ZipBufferIterator","stillUnsubscribed","shouldComplete","hasCompleted","_tryresultSelector","Boolean","cn","buffer","isComplete","notifyInactive","checkIterators","innerSubscribe","SimpleInnerSubscriber","SimpleOuterSubscriber","notifier","TakeUntilOperator","takeUntilSubscriber","TakeUntilSubscriber","notifierSubscription","seenValue","project","WithLatestFromOperator","WithLatestFromSubscriber","toRespond","_tryProject","delay","absoluteDelay","delayFor","now","DelayOperator","DelaySubscriber","dispatch","notification","DelayMessage","_schedule","scheduleNotification","Notification","SkipOperator","SkipSubscriber","_c3","_c10","_c11","currentMonth_r9","currentMonth","selected_r10","disabled_r11","focused_r12","focused","month_r14","ctx_r16","i18n","getMonthLabel","firstDate","NgbDatepicker_ng_template_2_div_0_div_1_Template","ctx_r13","navigation","displayMonths","NgbDatepicker_ng_template_2_div_0_Template","ctx_r3","_r19","onNavigateEvent","onNavigateDateSelect","ctx_r4","prevDisabled","nextDisabled","selectBoxes","ctx_r2","getWeekLabel","weekday_r4","NgbDatepickerMonth_div_0_div_1_Template","NgbDatepickerMonth_div_0_div_2_Template","ctx_r0","datepicker","showWeekNumbers","weekdays","week_r5","ctx_r7","getWeekNumerals","number","NgbDatepickerMonth_ng_template_1_div_0_div_2_ng_template_1_ng_template_0_Template","day_r10","ctx_r11","dayTemplate","_r15","ctx_r14","doSelect","NgbDatepickerMonth_ng_template_1_div_0_div_2_ng_template_1_Template","hidden","tabindex","ariaLabel","NgbDatepickerMonth_ng_template_1_div_0_div_1_Template","NgbDatepickerMonth_ng_template_1_div_0_div_2_Template","ctx_r6","NgbDatepickerMonth_ng_template_1_div_0_Template","collapsed","_r3","years","NgbDatepickerNavigation_4_ng_template_0_div_0_Template","NgbDatepickerNavigation_4_ng_template_0_div_3_Template","month_r5","i_r6","NgbDatepickerNavigation_4_ng_template_0_Template","ctx_r1","_c20","_c21","_c22","m_r4","getMonthFullName","getMonthShortName","y_r5","getYearNumerals","_c31","_c32","_c33","a0","NgbNavOutlet_ng_template_0_div_0_ng_template_1_Template","item_r1","paneRole","contentTpl","isPanelTransitioning","NgbNavOutlet_ng_template_0_div_0_Template","isPanelInDom","NgbPopoverWindow_h3_1_ng_template_1_Template","NgbPopoverWindow_h3_1_ng_template_3_Template","_r1","isTitleTemplate","toInteger","isNumber","Element","closest","msMatchesSelector","webkitMatchesSelector","NgbConfig","noopFn","runningTransitions","ngbRunTransition","startFn","running","runningTransition","transition$","endFn","getComputedStyle","transitionProperty","finishTransition$","stop$","endWith","transitionDurationMs","transitionDuration","transitionDelay","getTransitionDurationMs","transitionEnd$","takeUntil","dueTime","periodOrScheduler","isNumeric","isScheduler","due","timer","asObservable","NgbAccordionModule","NgbAlertModule","NgbButtonLabel","NgbCheckBox","_label","valueChecked","valueUnChecked","isFocused","modelToPropagate","onInputChange","NgbButtonsModule","NgbCarouselModule","NgbCollapseModule","NgbDate","day","isInteger","jsDate","NgbCalendarGregorian","NgbCalendar","NGB_DATEPICKER_CALENDAR_FACTORY","toJSDate","checkMonth","expectedMonth","setMonth","setDate","fromJSDate","getNext","week","firstDayOfWeek","ɵNgbCalendarGregorian_BaseFactory","equals","dateComparator","minDate","maxDate","markDisabled","calendar","daysPerWeek","getDaysPerWeek","firstMonthDate","dayOfWeek","getWeekday","getPrev","NgbDatepickerI18n","weekday","getWeekdayShortName","weekNumber","NgbDatepickerI18nDefault","NGB_DATEPICKER_18N_FACTORY","_monthsShort","_monthsFull","getWeekdayLabel","weekdaysStartingOnSunday","NgbDatepickerService","_calendar","_i18n","_VALIDATORS","dayTemplateData","focusVisible","toValidDate","isChangedDate","outsideDays","weekdayWidth","weekdaysVisible","_model$","_dateSelect$","lastDate","focusDate","selectedDate","_nextState","focusedDate","isDateSelectable","getToday","isChangedMonth","ngbDate","isValid","struct","nt","newState","_updateState","_patchContexts","weeks","startDate","checkMinBeforeMax","checkDateInRange","monthsToReuse","firstDates","reusedIndex","calendarToday","getFirstViewDate","getWeeksPerMonth","weekObject","nextDate","getDayAriaLabel","contextUserData","dayObject","currentYear","getWeekNumber","buildMonth","buildMonths","yearChanged","monthChanged","numbers","generateSelectBoxYears","getMonths","generateSelectBoxMonths","prevDate","prevMonthDisabled","nextMonthDisabled","NavigationEvent","PREV","NEXT","NgbDatepickerConfig","showWeekdays","NgbDateStructAdapter","NgbDateAdapter","NGB_DATEPICKER_DATE_ADAPTER_FACTORY","ɵNgbDateStructAdapter_BaseFactory","NgbDatepickerContent","NgbDatepicker","_service","_ngbDateAdapter","_controlValue","_destroyed$","_publicState","navigate","dateSelect","de","dateSelect$","model$","oldDate","navigationPrevented","newSelectedDate","newFocusedDate","oldFocusedDate","toModel","_showWeekdays","focusSelect","elementToFocus","focusIns$","_contentEl","focusOuts$","relatedTarget","hasClassName","navigateTo","_defaultDayTemplate","fromModel","_t","contentTemplate","footerTemplate","NgbDatepicker_ng_template_0_Template","NgbDatepicker_ng_template_2_Template","NgbDatepicker_ngb_datepicker_navigation_5_Template","NgbDatepicker_ng_template_8_Template","NgbDatepicker_ng_template_9_Template","_r2","NgbDatepickerDayView","NgbDatepickerMonth","NgbDatepickerNavigation","Key","Tab","Enter","Escape","Space","PageUp","PageDown","End","Home","ArrowLeft","ArrowUp","ArrowRight","ArrowDown","NgbDatepickerKeyboardService","which","stopPropagation","_keyboardService","processKey","onDateSelect","onKeyDown","NgbDatepickerMonth_div_0_Template","NgbDatepickerMonth_ng_template_1_Template","currentTarget","showSelect","Sr","lr","onClickPrev","NgbDatepickerNavigation_ngb_datepicker_navigation_select_3_Template","NgbDatepickerNavigation_4_Template","onClickNext","NgbDatepickerNavigationSelect","isContainedIn","matchesSelectorIfAny","isMobile","maxTouchPoints","close","closed$","insideElements","ignoreElements","insideSelector","wrapAsyncForMobile","escapes$","mouseDowns$","closeableClicks$","withLatestFrom","FOCUSABLE_ELEMENTS_SELECTOR","ngbFocusTrap","stopFocusTrap$","refocusOnClick","lastFocusedElement$","tabEvent","focusedElement","getFocusableBoundaryElements","Te","lastFocusedElement","placementSeparator","positionService","Positioning","getAllStyles","getStyle","offsetParentEl","offsetParent","isStaticPositioned","elPosition","parentOffset","bottom","right","clientTop","clientLeft","elBcr","viewportOffset","elOffset","offsetHeight","offsetWidth","targetElement","placement","appendToBody","placementPrimary","pt","placementSecondary","hostElPosition","targetElStyles","marginTop","marginBottom","marginLeft","marginRight","topPosition","leftPosition","targetElBCR","windowHeight","innerHeight","clientHeight","windowWidth","innerWidth","clientWidth","baseClass","placementVals","allowedPlacements","addClassesToTarget","targetPlacement","Aa","classname","placementToRemove","hasAuto","xo","testPlacement","isInViewport","addedClasses","positionElements","Or","NgbDateISOParserFormatter","NgbDateParserFormatter","NGB_DATEPICKER_PARSER_FORMATTER_FACTORY","dateParts","ɵNgbDateISOParserFormatter_BaseFactory","NgbInputDatepickerConfig","autoClose","restoreFocus","ɵNgbInputDatepickerConfig_BaseFactory","NgbInputDatepicker","_parserFormatter","_elRef","_vcRef","_cfr","_dateAdapter","_document","_changeDetector","_cRef","_disabled","_elWithFocus","_model","_onTouched","_validatorChange","_zoneSubscription","_updatePopupPosition","isOpen","_fromDateStruct","_writeModelValue","updateView","inputValueChanged","_inputValue","_applyPopupStyling","_applyDatepickerInputs","_subscribeForDatepickerOutputs","ngbAutoClose","isString","datepickerClass","_applyPopupClass","datepickerInstance","optionName","newClass","oldClass","popupEl","navigateEvent","positionTarget","HTMLElement","manualDateChange","onFocus","onBlur","isMuted","getDayNumerals","_month","_year","monthSelect","yearSelect","Fr","sa","Zr","$i","changeMonth","NgbDatepickerNavigationSelect_option_2_Template","changeYear","NgbDatepickerNavigationSelect_option_5_Template","ɵngcc2","NgbDateNativeAdapter","_fromNativeDate","_toNativeDate","ɵNgbDateNativeAdapter_BaseFactory","NgbDatepickerModule","NgbDropdownConfig","NgbNavbar","NgbDropdownItem","NgbDropdownMenu","dropdown","NgbDropdown","menuItems","NgbDropdownAnchor","NgbDropdownToggle","toggle","ngbNavbar","_closed$","_bodyContainer","_open","openChange","display","jt","_positionMenu","_applyPlacementClasses","_setCloseHandlers","_applyContainer","dropdownClass","_applyCustomDropdownClass","_anchor","_menu","_resetContainer","itemElements","_getMenuElements","itemElement","isEventFromToggle","_isEventFromToggle","_isDropup","focusableElements","menu","_getFirstPlacement","dropdownMenuElement","bodyContainer","dropdownElement","NgbDropdownModule","NgbModalConfig","_ngbConfig","backdrop","keyboard","_animation","ContentRef","PopupService","_applicationRef","_windowRef","_contentRef","_getContentRef","windowRef","rootNodes","ScrollBar","_getWidth","_isPresent","_adjustBody","scrollbarWidth","userSetPaddingStyle","paddingRight","actualPadding","measurer","NgbModalBackdrop","_el","reflow","backdropClass","NgbActiveModal","NgbModalRef","_windowCmptRef","_backdropCmptRef","_beforeDismiss","_closed","_dismissed","_hidden","dismissEvent","dismiss","_reject","shown","_removeModalElements","_dismiss","windowTransition$","hide","backdropTransition$","zip","ModalDismissReasons","BACKDROP_CLICK","ESC","NgbModalWindow","_show","_disableEventHandling","transitions$","_dialogEl","_restoreFocus","_enableEventHandling","_setFocus","defaultPrevented","_bumpBackdrop","preventClose","autoFocusable","firstFocusable","elWithFocus","ariaLabelledBy","ariaDescribedBy","windowClass","centered","scrollable","modalDialogClass","NgbModalStack","_scrollBar","_rendererFactory","_activeWindowCmptHasChanged","_ariaHiddenValues","_backdropAttributes","_modalRefs","_windowAttributes","_windowCmpts","_activeInstances","activeWindowCmpt","_revertAriaHidden","_setAriaHidden","moduleCFR","contentInjector","containerEl","isDefined","revertPaddingForScrollBar","compensate","removeBodyClass","activeModal","contentRef","backdropCmptRef","_attachBackdrop","windowCmptRef","_attachWindowComponent","ngbModalRef","beforeDismiss","_registerModalRef","_registerWindowCmpt","_applyWindowOptions","_applyBackdropOptions","windowInstance","backdropInstance","_createFromTemplateRef","_createFromString","_createFromComponent","contentCmptFactory","modalContentInjector","componentNativeEl","sibling","unregisterModalRef","ngbWindowCmpt","NgbModal","_moduleCFR","_modalStack","combinedOptions","activeInstances","dismissAll","hasOpenModals","NgbModalModule","NgbNavConfig","destroyOnHide","orientation","roles","isValidNavId","navCounter","NgbNavContent","NgbNavItem","_nav","contentTpls","domId","activeId","_id","NgbNav","activeIdChange","destroy$","navItemChange$","navChange","_updateActiveId","enabledLinks","links","link","navItem","elRef","nextId","items","_notifyItemChanged","emitNavChange","nextItemId","_getItemById","itemId","NgbNavLink","click","panelDomId","hasNavItemClass","ngbNavFadeOutTransition","ngbNavFadeInTransition","NgbNavPane","NgbNavOutlet","_activePane","_updateActivePane","distinctUntilChanged","activeItem","_getPaneForItem","nextItem","_getActivePane","_panes","pane","NgbNavOutlet_ng_template_0_Template","NgbNavModule","NgbPaginationModule","Trigger","DEFAULT_ALIASES","hover","triggers","aliases","trimmedTriggers","parsedTriggers","triggerPair","alias","manualTriggers","isManual","isOpenedFn","listeners","openFn","closeFn","toggleFn","unsubscribeFn","delayOrNoop","openDelay","closeDelay","input$","filteredInput$","currentlyOpen","delayedOpen$","delayedClose$","parseTriggers","observeTriggers","triggerDelay","NgbPopoverConfig","disablePopover","nextId$3","NgbPopoverWindow","popoverClass","NgbPopoverWindow_h3_1_Template","NgbPopover","applicationRef","_ngbPopoverWindowId","_popupService","Se","ngbPopover","popoverTitle","_isDisabled","_unregisterListenersFn","listenToTriggers","NgbPopoverModule","NgbProgressbarModule","NgbRatingModule","NgbTimepickerModule","NgbToastModule","NgbTooltipConfig","disableTooltip","nextId$4","NgbTooltipWindow","tooltipClass","NgbTooltip","_ngbTooltipWindowId","_ngbTooltip","ngbTooltip","NgbTooltipModule","NgbTypeaheadModule","NGB_MODULES","NgbModule","QueueAction","work","flush","_execute","AsyncAction","AsyncScheduler","ObserveOnSubscriber","ObserveOnMessage","scheduleMessage","ReplaySubject","bufferSize","POSITIVE_INFINITY","windowTime","_events","_infiniteTimeWindow","_bufferSize","_windowTime","nextInfiniteTimeWindow","nextTimeWindow","isStopped","ReplayEvent","_getNow","_trimBufferThenGetEvents","ObjectUnsubscribedError","observers","SubjectSubscription","thrownError","eventsCount","spliceCount","configOrBufferSize","useRefCount","innerSub","shareReplayOperator","TranslateLoader","TranslateFakeLoader","lang","ɵTranslateFakeLoader_BaseFactory","MissingTranslationHandler","FakeMissingTranslationHandler","o1","o2","keySet","t1","output","isObject","mergeDeep","TranslateParser","TranslateDefaultParser","templateMatcher","expr","interpolateString","interpolateFunction","ɵTranslateDefaultParser_BaseFactory","TranslateCompiler","TranslateFakeCompiler","translations","ɵTranslateFakeCompiler_BaseFactory","TranslateStore","currentLang","defaultLang","langs","onTranslationChange","onLangChange","onDefaultLangChange","USE_STORE","USE_DEFAULT_LANG","DEFAULT_LANGUAGE","USE_EXTEND","TranslateService","currentLoader","parser","missingTranslationHandler","useDefaultLang","isolate","extend","defaultLanguage","_onTranslationChange","_onLangChange","_onDefaultLangChange","_langs","_translations","_translationRequests","setDefaultLang","_defaultLang","_currentLang","retrieveTranslations","changeDefaultLang","changeLang","getTranslation","loadingTranslations","shareReplay","compileTranslations","updateLangs","shouldMerge","addLangs","interpolateParams","Ve","ke","getParsedResult","uo","sources","interpolate","translateService","compile","resetLang","browserLang","languages","language","browserLanguage","userLanguage","browserCultureLang","TranslateDirective","onTranslationChangeSub","checkNodes","onLangChangeSub","onDefaultLangChangeSub","currentParams","forceUpdate","setContent","lastKey","lookupKey","getContent","trimmedContent","originalContent","updateValue","lastParams","onTranslation","translate","translateParams","TranslatePipe","validArgs","SyntaxError","TranslateModule","api","$$","d3","getDefaultConfig","cache","axes","ChartInternal","loadConfig","beforeInit","afterInit","argThis","bindThis","Chart","scale","scaleLinear","orient","innerTickSize","outerTickSize","withOuterTick","tickPadding","tickValues","tickOffset","tickCulling","tickTextRotate","axis","generateAxis","AxisInternal","axisX","selection","axisY","scaleExtent","domain","stop","generateTicks","ticks","tickArguments","copyScale","newScale","copy","isCategory","textFormatted","formatted","tickFormat","updateRange","range","rangeExtent","updateTickTextCharSize","tickTextCharSize","each","box","isVertical","tspanData","splitted","tickMultiline","splitTickText","tickMultilineMax","ellipsify","subtext","spaceIndex","tickText","maxWidth","tickWidth","ellipsified","available","padEnd","updateTickLength","tickLength","lineY2","tickPosition","tickCentered","textY","textTransform","textTextAnchor","tspanDx","sin","PI","tspanDy","dy","tickTransform","tickX","tickY","scale0","__chart__","scale1","ticksValues","selectAll","tickEnter","enter","tickExit","exit","tickUpdate","lineUpdate","textUpdate","tspans","tspanUpdate","pathUpdate","rangeBand","dx","isCentered","tickInterval","interval","getTotalLength","culling","CLASS","chart","chartLine","chartLines","chartBar","chartBars","chartText","chartTexts","chartArc","chartArcs","chartArcsTitle","chartArcsBackground","chartArcsGaugeUnit","chartArcsGaugeMax","chartArcsGaugeMin","selectedCircle","selectedCircles","eventRect","eventRects","eventRectsSingle","eventRectsMultiple","zoomRect","brush","dragZoom","defocused","region","regions","tooltipContainer","tooltip","tooltipName","shape","shapes","lines","bar","bars","circle","circles","arc","arcLabelLine","arcs","area","areas","texts","gaugeValue","grid","gridLines","xgrid","xgrids","xgridLine","xgridLines","xgridFocus","ygrid","ygrids","ygridLine","ygridLines","axisXLabel","axisYLabel","axisY2","axisY2Label","legendBackground","legendItem","legendItemEvent","legendItemTile","legendItemHidden","legendItemFocused","dragarea","EXPANDED","SELECTED","INCLUDED","asHalfPixel","ceil10","diffDomain","getOption","getPathBox","pathSegList","getItem","isUndefined","notEmpty","sanitise","Axis","axis_x_inner","clipPathForXAxis","getTranslate","axis_x_show","axis_rotated","textAnchorForXAxisLabel","axis_y_inner","clipPathForYAxis","axis_y_show","textAnchorForYAxisLabel","y2","axis_y2_show","textAnchorForY2AxisLabel","getXAxis","withoutTransition","withoutRotateTickText","axisParams","isCategorized","axis_x_tick_multiline","axis_x_tick_multilineMax","axis_x_tick_width","axis_x_tick_rotate","isTimeSeries","parseDate","axis_x_tick_centered","axis_x_tick_culling","updateXAxisTickValues","targets","axis_x_tick_fit","axis_x_tick_count","generateTickValues","mapTargetsToUniqueXs","xAxis","subXAxis","getYAxis","axis_y_tick_rotate","isTimeSeriesY","axis_y_tick_time_type","axis_y_tick_time_interval","getId","data_axes","getXAxisTickFormat","defaultAxisTimeFormat","categoryName","axis_x_tick_format","axisTimeFormat","getTickValues","getXAxisTickValues","axis_x_tick_values","getYAxisTickValues","axis_y_tick_values","yAxis","getY2AxisTickValues","axis_y2_tick_values","y2Axis","getLabelOptionByAxisId","axisId","option","axis_y_label","axis_y2_label","axis_x_label","getLabelText","setLabelText","getLabelPosition","defaultPosition","isInner","isOuter","isLeft","isCenter","isRight","isTop","isMiddle","isBottom","getXAxisLabelPosition","getYAxisLabelPosition","getY2AxisLabelPosition","getLabelPositionById","textForXAxisLabel","textForYAxisLabel","textForY2AxisLabel","xForAxisLabel","forHorizontal","dxForAxisLabel","textAnchorForAxisLabel","xForXAxisLabel","xForYAxisLabel","xForY2AxisLabel","dxForXAxisLabel","dxForYAxisLabel","dxForY2AxisLabel","dyForXAxisLabel","getMaxTickWidth","axis_x_height","dyForYAxisLabel","dyForY2AxisLabel","axis_y2_inner","withoutRecompute","targetsToShow","dummy","currentMaxTickWidths","filterTargetsToShow","getYDomain","yOrient","axis_y_tick_format","yAxisTickValues","y2Orient","axis_y2_tick_format","y2AxisTickValues","getXDomain","xOrient","xAxisTickFormat","xAxisTickValues","classed","updateLabels","withTransition","getPadding","padding","domainLength","convertPixelsToAxisPadding","pixels","tickCount","forTimeSeries","targetCount","tickValue","generateTransitions","duration","axisSubX","subx","redraw","isHidden","c3","version","generate","initParams","data_url","convertUrlToData","data_mimeType","data_headers","data_keys","initWithData","data_json","convertJsonToData","data_rows","convertRowsToData","data_columns","convertColumnsToData","clipIdForXAxis","clipIdForYAxis","clipIdForGrid","clipIdForSubchart","clipPath","getClipPath","clipPathForGrid","clipPathForSubchart","dragStart","dragging","flowing","cancelClick","mouseover","transiting","color","generateColor","levelColor","generateLevelColor","dataTimeParse","data_xLocaltime","timeParse","utcParse","data_xFormat","axis_x_localtime","timeFormat","utcFormat","hiddenTargetIds","hiddenLegendIds","focusedTargetIds","defocusedTargetIds","subXOrient","isLegendRight","legend_position","isLegendInset","isLegendTop","legend_inset_anchor","isLegendLeft","legendStep","legendItemWidth","legendItemHeight","rotated_padding_left","rotated_padding_right","rotated_padding_top","withoutFadeIn","intervalForObserveInserted","initChartElements","initBar","initLine","initArc","initGauge","initText","selectChart","bindto","observeInserted","xs","convertDataToTargets","data_filter","data_hide","addHiddenTargetIds","mapToIds","legend_hide","addHiddenLegendIds","updateSizes","updateScales","extent","subX","subY","subY2","orgXDomain","onmouseover","onmouseout","svg_classname","clipChart","appendClip","clipXAxis","clipYAxis","clipGrid","clipSubchart","updateSvgSize","initPie","initDragZoom","initSubchart","initTooltip","initLegend","initTitle","initZoom","initSubchartBrush","initRegion","initGrid","grid_lines_front","initGridLines","initEventRect","updateTargets","axis_x_selection","selectionAsValue","getDefaultSelection","updateDimension","oninit","withTransform","withUpdateXDomain","withUpdateOrgXDomain","withTransitionForAxis","bindResize","bindWindowFocus","smoothLines","x1","x2","y1","legendHeight","legend","getLegendHeight","legendWidth","getLegendWidth","legendHeightForBottom","hasArc","hasArcType","xAxisHeight","getHorizontalAxisHeight","subchartHeight","subchart_show","subchart_size_height","currentWidth","getCurrentWidth","currentHeight","getCurrentHeight","margin","getCurrentPaddingTop","getCurrentPaddingRight","getCurrentPaddingBottom","getCurrentPaddingLeft","margin2","margin3","updateSizeForLegend","width2","height2","arcWidth","arcHeight","hasType","gauge_fullCircle","getGaugeLabelHeight","updateRadius","radiusExpanded","updateTargetsForText","updateTargetsForBar","updateTargetsForLine","updateTargetsForArc","updateTargetsForSubchart","showTargets","isTargetToShow","transition_duration","withY","withSubchart","withTransitionForExit","withTrimXDomain","withLegend","withEventRect","withDimension","withUpdateXAxis","drawArea","drawBar","drawLine","xForText","yForText","durationForExit","durationForAxis","transitionsToWait","waitForDraw","flow","intervalForCulling","xDomainForZoom","areaIndices","getShapeIndices","isAreaType","barIndices","isBarType","lineIndices","isLineType","hideAxis","xv","Ie","legend_show","updateLegend","updateXDomain","zoom_rescale","orgDomain","axis_y_tick_count","axis_y2_tick_count","axis_x_tick_culling_max","generateDrawArea","generateDrawBar","generateDrawLine","generateXYForText","updateCircleY","circleY","circleX","updateXgridFocus","data_empty_label_text","redrawEventRect","updateGrid","updateRegion","updateBar","updateLine","updateArea","updateCircle","hasDataLabel","updateText","redrawTitle","redrawArc","redrawSubchart","generateFlow","isTabVisible","redrawBar","redrawLine","redrawArea","redrawCircle","redrawText","redrawRegion","redrawGrid","generateWait","onrendered","updateAndRedraw","withTransitionForTransform","transformAll","redrawWithoutRescale","axis_x_type","isCustomX","data_x","data_xs","axis_y_type","initialOpacity","initialOpacityForCircle","opacityForCircle","point_show","isScatterType","opacityForText","xx","axis_x_categories","yv","subxx","transformMain","transformContext","transformLegend","getXAxisClipX","getXAxisClipY","getXAxisClipWidth","getXAxisClipHeight","getYAxisClipX","getYAxisClipY","getYAxisClipWidth","getYAxisClipHeight","withoutAxis","mutations","mutation","previousSibling","disconnect","setInterval","clearInterval","childList","characterData","resizeFunction","generateResize","onresize","resize_auto","resizeTimeout","onresized","resizeIfElementDisplayed","attachEvent","wrapper","windowFocusHandler","unbindWindowFocus","resizeFunctions","callResizeFunctions","endall","parsedDate","SVGPathSeg","typeAsLetter","owningPathSegList","pathSegType","pathSegTypeAsLetter","_owningPathSegList","PATHSEG_UNKNOWN","PATHSEG_CLOSEPATH","PATHSEG_MOVETO_ABS","PATHSEG_MOVETO_REL","PATHSEG_LINETO_ABS","PATHSEG_LINETO_REL","PATHSEG_CURVETO_CUBIC_ABS","PATHSEG_CURVETO_CUBIC_REL","PATHSEG_CURVETO_QUADRATIC_ABS","PATHSEG_CURVETO_QUADRATIC_REL","PATHSEG_ARC_ABS","PATHSEG_ARC_REL","PATHSEG_LINETO_HORIZONTAL_ABS","PATHSEG_LINETO_HORIZONTAL_REL","PATHSEG_LINETO_VERTICAL_ABS","PATHSEG_LINETO_VERTICAL_REL","PATHSEG_CURVETO_CUBIC_SMOOTH_ABS","PATHSEG_CURVETO_CUBIC_SMOOTH_REL","PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS","PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL","_segmentChanged","segmentChanged","SVGPathSegClosePath","_asPathString","SVGPathSegMovetoAbs","_x","_y","SVGPathSegMovetoRel","SVGPathSegLinetoAbs","SVGPathSegLinetoRel","SVGPathSegCurvetoCubicAbs","_x1","_y1","_x2","_y2","SVGPathSegCurvetoCubicRel","SVGPathSegCurvetoQuadraticAbs","SVGPathSegCurvetoQuadraticRel","SVGPathSegArcAbs","r1","r2","angle","largeArcFlag","sweepFlag","_angle","_largeArcFlag","_sweepFlag","SVGPathSegArcRel","SVGPathSegLinetoHorizontalAbs","SVGPathSegLinetoHorizontalRel","SVGPathSegLinetoVerticalAbs","SVGPathSegLinetoVerticalRel","SVGPathSegCurvetoCubicSmoothAbs","SVGPathSegCurvetoCubicSmoothRel","SVGPathSegCurvetoQuadraticSmoothAbs","SVGPathSegCurvetoQuadraticSmoothRel","SVGPathElement","createSVGPathSegClosePath","createSVGPathSegMovetoAbs","createSVGPathSegMovetoRel","createSVGPathSegLinetoAbs","createSVGPathSegLinetoRel","createSVGPathSegCurvetoCubicAbs","createSVGPathSegCurvetoCubicRel","createSVGPathSegCurvetoQuadraticAbs","createSVGPathSegCurvetoQuadraticRel","createSVGPathSegArcAbs","createSVGPathSegArcRel","createSVGPathSegLinetoHorizontalAbs","createSVGPathSegLinetoHorizontalRel","createSVGPathSegLinetoVerticalAbs","createSVGPathSegLinetoVerticalRel","createSVGPathSegCurvetoCubicSmoothAbs","createSVGPathSegCurvetoCubicSmoothRel","createSVGPathSegCurvetoQuadraticSmoothAbs","createSVGPathSegCurvetoQuadraticSmoothRel","getPathSegAtLength","distance","measurementElement","lastPathSegment","numberOfItems","removeItem","SVGPathSegList","pathElement","_pathElement","_list","_parsePath","_mutationObserverConfig","attributeFilter","_pathElementMutationObserver","_updateListFromPathMutations","_checkPathSynchronizedToList","_pathSegList","takeRecords","mutationRecords","hasPathMutations","_writeListToPath","_pathSegArrayAsString","pathSeg","initialize","newItem","_checkValidIndex","insertItemBefore","replaceItem","appendItem","pathSegArray","string","Builder","appendSegment","Source","_string","_currentIndex","_endIndex","_previousCommand","_skipOptionalSpaces","_isCurrentSpace","character","_skipOptionalSpacesOrDelimiter","hasMoreData","peekSegmentType","_pathSegTypeFromChar","lookahead","_nextCommandHelper","previousCommand","initialCommandIsMoveTo","_parseNumber","frac","decimal","sign","expsign","startIntPartIndex","scanIntPartIndex","multiplier","pow","_parseArcFlag","flagChar","points","arcAngle","arcLarge","arcSweep","builder","targetLength","padString","repeat","labels","axis_x_max","axis_y_max","axis_y2_max","axis_x_min","axis_y_min","axis_y2_min","category","categories","resize","size_width","size_height","detachEvent","targetIds","targetId","names","clearLegendItemTextBoxCache","updateDataAttributes","colors","baseTarget","baseValue","notfoundIds","orgDataCount","getMaxDataCount","tail","json","rows","columns","getOtherTargetX","missing","ln","translateX","mainRegion","mainText","mainBar","mainLine","mainArea","mainCircle","flowIndex","flowLength","flowStart","getValueOnIndex","flowEnd","durationForFlow","wait","updateXGrid","hideXGridFocus","flowTransition","ease","easeLinear","isRegionOnX","xgridAttr","regionX","regionWidth","candidates","mapToTargetIds","selectorTargets","revert","defocus","expandArc","toggleFocusLegend","unexpandArc","showLegend","isLegendToShow","selectorLegends","grids","grid_x_lines","removeGridLines","grid_y_lines","data_groups","show","hideLegend","addXs","data_classes","data_colors","hasCaches","cacheIds","getCaches","unload","loadFromArgs","getTargetSelectorSuffix","__data__","indices","resetOther","data_selection_enabled","getToggle","isTargetId","data_selection_grouped","isTargetIndex","isSelected","data_selection_isselectable","unselect","removeHiddenTargetIds","that","mouse","filterByX","getMousePosition","tooltip_onshow","tooltip_onhide","transformTo","optionsForRedraw","setTargetType","updateTargetX","updateTargetXs","zoom","zoom_onzoom","zoom_enabled","unzoom","zoom_x_max","zoom_x_min","pie","orderFct","getOrderFunction","isOrderAsc","isOrderDesc","defaultSort","t2","gauge_width","donut_width","gaugeArcWidth","gauge_arcs_minWidth","radius","innerRadiusRatio","innerRadius","updateArc","svgArc","getSvgArc","svgArcExpanded","getSvgArcExpanded","svgArcExpandedSub","updateAngle","gMin","gMax","gTic","gValue","startAngle","endAngle","isGaugeType","gauge_min","gauge_max","gauge_startingAngle","hasGaugeType","singleArcWidth","outerRadius","newArc","withoutUpdate","centroid","rate","expandWidth","getArc","isArcType","transformForArcLabel","ratio","hasGauge","sqrt","donut_label_ratio","pie_label_ratio","cos","getArcRatio","whole","convertToArcData","addName","textForArcLabel","shouldShowArcLabel","meetsArcLabelThreshold","getArcLabelFormat","defaultArcValueFormat","textForGaugeMinMax","isMax","getGaugeLabelExtents","shouldExpand","expandDuration","isDonutType","donut_expand_duration","gauge_expand_duration","isPieType","pie_expand_duration","donut_expand","gauge_expand","pie_expand","shouldShow","donut_label_show","pie_label_show","donut_label_threshold","pie_label_threshold","pie_label_format","gauge_label_format","donut_label_format","gauge_label_extents","getArcTitle","donut_title","mainPieEnter","classChartArc","classArcs","classFocus","mainArc","arcLabelLines","mainArcLabelLine","arcData","classArc","interaction_enabled","_current","gauge_labelLine_show","lineLength","innerLineLength","lineAngle","arcInnerRadius","linePositioningAngle","data_onmouseover","showTooltip","revertLegend","hideTooltip","data_onmouseout","toggleShape","data_onclick","attrTween","backgroundArc","d1","gauge_label_show","gauge_units","addCache","cloneTarget","generateTargetClass","generateClass","classText","classTexts","classShape","classShapes","classLine","classLines","classCircle","classCircles","classBar","classBars","classArea","classAreas","classRegion","classEvent","classTarget","additionalClassSuffix","additionalClass","classFocused","classDefocused","classChartText","classChartLine","classChartBar","selectorTarget","selectorLegend","appVersion","getAxisClipX","getAxisClipY","getAxisClipWidth","getAxisClipHeight","color_pattern","schemeCategory10","data_color","threshold","color_threshold","asValue","padding_left","padding_right","padding_top","padding_bottom","zoom_initialRange","zoom_type","zoom_disableDefaultBehavior","zoom_privileged","zoom_onzoomstart","zoom_onzoomend","interaction_brighten","data_xSort","data_idConverter","data_names","data_type","data_types","data_labels","data_order","data_regions","data_selection_multiple","data_selection_draggable","data_onselected","data_onunselected","subchart_axis_x_show","subchart_onbrush","legend_inset_x","legend_inset_y","legend_inset_step","legend_item_onclick","legend_item_onmouseover","legend_item_onmouseout","legend_equally","legend_padding","legend_item_tile_width","legend_item_tile_height","axis_x_tick_outer","axis_x_padding","axis_y_inverted","axis_y_center","axis_y_tick_outer","axis_y_padding","axis_y_default","axis_y2_inverted","axis_y2_center","axis_y2_tick_outer","axis_y2_padding","axis_y2_default","grid_x_show","grid_x_type","grid_y_show","grid_y_ticks","grid_focus_show","point_r","point_sensitivity","point_focus_expand_enabled","point_focus_expand_r","point_select_r","line_connectNull","line_step_type","bar_width","bar_width_ratio","bar_width_max","bar_zerobased","bar_space","area_zerobased","area_above","spline_interpolation_type","tooltip_show","tooltip_grouped","tooltip_order","tooltip_format_title","tooltip_format_name","tooltip_format_value","tooltip_position","tooltip_contents","defaultTitleFormat","defaultValueFormat","getTooltipContent","tooltip_init_show","tooltip_init_x","tooltip_init_position","title_text","title_padding","title_position","additionalConfig","this_config","mimeType","converter","tsv","convertXsvToData","csv","xsv","row","targetKeys","new_rows","new_row","findValueInJson","object","pathArray","newRows","newRow","appendXs","isNotX","isX","xKey","getXKey","rawX","generateTargetX","getOtherTargetXs","getXValuesOfXKey","convertedId","id_org","hasNegativeValue","hasNegativeValueInTargets","hasPositiveValue","hasPositiveValueInTargets","dict","xValues","getXValue","idsForX","valueOnIndex","hasTarget","removeHiddenLegendIds","getValuesAsIdKeyed","ys","checkValueInTargets","checker","orderAsc","orderDesc","t1Sum","t2Sum","order","orderTargets","fct","filterRemoveNull","filterByXDomain","xDomain","getDataLabelLength","lengths","dataLabelFormat","isNoneArc","isArc","findClosestFromTargets","findClosest","minDist","isWithinBar","dist","xIndex","yIndex","convertValuesToStep","converted","getYDomainMin","baseId","idsInGroup","getYDomainMax","yDomainAbs","isAllPositive","isAllNegative","targetsByAxisId","yTargets","yMin","yMax","yDomainMin","yDomainMax","center","isZeroBased","isInverted","showHorizontalDataLabel","showVerticalDataLabel","getXDomainMin","getXDomainMax","getXDomainPadding","maxDataCount","paddingLeft","firstX","lastX","withTrim","updateScale","trimXDomain","zoomDomain","getZoomDomain","drag","sx","sy","mx","my","minX","maxX","minY","maxY","isIncluded","isWithin","togglePoint","togglePath","dragstart","dragend","getYFormat","forArc","formatForY","yFormat","formatForY2","y2Format","toFixed","defaultFormat","xgridData","generateGridData","xgridEnter","updateYGrid","gridValues","ygridEnter","gridTextAnchor","gridTextDx","xGridTextX","yGridTextX","xgridLineEnter","ygridLineEnter","showXGridFocus","selectedData","dataToShow","focusEl","firstYear","lastYear","gridData","tickNum","getGridFilterToRemove","forX","toRemove","toShow","zoomTransform","unexpandCircles","unexpandBars","mouseout","expandCircles","expandBars","isWithinShape","getYScale","createEvent","initMouseEvent","legendItemTextBox","legendHasRendered","updateLegendWithDefaults","insetLegendPosition","updateLegendStep","step","updateLegendItemWidth","updateLegendItemHeight","opacityForLegend","opacityForUnfocusedLegend","xForLegend","xForLegendText","xForLegendRect","yForLegend","yForLegendText","yForLegendRect","x1ForLegendTile","x2ForLegendTile","yForLegendTile","l","rects","tiles","background","maxHeight","tileWidth","totalLength","offsets","widths","heights","margins","steps","textElement","isLast","getTextRect","getTextBox","itemWidth","itemHeight","itemLength","areaLength","withoutStep","updateValues","updatePositions","mainRegionEnter","regionY","regionHeight","getScale","forTimeseries","scaleTime","getX","_scale","getY","getSubYScale","forInit","xMin","xMax","subXMin","subXMax","subYMin","subYMax","selectPoint","pointSelectR","unselectPoint","selectPath","rgb","brighter","unselectPath","isStepType","barData","mainBarEnter","getBarW","barTargetsNum","getBars","isSub","getPoints","generateGetBarPoints","indexX","indexY","__max__","barW","barX","getShapeX","barY","getShapeY","barOffset","getShapeOffset","barSpaceOffset","yScale","y0","posX","posY","seg0","seg1","typeFilter","targetsNum","isWithinStep","isWithinCircle","getInterpolate","linear","curveLinear","curveLinearClosed","basis","curveBasis","curveBasisOpen","curveBasisClosed","bundle","curveBundle","cardinal","curveCardinal","curveCardinalOpen","curveCardinalClosed","monotone","curveMonotoneX","curveStep","curveStepBefore","curveStepAfter","isSplineType","mainLineEnter","lineData","generateGetLinePoints","yScaleGetter","xValue","yValue","defined","x0","lineWithRegions","curve","lineOffset","_regions","sWithRegion","xp","yp","diffx2","xOffset","Pt","d0","x_diff","xv0","xv1","generateM","isWithinRegions","mainAreaEnter","orgAreaOpacity","generateGetAreaPoints","value0","getAreaBaseValue","areaOffset","lineOrScatterData","mainCircleEnter","pointR","getCircles","pointExpandedR","d3_this","getParentWidth","getParentHeight","getTitlePadding","getAxisWidthByAxisId","legendWidthOnRight","getParentRectValue","getSvgLeft","hasLeftAxisRect","leftAxis","svgRect","chartRect","svgLeft","initBrush","brushY","brushX","sourceEvent","redrawForBrush","updateExtent","brushSelection","invert","contextLineEnter","contextLine","contextBarEnter","contextBar","updateBarForSubchart","redrawBarForSubchart","drawBarOnSub","updateLineForSubchart","redrawLineForSubchart","drawLineOnSub","updateAreaForSubchart","contextArea","contextAreaEnter","redrawAreaForSubchart","drawAreaOnSub","zoomIdentity","mainTextEnter","barOrLineData","forFlow","font","getAreaPoints","getBarPoints","getLinePoints","getXForText","getYForText","xPos","yPos","isSafari","isChrome","xForTitle","yForTitle","getTooltipSortFunction","sortFunction","bgcolor","titleFormat","nameFormat","valueFormat","tooltipSortFunction","tooltipPosition","tWidth","tHeight","tooltipLeft","tooltipRight","tooltipTop","chartRight","positionFunction","ua","startEvent","redrawForZoom","clientX","clientY","updateDomain","rescaleX","translateExtent","brushXPos","brushYPos","getZoomedDomain","dragZoomBrush","zoomedDomain","ascending","ascendingComparator","lo","hi","mid","ascendingBisect","bisector","bisectRight","bisectLeft","oe","pair","pairs","values0","values1","n0","n1","valueof","mean","sum","variance","e10","e5","e2","tickIncrement","power","LN10","step0","step1","LN2","sturges","xz","tz","tickStep","bin","bins","bisect","histogram","constant","thresholds","quantile","deviation","arrays","merged","indexes","permutes","xi","xj","matrix","transpose","bandwidth","__axis","tickSizeInner","tickSizeOuter","translateY","spacing","range0","range1","entering","tickSize","Dispatch","typenames","typename","parseTypenames","none","datum","groupLength","dataLength","EnterNode","keyValue","nodeByKeyValue","keyValues","pn","Wi","namespaces","space","local","fullname","priority","getPropertyValue","ClassList","_node","_names","classArray","classedAdd","classedRemove","uri","creatorFixed","creatorInherit","cloneNode","filterEvents","contextListener","related","event1","event0","__on","wrap","filterContextListener","CustomEvent","initEvent","bubbles","cancelable","detail","mouseenter","mouseleave","_groups","_parents","Selection","subgroups","subnode","subgroup","selectorAll","bindKey","bindIndex","enterGroup","updateGroup","_enter","_exit","sparse","onenter","onupdate","onexit","groups0","groups1","m0","merges","group0","group1","sortgroups","sortgroup","compareNode","getAttributeNS","attrRemoveNS","attrRemove","attrFunctionNS","attrFunction","attrConstantNS","attrConstant","styleRemove","styleFunction","styleConstant","styleValue","propertyRemove","propertyFunction","propertyConstant","classedFunction","classedTrue","classedFalse","textRemove","textFunction","textConstant","htmlRemove","htmlFunction","htmlConstant","raise","creator","constantNull","deep","selection_cloneDeep","selection_cloneShallow","onAdd","onRemove","dispatchFunction","dispatchConstant","noevent","__noselect","MozUserSelect","noclick","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","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","green","greenyellow","grey","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","magenta","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","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","formatHex","formatRgb","rgbn","Rgb","rgba","hsla","Color","rgbConvert","hex","Hsl","hslConvert","m1","m2","t3","channels","displayable","color_formatHex","formatHsl","color_formatRgb","darker","rgb_formatHex","rgb_formatRgb","hsl","hsl2rgb","nogamma","exponential","gamma","colorRgb","rgbGamma","spline","rgbBasis","rgbSpline","rgbBasisClosed","basisClosed","isView","DataView","isNumberArray","numberArray","genericArray","nb","na","setTime","reA","reB","am","bm","bi","one","zero","ownerSVGElement","createSVGPoint","point","matrixTransform","getScreenCTM","touches","identifier","changedTouches","touch","taskHead","taskTail","frame","clockLast","clockNow","clockSkew","clock","setFrame","clearNow","_call","_time","Timer","restart","timerFlush","t0","sleep","nap","wake","poke","elapsed","emptyOn","emptyTween","timing","schedules","__transition","tween","cssNode","cssRoot","cssView","svgNode","degrees","skewX","scaleX","scaleY","atan2","atan","pxComma","pxParen","degParen","xa","ya","xb","yb","interpolateTransformCss","interpolateTransform","decompose","interpolateTransformSvg","baseVal","consolidate","tween0","tween1","interpolateNumber","interpolateRgb","string00","interpolate0","string1","string0","string10","attrInterpolateNS","attrInterpolate","on0","on1","sit","styleInterpolate","textInterpolate","_name","selection_prototype","Transition","inherit","id0","id1","newId","onFunction","tweenValue","attrTweenNS","styleTween","styleNull","listener0","styleMaybeRemove","textTween","tweenRemove","tweenFunction","delayFunction","delayConstant","durationFunction","durationConstant","easeConstant","cancel","interrupt","defaultTiming","easeCubicInOut","MODE_DRAG","MODE_SPACE","MODE_HANDLE","MODE_CENTER","number1","handles","xy","XY","number2","cursors","overlay","nw","se","sw","signsX","signsY","hasAttribute","__brush","dim","touchending","defaultExtent","defaultFilter","touchable","defaultTouchable","handleSize","started","touchmoved","touchended","emitter","Emitter","w0","w1","e0","e1","s0","s1","moving","lockX","lockY","signX","signY","shifting","pointer","toucher","point0","beforestart","moved","ended","keydowned","keyupped","dragDisable","nopropagation","point1","lt","dragEnable","selection0","selection1","starting","customEvent","BrushEvent","keyModifiers","pi","halfPi","tau","padAngle","sortGroups","sortSubgroups","sortChords","groupSums","groupIndex","subgroupIndex","chords","di","dj","a1","subindex","chord","compareValue","epsilon","tauEpsilon","_x0","_y0","Path","moveTo","closePath","lineTo","quadraticCurveTo","bezierCurveTo","arcTo","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","acos","t01","t21","ccw","cw","da","defaultSource","defaultTarget","defaultRadius","defaultStartAngle","defaultEndAngle","argv","sr","sa0","sa1","sx0","sy0","tr","ta0","ta1","ribbon","sortValues","rollup","nest","sortKeys","createResult","setResult","valuesByKey","sortKey","createObject","setObject","createMap","setMap","deg2rad","rad2deg","Lab","Hcl","hcl2lab","rgb2lrgb","xyz2lab","labConvert","hclConvert","lab","lrgb2rgb","lab2xyz","hcl","ED","EB","BC_DA","Cubehelix","bl","cubehelixConvert","cubehelix","cosh","sinh","hole","ringContains","yi","pj","yj","segmentContains","collinear","within","thresholdSturges","smooth","smoothLinear","contour","polygons","holes","isorings","fragmentByStart","fragmentByEnd","stitch","ve","polygon","coordinates","yt","contours","_0","_1","defaultX","defaultY","weight","defaultWeight","Float32Array","wi","blurX","blurY","geometry","transformPolygon","transformRing","transformPoint","density","cellSize","mousedownx","mousedowny","mousemoving","defaultContainer","defaultSubject","gestures","clickDistance2","mousedowned","touchstarted","gesture","mousemoved","mouseupped","nodrag","yesdrag","sublisteners","DragEvent","p0","clickDistance","EOL","EOF","columnSet","column","reFormat","DELIMITER","eof","eol","getUTCHours","getUTCMinutes","seconds","getUTCSeconds","getUTCMilliseconds","pad","formatYear","getUTCFullYear","getUTCMonth","getUTCDate","convert","parseRows","objectConverter","customConverter","inferColumns","preformatBody","formatBody","formatRows","formatRow","dsv","csvParse","csvParseRows","csvFormat","csvFormatBody","csvFormatRows","csvFormatRow","csvFormatValue","tsvParse","tsvParseRows","tsvFormat","tsvFormatBody","tsvFormatRows","tsvFormatRow","tsvFormatValue","fixtz","polyIn","custom","polyOut","polyInOut","tpmt","b0","bounceOut","overshoot","backIn","backOut","backInOut","elasticIn","asin","amplitude","elasticOut","elasticInOut","blob","fetch","responseBlob","arrayBuffer","responseArrayBuffer","dsvFormat","dsvParse","image","Image","onerror","onload","responseJson","xm","ym","leaf","Quadtree","addAll","treeProto","quadtree","vx","vy","radii","strength","iterations","ri","ri2","visitAfter","prepare","visit","quad","rj","jiggle","nodeById","nodeId","strengths","distances","bias","alpha","initializeStrength","initializeDistance","leaf_copy","cover","yz","x3","y3","quads","Quad","d2","retainer","removeAll","initialAngle","simulation","alphaMin","alphaDecay","alphaTarget","velocityDecay","forces","stepper","fx","fy","initializeNodes","initializeForce","Ln","distanceMin2","distanceMax2","theta2","accumulate","distanceMin","distanceMax","theta","radiuses","toExponential","coefficient","formatDecimalParts","prefixExponent","re","specifier","FormatSpecifier","align","comma","precision","formatSpecifier","toLocaleString","toPrecision","formatRounded","formatPrefix","prefixes","grouping","thousands","formatGroup","currencyPrefix","currency","currencySuffix","numerals","formatNumerals","percent","minus","nan","formatTypes","formatType","maybeSuffix","valuePrefix","valueNegative","out","formatTrim","newFormat","formatLocale","Adder","defaultLocale","temp","adder","bv","epsilon2","quarterPi","radians","stream","streamGeometryType","streamObjectType","Feature","streamGeometry","FeatureCollection","Sphere","sphere","Point","MultiPoint","LineString","streamLine","MultiLineString","Polygon","streamPolygon","MultiPolygon","GeometryCollection","geometries","coordinate","lineStart","lineEnd","polygonStart","polygonEnd","lambda00","phi00","lambda0","cosPhi0","sinPhi0","areaRingSum","areaSum","areaStream","areaRingStart","areaRingEnd","areaRing","areaPointFirst","areaPoint","lambda","phi","dLambda","sdLambda","adLambda","cosPhi","sinPhi","cartesian","spherical","vector","phi0","lambda1","phi1","lambda2","ranges","deltaSum","boundsStream","boundsPoint","boundsLineStart","boundsLineEnd","boundsRingPoint","boundsRingStart","boundsRingEnd","rd","normal","cartesianCross","inflection","cartesianNormalizeInPlace","phii","lambdai","antimeridian","ia","linePoint","deltaMax","rangeCompare","rangeContains","W0","W1","X0","Y0","Z0","X1","Y1","Z1","X2","Y2","Z2","z0","centroidStream","centroidPoint","centroidLineStart","centroidLineEnd","centroidRingStart","centroidRingEnd","centroidPointCartesian","centroidLinePointFirst","centroidLinePoint","centroidRingPointFirst","centroidRingPoint","cz","deltaLambda","deltaPhi","deltaGamma","rotationLambda","rotationPhiGamma","rotationIdentity","rotation","forwardRotationLambda","cosDeltaPhi","sinDeltaPhi","cosDeltaGamma","sinDeltaGamma","rotateRadians","direction","cosRadius","sinRadius","circleRadius","circleStream","rejoin","entry","compareIntersection","startInside","clip","p1","pointEqual","Intersection","isSubject","longitude","winding","sinPhi1","cosPhi1","absDelta","intersection","phiArc","pointVisible","clipLine","ringBuffer","clipBuffer","ringSink","polygonStarted","pointRing","ringStart","ringEnd","polygonContains","clipRejoin","pointLine","ringSegments","validSegment","sign0","sign1","sinLambda0Lambda1","clipAntimeridianIntersect","cr","smallRadius","notHemisphere","two","n2","n2n2","cartesianDot","n1n2","determinant","c1","c2","n1xn2","cartesianScale","cartesianAddInPlace","uu","polar","q1","visible","c0","v00","point2","intersect","clipMax","clipMin","corner","comparePoint","ca","x__","y__","v__","x_","y_","v_","activeStream","bufferStream","clipStream","b1","polygonInside","cleanInside","ax","ay","cacheStream","clipRectangle","lengthSum","lengthStream","lengthPointFirst","lengthLineEnd","lengthPoint","cosDelta","containsObjectType","containsGeometry","containsGeometryType","containsPoint","containsLine","containsPolygon","ao","bo","ab","ringRadians","pointRadians","DX","DY","graticule","outline","extentMajor","extentMinor","stepMajor","stepMinor","graticuleX","graticuleY","cy0","cy1","sy1","kx0","ky0","kx1","ky1","haversin","x00","y00","no","Yo","bounds","centroidPointFirstLine","centroidPointLine","centroidPointFirstRing","centroidPointRing","PathContext","_radius","pointRadius","_line","_point","lengthRing","projectionStream","contextStream","pathArea","measure","pathMeasure","pathBounds","pathCentroid","PathString","methods","transformer","TransformStream","fitBounds","clipExtent","geoStream","fit","fitExtent","_circle","cosMinDistance","delta2","phi2","dx2","dy2","dz","resampleLineTo","a00","b00","c00","resampleStream","ringPoint","resample","resampleNone","transformRadians","cosAlpha","sinAlpha","ai","fi","projectionMutator","projectAt","projectResample","projectTransform","projectRotateTransform","preclip","clipAntimeridian","postclip","scaleTranslateRotate","scaleTranslate","transformRotate","clipAngle","clipCircle","recenter","reflectX","reflectY","fitSize","fitWidth","fitHeight","parallels","cylindricalEqualAreaRaw","r0","r0y","conicProjection","conicEqualAreaRaw","conicEqualArea","lower48Point","alaskaPoint","hawaiiPoint","lower48","albers","alaska","hawaii","pointStream","albersUsa","streams","multiplex","sc","azimuthalEqualAreaRaw","azimuthalRaw","cxcy","azimuthalInvert","azimuthalEquidistantRaw","mercatorProjection","mercatorRaw","reclip","tany","conicConformalRaw","equirectangularRaw","gy","nx","conicEquidistantRaw","A1","A2","A3","A4","l2","l6","equalEarthRaw","gnomonicRaw","tx","ty","kx","ky","phi4","naturalEarth1Raw","orthographicRaw","stereographicRaw","transverseMercatorRaw","separation","defaultSeparation","nodeSize","eachAfter","meanXReduce","meanX","maxYReduce","leafLeft","leafRight","cluster","childs","valued","defaultChildren","eachBefore","computeHeight","hierarchy","ancestor","aNodes","ancestors","bNodes","leastCommonAncestor","leaves","copyData","shuffle","enclosesWeak","encloseBasis","extendBasis","enclosesWeakAll","enclosesNot","encloseBasis2","encloseBasis3","dr","encloseBasis1","r21","r3","a2","a3","b2","b3","aa","sj","sk","place","intersects","score","enclose","packEnclose","constantZero","radiusLeaf","packChildren","translateChild","treemapDice","positionNode","roundNode","partition","preroot","ambiguous","parentId","defaultId","defaultParentId","nodeKey","nodeByKey","stratify","wm","wp","vim","treeRoot","firstWalk","secondWalk","sizeNode","siblings","executeShifts","midpoint","vip","vop","vom","sip","sop","sim","som","nextRight","nextLeft","moveSubtree","nextAncestor","apportion","sumValue","minValue","maxValue","newRatio","minRatio","beta","dice","treemapSlice","squarifyRatio","squarify","tile","paddingStack","paddingInner","paddingTop","paddingBottom","treemap","paddingOuter","sums","valueOffset","valueTarget","valueLeft","valueRight","xk","yk","_squarify","resquarify","hue","rho","SQRT2","ux0","uy0","coshr0","tanh","colorHsl","hslLong","colorLab","colorHcl","hclLong","colorCubehelix","cubehelixGamma","cubehelixLong","interpolator","samples","cross","sortedPoints","flippedPoints","lexicographicOrder","upperIndexes","computeUpperHullIndexes","lowerIndexes","skipLeft","skipRight","hull","inside","perimeter","randomUniform","sourceRandomUniform","P5","mu","sigma","randomNormal","sourceRandomNormal","w4","randomLogNormal","sourceRandomLogNormal","O5","randomIrwinHall","sourceRandomIrwinHall","k4","irwinHall","randomBates","sourceRandomBates","randomExponential","sourceRandomExponential","implicit","unknown","ordinal","initRange","ordinalRange","sequence","rescale","rangeRound","band","pointish","clamp","untransform","piecewise","interpolateValue","polymap","bimap","clamper","interpolateRound","precisionPrefix","precisionRound","precisionFixed","nice","Z","continuous","linearish","logs","pows","transformLog","transformExp","log10","log2","logp","pow10","powp","transformLogn","transformExpn","loggish","log1p","expm1","transformSymlog","transformSymexp","symlogish","symlog","transformSqrt","transformSquare","transformPow","powish","invertExtent","quantiles","quantize","floori","offseti","newInterval","R5","durationMinute","durationHour","durationWeek","sunday","monday","tuesday","wednesday","thursday","friday","saturday","sundays","mondays","tuesdays","wednesdays","thursdays","fridays","saturdays","c6","hour","s_","minute","I4","second","millisecond","setUTCDate","getUTCDay","utcSunday","utcWeekday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","utcSundays","utcMondays","utcTuesdays","utcWednesdays","utcThursdays","utcFridays","utcSaturdays","utcDay","utcDays","utcYear","setUTCMonth","utcYears","L","UTC","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_weekdays","locale_shortWeekdays","shortDays","locale_months","locale_shortMonths","shortMonths","periodRe","formatRe","periodLookup","formatLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","formatDayOfMonth","formatMicroseconds","formatYearISO","formatFullYearISO","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMonthNumber","formatMinutes","formatUnixTimestamp","formatUnixTimestampSeconds","formatSeconds","formatWeekdayNumberMonday","U","formatWeekNumberSunday","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatFullYear","formatZone","formatLiteralPercent","utcFormats","formatUTCDayOfMonth","formatUTCMicroseconds","formatUTCYearISO","formatUTCFullYearISO","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCSeconds","formatUTCWeekdayNumberMonday","formatUTCWeekNumberSunday","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCFullYear","formatUTCZone","parses","parseSpecifier","parseDayOfMonth","parseMicroseconds","parseYear","parseFullYear","parseHour24","parseDayOfYear","parseMilliseconds","parseMonthNumber","parseMinutes","parseQuarter","parseUnixTimestamp","parseUnixTimestampSeconds","parseSeconds","parseWeekdayNumberMonday","parseWeekNumberSunday","parseWeekNumberISO","parseWeekdayNumberSunday","parseWeekNumberMonday","parseZone","parseLiteralPercent","pads","utcDate","localDate","timeMonday","timeDay","newParse","numberRe","percentRe","requoteRe","requote","timeYear","timeSunday","timeThursday","dISO","dow","UTCdISO","durationSecond","durationDay","durationMonth","durationYear","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","tickIntervals","ut","timeMonth","timeWeek","timeHour","timeMinute","timeSecond","timeMillisecond","utcMonth","O8","utcMonths","utcHour","setUTCMinutes","f3","utcHours","utcMinute","setUTCSeconds","M6","utcMinutes","utcWeek","utcSecond","utcMillisecond","k10","sequential","initInterpolator","sequentialLog","sequentialSymlog","sequentialPow","sequentialQuantile","k21","diverging","divergingLog","divergingSymlog","divergingPow","zb","Lb","Q1","Qv","$v","Wv","Xv","Zb","scheme","interpolateRgbBasis","Kv","ramp","tM","k8","Ib","rM","Rb","iM","aM","cM","lM","N8","uM","gM","I8","dM","Vb","k_","pM","hM","_M","T_","p3","B8","E_","j8","q8","CM","interpolateCubehelixLong","warm","cool","ts","pi_1_3","pi_2_3","magma","inferno","plasma","Local","x10","y10","x32","y32","ox","oy","x11","y11","cx0","cx1","dx0","dy0","dx1","dy1","arcOuterRadius","cornerRadius","padRadius","arcStartAngle","arcEndAngle","arcPadAngle","a01","a11","a10","da0","da1","ap","rp","rc0","rc1","oc","bx","by","kc","lc","ie","cornerTangents","Linear","pointX","pointY","defined0","x0z","y0z","areaStart","areaEnd","lineX0","lineY0","arealine","lineY1","lineX1","descending","pa","curveRadialLinear","curveRadial","_curve","Radial","radial","lineRadial","lineStartAngle","lineEndAngle","lineInnerRadius","lineOuterRadius","linkSource","linkTarget","pointRadial","p2","curveHorizontal","curveVertical","draw","pC","tan30","tan30_2","C3","kr","CC","vC","sqrt3","F_","H_","symbols","diamond","square","star","triangle","wye","Basis","BasisClosed","BasisOpen","_basis","_beta","_x3","_x4","_y3","_y4","Bundle","_k","tension","Cardinal","CardinalClosed","_x5","_y5","CardinalOpen","_l01_a","_l01_2a","_l12_a","_l12_2a","_l23_a","_l23_2a","_alpha","CatmullRom","x23","y23","catmullRom","CatmullRomClosed","CatmullRomOpen","LinearClosed","h0","h1","ReflectContext","MonotoneX","MonotoneY","Natural","Step","series","orderNone","offsetNone","stackValue","oz","kz","sz","sij","ki","s2","sij0","s3","peaks","peak","vi","vj","appearance","tops","bottoms","_t0","slope2","slope3","px","controlPoints","py","isoSpecifier","IC","toISOString","K_","RedBlackTree","grandpa","uncle","RedBlackFirst","RedBlackRotateLeft","RedBlackRotateRight","edge","edges","setEdgeEnd","cells","halfedges","vertex","fm","fb","lx","ly","rx","ry","cell","site","va","vb","firstCircle","circlePool","RedBlackNode","lArc","rArc","lSite","cSite","rSite","ha","hc","Circle","beachPool","beach","Beach","detachCircle","beaches","disappearing","detachBeach","iArc","nArcs","createEdge","attachCircle","dxl","dxr","directrix","leftBreakPoint","rightBreakPoint","createCell","createBeach","hb","rfocx","rfocy","pby2","lfocx","lfocy","plby2","hl","aby2","sites","lexicographic","addBeach","removeBeach","cellHalfedgeAngle","sortCellHalfedges","connectEdge","clipEdge","clipEdges","iCell","iHalfedge","nHalfedges","startX","startY","endX","endY","nCells","cellHalfedgeEnd","cellHalfedgeStart","createBorderEdge","dc","v01","v11","v10","clipCells","Diagram","voronoi","triangles","triangleArea","_found","Transform","applyX","applyY","invertX","invertY","rescaleY","__zoom","SVGElement","touchstarting","constrain","defaultConstrain","wheelDelta","defaultWheelDelta","interpolateZoom","touchDelay","defaultTransform","wheeled","dblclicked","__zooming","Gesture","taps","wheel","wheelidled","touch0","touch1","l0","l1","dp","dl","scaleBy","scaleTo","k0","translateBy","translateTo","ZoomEvent","FUNC_ERROR_TEXT","HASH_UNDEFINED","PLACEHOLDER","INFINITY","MAX_SAFE_INTEGER","MAX_ARRAY_LENGTH","wrapFlags","argsTag","arrayTag","boolTag","dateTag","errorTag","funcTag","genTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reIsDeepProp","reIsPlainProp","rePropName","reRegExpChar","reHasRegExpChar","reTrimStart","reWhitespace","reWrapComment","reWrapDetails","reSplitDetails","reAsciiWord","reForbiddenIdentifierChars","reEscapeChar","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsHostCtor","reIsOctal","reIsUint","reLatin","reNoMatch","reUnescapedString","rsAstralRange","rsComboRange","rsComboMarksRange","rsDingbatRange","rsLowerRange","rsUpperRange","rsVarRange","rsBreakRange","rsMathOpRange","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","reOptMod","rsModifier","rsOptVar","rsSeq","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","typedArrayTags","cloneableTags","stringEscapes","freeParseFloat","freeParseInt","freeGlobal","freeSelf","freeExports","freeModule","moduleExports","freeProcess","nodeUtil","nodeIsArrayBuffer","nodeIsDate","nodeIsMap","nodeIsRegExp","isRegExp","nodeIsSet","isSet","nodeIsTypedArray","isTypedArray","setter","iteratee","resIndex","baseIndexOf","comparator","initAccum","asciiSize","baseProperty","eachFunc","fromIndex","fromRight","strictIndexOf","baseFindIndex","baseIsNaN","baseSum","trimmedEndIndex","arrayMap","strSymbols","chrSymbols","deburrLetter","basePropertyOf","escapeHtmlChar","chr","hasUnicode","unicodeSize","unicodeToArray","asciiToArray","unescapeHtmlChar","uid","defaults","pick","arrayProto","objectProto","coreJsData","funcToString","idCounter","maskSrcKey","IE_PROTO","nativeObjectToString","objectCtorString","oldDash","reIsNative","Buffer","Uint8Array","allocUnsafe","getPrototype","overArg","objectCreate","propertyIsEnumerable","spreadableSymbol","isConcatSpreadable","symIterator","symToStringTag","toStringTag","getNative","ctxClearTimeout","ctxNow","ctxSetTimeout","nativeCeil","nativeFloor","nativeGetSymbols","nativeIsBuffer","isBuffer","nativeIsFinite","nativeJoin","nativeKeys","nativeMax","nativeMin","nativeNow","nativeParseInt","nativeRandom","nativeReverse","WeakMap","nativeCreate","metaMap","realNames","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","symbolToString","isObjectLike","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","chainAll","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","MapCache","ListCache","inherited","isArr","isArg","isArguments","isBuff","skipIndexes","baseTimes","isIndex","baseRandom","shuffleSelf","copyArray","baseClamp","eq","baseAssignValue","objValue","baseEach","copyObject","skip","upper","bitmask","customizer","isDeep","isFlat","isFull","initCloneArray","getTag","isFunc","cloneBuffer","initCloneObject","getSymbolsIn","copySymbolsIn","keysIn","baseAssignIn","getSymbols","copySymbols","baseAssign","Ctor","cloneArrayBuffer","dataView","byteOffset","byteLength","cloneDataView","cloneTypedArray","regexp","cloneRegExp","cloneSymbol","initCloneByTag","Stack","stacked","om","subValue","baseClone","getAllKeysIn","getAllKeys","arrayEach","assignValue","arrayIncludes","isCommon","valuesLength","baseUnary","arrayIncludesWith","cacheHas","SetCache","computed","valuesIndex","lodash","templateSettings","escape","evaluate","variable","baseLodash","Hash","assocIndexOf","getMapData","LARGE_ARRAY_SIZE","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","isSymbol","isStrict","isFlattenable","baseFlatten","arrayPush","baseFor","createBaseFor","baseForRight","arrayFilter","castPath","toKey","keysFunc","symbolsFunc","isOwn","unmasked","getRawTag","objectToString","othLength","othIndex","caches","seen","baseGetTag","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","mapToArray","setToArray","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","isPartial","objProps","objLength","objStacked","othStacked","skipCtor","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsEqual","matchData","noCustomizer","srcValue","COMPARE_PARTIAL_FLAG","isMasked","baseMatchesProperty","baseMatches","isPrototype","isArrayLike","getMatchData","matchesStrictComparable","baseIsMatch","isKey","isStrictComparable","hasIn","srcIndex","mergeFunc","safeGet","assignMergeValue","isTyped","isArrayLikeObject","Ee","Le","isPlainObject","Co","toPlainObject","baseMergeDeep","baseMerge","iteratees","orders","baseGet","getIteratee","comparer","objCriteria","criteria","othCriteria","ordersLength","compareAscending","compareMultiple","baseSortBy","baseMap","baseSet","baseIndexOfWith","baseUnset","setToString","overRest","arraySample","nested","baseSetData","baseSetToString","Mc","retHighest","low","high","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","dt","baseToString","createSet","seenIndex","updater","isDrop","baseSlice","actions","arrayReduce","baseUniq","baseDifference","assignFunc","valsLength","stringToPath","castRest","baseRest","typedArray","valIsDefined","valIsReflexive","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","holdersIndex","rightIndex","rightLength","isNew","initializer","arrayAggregator","baseAggregator","assigner","isIterateeCall","methodName","stringToArray","trailing","castSlice","words","deburr","thisBinding","findIndexFunc","flatRest","funcs","prereq","thru","getFuncName","funcName","isLaziable","WRAP_ARY_FLAG","plant","partialsRight","holdersRight","argPos","ary","arity","isAry","isBind","isBindKey","WRAP_CURRY_FLAG","isFlip","createCtor","getHolder","holdersCount","countHolders","composeArgs","composeArgsRight","newHolders","replaceHolders","createRecurry","createHybrid","Un","reorder","toIteratee","baseInverter","operator","baseToNumber","arrayFunc","charsLength","baseRepeat","stringSize","toFinite","baseRange","wrapFunc","isCurry","newData","setData","setWrapToString","setToPairs","baseToPairs","srcBitmask","newBitmask","WRAP_BIND_FLAG","mergeData","createCurry","createPartial","createBind","customDefaultsMerge","arrLength","arrStacked","arrValue","arraySome","baseGetAllKeys","otherFunc","baseIteratee","isKeyable","baseIsNative","stubArray","hasFunc","isLength","ctorString","isMaskable","stubFalse","otherArgs","oldArray","shortOut","reference","details","insertWrapDetails","updateWrapDetails","getWrapDetails","lastCalled","stamp","rand","memoize","quote","subString","difference","differenceBy","differenceWith","mapped","castArrayLikeObject","baseIntersection","intersectionBy","intersectionWith","pullAll","basePullAll","pullAt","baseAt","basePullAt","union","unionBy","unionWith","unzip","without","xor","baseXor","xorBy","xorWith","zipWith","unzipWith","wrapperAt","countBy","createAggregator","createFind","findLast","findLastIndex","arrayEachRight","groupBy","invokeMap","baseInvoke","keyBy","sortBy","baseOrderBy","createWrap","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","timerExpired","invokeFunc","timeSinceLastCall","shouldInvoke","trailingEdge","timeWaiting","remainingWait","isInvoking","leadingEdge","debounced","baseDelay","memoized","Cache","overArgs","transforms","funcsLength","partial","partialRight","rearg","gt","createRelationalOperation","baseGt","gte","baseIsArguments","baseLt","lte","iteratorToArray","remainder","baseTrim","isBinary","createAssigner","assignIn","assignInWith","assignWith","propsIndex","defaultsDeep","mergeWith","hasPath","baseHasIn","createInverter","invertBy","arrayLikeKeys","baseKeys","nativeKeysIn","isProto","baseKeysIn","omit","CLONE_DEEP_FLAG","customOmitClone","basePickBy","basePick","toPairs","createToPairs","toPairsIn","baseValues","camelCase","createCompounder","word","capitalize","upperFirst","kebabCase","lowerCase","lowerFirst","createCaseFirst","snakeCase","startCase","upperCase","hasUnicodeWord","unicodeWords","asciiWords","attempt","isError","bindAll","methodNames","createFlow","flowRight","methodOf","baseFunctions","over","createOver","overEvery","arrayEvery","overSome","basePropertyDeep","createRange","rangeRight","createMathOperation","augend","addend","createRound","divide","dividend","divisor","multiply","multiplicand","subtract","minuend","subtrahend","castArray","compact","cond","conforms","baseConformsTo","baseConforms","curry","curryRight","debounce","drop","dropRight","dropRightWhile","baseWhile","dropWhile","toLength","baseFill","baseFilter","flatMap","flatMapDeep","flatMapDepth","flattenDeep","flattenDepth","fromPairs","functionsIn","mapKeys","mapValues","matchesProperty","mixin","negate","nthArg","baseNth","omitBy","pickBy","once","orderBy","propertyOf","pullAllBy","pullAllWith","sampleSize","arraySampleSize","baseSampleSize","setWith","arrayShuffle","baseShuffle","sortedUniq","baseSortedUniq","sortedUniqBy","limit","spread","takeRight","takeRightWhile","takeWhile","throttle","toArray","toPath","isArrLike","unary","uniq","uniqBy","uniqWith","unset","baseUpdate","castFunction","updateWith","valuesIn","zipObject","baseZipObject","zipObjectDeep","entriesIn","extendWith","cloneDeep","cloneDeepWith","cloneWith","conformsTo","defaultTo","escapeRegExp","baseEvery","findKey","baseFindKey","findLastKey","forEachRight","forIn","forInRight","forOwn","forOwnRight","baseHas","inRange","baseInRange","isElement","isEqual","isEqualWith","isMatch","isMatchWith","isNative","isNil","isNull","isSafeInteger","isWeakMap","isWeakSet","strictLastIndexOf","baseExtremum","maxBy","baseMean","meanBy","minBy","stubObject","stubString","stubTrue","nth","noConflict","strLength","createPadding","padStart","radix","floating","baseReduce","arrayReduceRight","runInContext","sample","baseSample","baseSome","sortedIndex","baseSortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","sumBy","settings","customDefaultsAssignIn","isEscaping","isEvaluating","importsKeys","importsValues","reDelimiters","sourceURL","escapeValue","esTemplateValue","evaluateValue","escapeStringChar","times","toLower","toSafeInteger","toUpper","charsStartIndex","charsEndIndex","trimEnd","trimStart","truncate","omission","newEnd","unescape","uniqueId","eachRight","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","getView","iterLength","takeCount","baseWrapperValue","iterIndex","commit","toJSON","Op","hasOwn","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","innerFn","outerFn","tryLocsList","generator","Generator","Context","_invoke","GenStateSuspendedStart","GenStateExecuting","GenStateCompleted","doneResult","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","tryCatch","GenStateSuspendedYield","makeInvokeMethod","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","GeneratorFunctionPrototype","PromiseImpl","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","info","resultName","nextLoc","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","completion","pushTryEntry","iteratorMethod","GeneratorFunction","displayName","isGeneratorFunction","genFun","mark","setPrototypeOf","__proto__","awrap","defineIteratorMethods","AsyncIterator","iter","skipTempReset","resetTryEntry","rootRecord","rval","exception","loc","caught","hasCatch","hasFinally","finallyEntry","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","kind","nextOrObserver","do","undefinedValueNotification","completeNotification","kn","fns","ct","_isScalar","rxSubscriberSymbol","emptyObserver","toSubscriber","syncErrorThrowable","_trySubscribe","syncErrorThrown","syncErrorValue","canReportError","promiseCtor","getPromiseCtor","Symbol_observable","operations","pipeFromArray","Bn","hostReportError","outerValue","innerIndex","SubjectSubscriber","AnonymousSubject","qt","It","subscriberIndex","destinationOrNext","Xt","SafeSubscriber","_error","_complete","_parentOrParents","_parentSubscriber","__tryOrSetError","__tryOrUnsub","useDeprecatedSynchronousErrorHandling","wrappedComplete","UnsubscriptionError","UnsubscriptionErrorImpl","_subscriptions","_ctorUnsubscribe","_unsubscribe","flattenUnsubscriptionErrors","sub","teardown","tmp","subscriptionIndex","Qn","errs","_enable_super_gross_mode_that_will_cause_bad_things","notifyNext","notifyError","notifyComplete","innerSubscriber","subscribeTo","subjectFactory","_refCount","_isComplete","getSubject","connection","_connection","ConnectableSubscriber","higherOrderRefCount","connectableObservableDescriptor","connectableProto","connect","connectable","CombineLatestOperator","CombineLatestSubscriber","unused","_tryResultSelector","concatAll","observableFactory","emptyScheduled","forkJoinInternal","emitted","isInteropObservable","scheduleObservable","schedulePromise","scheduleArray","isIterable","scheduleIterable","scheduled","subscribeToArray","concurrent","In","CatchOperator","CatchSubscriber","err2","_unsubscribeAndRecycle","innerSubscription","keySelector","DistinctUntilChangedOperator","DistinctUntilChangedSubscriber","hasKey","FilterOperator","FilterSubscriber","FinallyOperator","FinallySubscriber","MapOperator","MapSubscriber","ii","MergeMapOperator","MergeMapSubscriber","_innerSub","ish","RefCountOperator","refCounter","RefCountSubscriber","sharedConnection","subjectOrSubjectFactory","multicast","shareSubjectFactory","SwitchMapOperator","SwitchMapSubscriber","TakeOperator","TakeSubscriber","DoOperator","TapSubscriber","_tapNext","_tapError","_tapComplete","recycleAsyncId","requestAsyncId","errorValue","Scheduler","SchedulerAction","execute","rxSubscriber","ArgumentOutOfRangeErrorImpl","ObjectUnsubscribedErrorImpl","subscribeToObservable","subscribeToPromise","subscribeToIterable","InnerSubscriber","outerSubscriber","authService","logout","updateNative","appMin","sessionStorage","atob","httpClient","post","adresseEmail","motDePasse","setItem","defaultOptions","modalService","componentInstance","closeText","cancelText","submitText","bootstrapModalService","alert","modalRef","ei","Wr","Authorization","Om","$r","errorService","faCalendar","faChartLine","faCheck","faChevronDown","faChevronRight","faFileExcel","faInfoCircle","faMinus","faPencilAlt","faPlayCircle","faPlus","faPowerOff","faSearch","faTimes","faTrashAlt","X3","Za","V6","gn","ra","Zl","$d","pl","Di","uf","K2","Bp","sg","Rc","TranslateHttpLoader","http","y4","O4","t6","n6","pointFonctionnement","isInRange","pointFonctionnementService","isPointFonctionnementInRange","inError","isInError","inPartialError","isInPartialError","activeEspece","mainEspece","secondEspece","thirdEspece","consommation","typeStockage","gaine","especePonderees","debit","pression","courbeVentilateur","borneInf","borneSup","espece","poids","formeCellule","diametre","hauteur","longueur","largeur","typeGaineCaniveau","nbGaines","longueurGaine","dureeMaximale","getEspecesPonderees","ventilateur","modele","formeCelluleService","getFormeCellules","formeCellules","typeStockageService","getTypeStockages","typeStockages","currentPointFonctionnement","debitPressionToBackendFormat","fromBackendFormat","toBackendFormat","pointFonctionnementAvecPertesCharges","URL_API_GEO","URL_COMMUNES","QUERY_FIELDS","use","ro","VentilisAuditModule","Cn","BASE_URL","URL_USER","Yn","matchMotDePasse","Wn","matchEmail","mt","appInteger","rn","sn","user","loaderService","typeActiviteService","getTypesActivites","typesActivite","duplicateEmail","onAcceptRgpd","dateRgpd","userService","save","badEmail","checkUser","reinitialiseMotDePasse","userId","queryParamMap","userToken","updateMotDePasse","Oi","Dn","resetPointFonctionnement","ga","Kr","getPointFonctionnement","wr","appMax","To","especePonderee","selectedEspece","loadEspeces","cdr","especeService","getEspeces","especes","formEsp","formValid","fa","submitting","getSelectedEspece","Ir","getTypeGaines","errorModal","fixedImg","onChangeBigImage","bigImg","fichiers","nomFichier","resetPointFonctionnementInstallation","resetFormState","gaineMissing","gaineService","getTypeGaineCaniveau","gaines","formInstall","chartResult","initChart","especesPonderees","MIN_X","buildChartResult","borneSupPression","borneInfPression","courbePression","pressionSansPerte","MAIN_ESPECE_COLOR","SECOND_ESPECE_COLOR","THIRD_ESPECE_COLOR","PLAGE_FONCTIONNEMENT_COLOR","RENDEMENT_DEGRADE_COLOR","COURBE_VENTILATEUR_COLOR","label","MAX_X","formatAxis","MIN_Y","MAX_Y","expand","grouped","contents","On","it","formatTooltip","MAX_X_ABS","Tt","Pe","le","he","libelle","trunc","activeTab","al","_fourniseurs","new","newChoice","monVentilateur","resetFournisseurSelection","resetModeleSelection","canCalculate","calculLaunch","loadFournisseursCompatibles","getFournisseurs","resetDureeSelection","fournisseur","formVentilateur","modeles","fournisseurService","getVentilateurs","ventilateursCompatibles","ventilateurs","calculating","calculateCoupleDebitPression","searchingState","getVentilateursCompatibles","fournisseurs","getModelesCompatibles","errorMsg","getResultats","getModeles","Rt","Qt","ni","He","Oo","Qo","Ko","Ar","badPassword","login","password","ll","ks","Xi","sl","yl","URL_SILOS","actif","saveSilo","Ni","dateDebutPalier1","dateFinPalier1","dateDebutPalier2","dateFinPalier2","dateDebutPalier3","dateFinPalier3","Vi","objectifs","dateDebut","dateFin","Gc","diagnostic","tempFin","DebounceTimeOperator","ru","DebounceTimeSubscriber","debouncedSubscription","lastValue","clearDebounce","dispatchNext","debouncedNext","metropole","stockageService","getStockages","stockages","silo","stockage","stockageId","formSubmitSubscription","siloService","saved","savedSubscription","codePostalChangesSubscription","codePostalCtrl","ja","communes","getCommunes","codePostal","communeService","getCommunesByCodeDepartement","setCommunes","getCommunesByCodePostal","codeInsee","commune","checkUniqueCommune","onSelectCommune","nom","latitude","centre","cu","getSilos","silosUnfiltered","resetFilter","applyCodePostalFilter","silosByCodePostal","updateFilterCommunes","filterCommunes","applyCommuneFilter","silos","editingSilo","bootstrapModal","commentaire","confirm","deleteLogicalSilo","silosLimit","lancerDiagnostic","diagnosticService","createDiagnostic","Pc","Ds","paramMap","lu","getDiagnostic","saveDiagnostic","su","$e","C2","subcriptionOnComponent","nbPaliers","palierService","getPaliers","paliers","indexPalier","tempDefaut","cdRef","initFormPalier3","readyToRead","tempIntervalleSup","tempDemarrage","tempDebut","tempFin3Ctrl","dateDebut3Ctrl","dateFin3Ctrl","formObjectif","qi","gu","rechauffage","rechauffageHigh","du","D1","sectionGaineService","getSectionsGaines","sectionsGaines","sectionCtrl","SECTIONS","RONDE","largeurGaine","CARREE","diametreGaine","Zs","getFormesCellules","pointMesureService","getPointsMesures","formesCellules","pointsMesures","formeCelluleCtrl","FORMES","longueurCellule","largeurCellule","diametreCellule","Ju","Qu","illustratif","nbCellulesAlimentees","MAX_NB_CELLULES_ALIMENTEES","MAX_NB_GAINES","celluleDim","nbCellulesVentilees","nbGainesAlimentees","nbGainesAval","w2","profondeurHistoriqueService","getProfondeursHistorique","profondeurs","tempGaine","tempEntree","profondeurHistorique","Cs","xc","fenetreClimatique","doseSpecifique","debitSpecifique","paliersMessages","firstElementChild","Td","arrayAll","selectChild","childFirst","childFind","childMatcher","selectChildren","childrenFilter","arraylike","exitGroup","selection_iterator","R2","DOMMatrix","WebKitCSSMatrix","isIdentity","easeVarying","FENETRE_Y","FENETRE_BASELINE","FENETRE_HEIGHT","DUREE_Y","DUREE_BASELINE","getDiagnosticChartResult","datePipe","temperature","lm","PALIER_BASELINE","FENETRE_BASELINE_2","DUREE_HEIGHT","dureeVentilation","DUREE_BASELINE_2","gm","pd","getDiagnosticAsCsv","download","createObjectURL","visibility","canExitScreen","ta","hf","_f","isAuthenticated","zm","Cf","vf","bootstrapModule","Mf"],"sources":["./$_lazy_route_resources|lazy|groupOptions:%20%7B%7D|namespace%20object","./node_modules/@angular/common/__ivy_ngcc__/fesm2015/common.js","./node_modules/@angular/common/__ivy_ngcc__/fesm2015/http.js","./node_modules/@angular/common/locales/fr.js","./node_modules/@babel/runtime/helpers/esm/construct.js","./node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","./node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","./node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js","./node_modules/@angular/forms/__ivy_ngcc__/fesm2015/forms.js","./node_modules/@angular/platform-browser/__ivy_ngcc__/fesm2015/platform-browser.js","./node_modules/rxjs/_esm2015/internal/util/EmptyError.js","./node_modules/rxjs/_esm2015/internal/operators/scan.js","./node_modules/rxjs/_esm2015/internal/operators/takeLast.js","./node_modules/rxjs/_esm2015/internal/operators/throwIfEmpty.js","./node_modules/rxjs/_esm2015/internal/operators/defaultIfEmpty.js","./node_modules/rxjs/_esm2015/internal/operators/first.js","./node_modules/@angular/router/__ivy_ngcc__/fesm2015/router.js","./node_modules/rxjs/_esm2015/internal/operators/last.js","./node_modules/@fortawesome/fontawesome-svg-core/index.es.js","./node_modules/@fortawesome/angular-fontawesome/__ivy_ngcc__/fesm2015/angular-fontawesome.js","./node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","./node_modules/rxjs/_esm2015/internal/observable/fromEvent.js","./node_modules/rxjs/_esm2015/internal/util/isNumeric.js","./node_modules/rxjs/_esm2015/internal/observable/timer.js","./node_modules/rxjs/_esm2015/internal/observable/race.js","./node_modules/rxjs/_esm2015/internal/observable/zip.js","./node_modules/rxjs/_esm2015/internal/operators/takeUntil.js","./node_modules/rxjs/_esm2015/internal/operators/withLatestFrom.js","./node_modules/rxjs/_esm2015/internal/util/isDate.js","./node_modules/rxjs/_esm2015/internal/operators/delay.js","./node_modules/rxjs/_esm2015/internal/operators/skip.js","./node_modules/@ng-bootstrap/ng-bootstrap/__ivy_ngcc__/fesm2015/ng-bootstrap.js","./node_modules/rxjs/_esm2015/internal/operators/endWith.js","./node_modules/rxjs/_esm2015/internal/util/isObservable.js","./node_modules/rxjs/_esm2015/internal/scheduler/QueueAction.js","./node_modules/rxjs/_esm2015/internal/scheduler/queue.js","./node_modules/rxjs/_esm2015/internal/scheduler/QueueScheduler.js","./node_modules/rxjs/_esm2015/internal/operators/observeOn.js","./node_modules/rxjs/_esm2015/internal/ReplaySubject.js","./node_modules/rxjs/_esm2015/internal/operators/shareReplay.js","./node_modules/@ngx-translate/core/__ivy_ngcc__/fesm2015/ngx-translate-core.js","./node_modules/c3/c3.js","./node_modules/c3/node_modules/d3/dist/package.js","./node_modules/d3-array/src/ascending.js","./node_modules/d3-array/src/bisector.js","./node_modules/d3-array/src/bisect.js","./node_modules/d3-array/src/pairs.js","./node_modules/d3-array/src/cross.js","./node_modules/d3-array/src/descending.js","./node_modules/d3-array/src/number.js","./node_modules/d3-array/src/variance.js","./node_modules/d3-array/src/deviation.js","./node_modules/d3-array/src/extent.js","./node_modules/d3-array/src/array.js","./node_modules/d3-array/src/constant.js","./node_modules/d3-array/src/identity.js","./node_modules/d3-array/src/range.js","./node_modules/d3-array/src/ticks.js","./node_modules/d3-array/src/threshold/sturges.js","./node_modules/d3-array/src/histogram.js","./node_modules/d3-array/src/quantile.js","./node_modules/d3-array/src/threshold/freedmanDiaconis.js","./node_modules/d3-array/src/threshold/scott.js","./node_modules/d3-array/src/max.js","./node_modules/d3-array/src/mean.js","./node_modules/d3-array/src/median.js","./node_modules/d3-array/src/merge.js","./node_modules/d3-array/src/min.js","./node_modules/d3-array/src/permute.js","./node_modules/d3-array/src/scan.js","./node_modules/d3-array/src/shuffle.js","./node_modules/d3-array/src/sum.js","./node_modules/d3-array/src/transpose.js","./node_modules/d3-array/src/zip.js","./node_modules/d3-axis/src/array.js","./node_modules/d3-axis/src/identity.js","./node_modules/d3-axis/src/axis.js","./node_modules/d3-dispatch/src/dispatch.js","./node_modules/d3-selection/src/selector.js","./node_modules/d3-selection/src/selectorAll.js","./node_modules/d3-selection/src/matcher.js","./node_modules/d3-selection/src/selection/sparse.js","./node_modules/d3-selection/src/selection/enter.js","./node_modules/d3-selection/src/selection/data.js","./node_modules/d3-selection/src/selection/sort.js","./node_modules/d3-selection/src/namespaces.js","./node_modules/d3-selection/src/namespace.js","./node_modules/d3-selection/src/selection/attr.js","./node_modules/d3-selection/src/window.js","./node_modules/d3-selection/src/selection/style.js","./node_modules/d3-selection/src/selection/property.js","./node_modules/d3-selection/src/selection/classed.js","./node_modules/d3-selection/src/selection/text.js","./node_modules/d3-selection/src/selection/html.js","./node_modules/d3-selection/src/selection/raise.js","./node_modules/d3-selection/src/selection/lower.js","./node_modules/d3-selection/src/creator.js","./node_modules/d3-selection/src/selection/insert.js","./node_modules/d3-selection/src/selection/remove.js","./node_modules/d3-selection/src/selection/clone.js","./node_modules/d3-selection/src/selection/on.js","./node_modules/d3-selection/src/selection/dispatch.js","./node_modules/d3-selection/src/selection/index.js","./node_modules/d3-selection/src/selection/select.js","./node_modules/d3-selection/src/selection/selectAll.js","./node_modules/d3-selection/src/selection/filter.js","./node_modules/d3-selection/src/constant.js","./node_modules/d3-selection/src/selection/exit.js","./node_modules/d3-selection/src/selection/join.js","./node_modules/d3-selection/src/selection/merge.js","./node_modules/d3-selection/src/selection/order.js","./node_modules/d3-selection/src/selection/call.js","./node_modules/d3-selection/src/selection/nodes.js","./node_modules/d3-selection/src/selection/node.js","./node_modules/d3-selection/src/selection/size.js","./node_modules/d3-selection/src/selection/empty.js","./node_modules/d3-selection/src/selection/each.js","./node_modules/d3-selection/src/selection/append.js","./node_modules/d3-selection/src/selection/datum.js","./node_modules/d3-selection/src/select.js","./node_modules/d3-drag/src/noevent.js","./node_modules/d3-drag/src/nodrag.js","./node_modules/d3-color/src/define.js","./node_modules/d3-color/src/color.js","./node_modules/d3-interpolate/src/basis.js","./node_modules/d3-interpolate/src/basisClosed.js","./node_modules/d3-interpolate/src/constant.js","./node_modules/d3-interpolate/src/color.js","./node_modules/d3-interpolate/src/rgb.js","./node_modules/d3-interpolate/src/numberArray.js","./node_modules/d3-interpolate/src/array.js","./node_modules/d3-interpolate/src/date.js","./node_modules/d3-interpolate/src/number.js","./node_modules/d3-interpolate/src/object.js","./node_modules/d3-interpolate/src/string.js","./node_modules/d3-interpolate/src/value.js","./node_modules/d3-selection/src/sourceEvent.js","./node_modules/d3-selection/src/point.js","./node_modules/d3-selection/src/touch.js","./node_modules/d3-selection/src/mouse.js","./node_modules/d3-timer/src/timer.js","./node_modules/d3-timer/src/timeout.js","./node_modules/d3-transition/src/transition/schedule.js","./node_modules/d3-transition/src/interrupt.js","./node_modules/d3-interpolate/src/transform/decompose.js","./node_modules/d3-interpolate/src/transform/parse.js","./node_modules/d3-interpolate/src/transform/index.js","./node_modules/d3-transition/src/transition/tween.js","./node_modules/d3-transition/src/transition/interpolate.js","./node_modules/d3-transition/src/transition/attr.js","./node_modules/d3-transition/src/transition/attrTween.js","./node_modules/d3-transition/src/transition/delay.js","./node_modules/d3-transition/src/transition/duration.js","./node_modules/d3-transition/src/transition/ease.js","./node_modules/d3-transition/src/transition/on.js","./node_modules/d3-transition/src/transition/selection.js","./node_modules/d3-transition/src/transition/style.js","./node_modules/d3-transition/src/transition/styleTween.js","./node_modules/d3-transition/src/transition/textTween.js","./node_modules/d3-transition/src/transition/index.js","./node_modules/d3-ease/src/cubic.js","./node_modules/d3-transition/src/transition/select.js","./node_modules/d3-transition/src/transition/selectAll.js","./node_modules/d3-transition/src/transition/filter.js","./node_modules/d3-transition/src/transition/merge.js","./node_modules/d3-transition/src/transition/transition.js","./node_modules/d3-transition/src/transition/text.js","./node_modules/d3-transition/src/transition/remove.js","./node_modules/d3-transition/src/transition/end.js","./node_modules/d3-transition/src/selection/transition.js","./node_modules/d3-transition/src/selection/index.js","./node_modules/d3-transition/src/selection/interrupt.js","./node_modules/d3-transition/src/active.js","./node_modules/d3-brush/src/constant.js","./node_modules/d3-brush/src/event.js","./node_modules/d3-brush/src/noevent.js","./node_modules/d3-brush/src/brush.js","./node_modules/d3-chord/src/math.js","./node_modules/d3-chord/src/chord.js","./node_modules/d3-chord/src/array.js","./node_modules/d3-chord/src/constant.js","./node_modules/d3-path/src/path.js","./node_modules/d3-chord/src/ribbon.js","./node_modules/d3-collection/src/map.js","./node_modules/d3-collection/src/nest.js","./node_modules/d3-collection/src/set.js","./node_modules/d3-collection/src/keys.js","./node_modules/d3-collection/src/values.js","./node_modules/d3-collection/src/entries.js","./node_modules/d3-color/src/math.js","./node_modules/d3-color/src/lab.js","./node_modules/d3-color/src/cubehelix.js","./node_modules/d3-contour/src/array.js","./node_modules/d3-contour/src/ascending.js","./node_modules/d3-contour/src/constant.js","./node_modules/d3-contour/src/contains.js","./node_modules/d3-contour/src/noop.js","./node_modules/d3-contour/src/contours.js","./node_modules/d3-contour/src/area.js","./node_modules/d3-contour/src/blur.js","./node_modules/d3-contour/src/density.js","./node_modules/d3-drag/src/constant.js","./node_modules/d3-drag/src/event.js","./node_modules/d3-drag/src/drag.js","./node_modules/d3-dsv/src/dsv.js","./node_modules/d3-dsv/src/csv.js","./node_modules/d3-dsv/src/tsv.js","./node_modules/d3-dsv/src/autoType.js","./node_modules/d3-ease/src/linear.js","./node_modules/d3-ease/src/quad.js","./node_modules/d3-ease/src/poly.js","./node_modules/d3-ease/src/sin.js","./node_modules/d3-ease/src/math.js","./node_modules/d3-ease/src/exp.js","./node_modules/d3-ease/src/circle.js","./node_modules/d3-ease/src/bounce.js","./node_modules/d3-ease/src/back.js","./node_modules/d3-ease/src/elastic.js","./node_modules/d3-fetch/src/blob.js","./node_modules/d3-fetch/src/buffer.js","./node_modules/d3-fetch/src/text.js","./node_modules/d3-fetch/src/dsv.js","./node_modules/d3-fetch/src/image.js","./node_modules/d3-fetch/src/json.js","./node_modules/d3-fetch/src/xml.js","./node_modules/d3-force/src/center.js","./node_modules/d3-force/src/constant.js","./node_modules/d3-force/src/jiggle.js","./node_modules/d3-quadtree/src/add.js","./node_modules/d3-quadtree/src/quad.js","./node_modules/d3-quadtree/src/x.js","./node_modules/d3-quadtree/src/y.js","./node_modules/d3-quadtree/src/quadtree.js","./node_modules/d3-force/src/collide.js","./node_modules/d3-force/src/link.js","./node_modules/d3-force/src/simulation.js","./node_modules/d3-quadtree/src/cover.js","./node_modules/d3-quadtree/src/data.js","./node_modules/d3-quadtree/src/extent.js","./node_modules/d3-quadtree/src/find.js","./node_modules/d3-quadtree/src/remove.js","./node_modules/d3-quadtree/src/root.js","./node_modules/d3-quadtree/src/size.js","./node_modules/d3-quadtree/src/visit.js","./node_modules/d3-quadtree/src/visitAfter.js","./node_modules/d3-force/src/manyBody.js","./node_modules/d3-force/src/radial.js","./node_modules/d3-force/src/x.js","./node_modules/d3-force/src/y.js","./node_modules/d3-format/src/formatDecimal.js","./node_modules/d3-format/src/exponent.js","./node_modules/d3-format/src/formatSpecifier.js","./node_modules/d3-format/src/formatPrefixAuto.js","./node_modules/d3-format/src/formatRounded.js","./node_modules/d3-format/src/formatTypes.js","./node_modules/d3-format/src/identity.js","./node_modules/d3-format/src/locale.js","./node_modules/d3-format/src/defaultLocale.js","./node_modules/d3-format/src/formatGroup.js","./node_modules/d3-format/src/formatNumerals.js","./node_modules/d3-format/src/formatTrim.js","./node_modules/d3-format/src/precisionFixed.js","./node_modules/d3-format/src/precisionPrefix.js","./node_modules/d3-format/src/precisionRound.js","./node_modules/d3-geo/src/adder.js","./node_modules/d3-geo/src/math.js","./node_modules/d3-geo/src/noop.js","./node_modules/d3-geo/src/stream.js","./node_modules/d3-geo/src/area.js","./node_modules/d3-geo/src/cartesian.js","./node_modules/d3-geo/src/bounds.js","./node_modules/d3-geo/src/centroid.js","./node_modules/d3-geo/src/constant.js","./node_modules/d3-geo/src/compose.js","./node_modules/d3-geo/src/rotation.js","./node_modules/d3-geo/src/circle.js","./node_modules/d3-geo/src/clip/buffer.js","./node_modules/d3-geo/src/pointEqual.js","./node_modules/d3-geo/src/clip/rejoin.js","./node_modules/d3-geo/src/polygonContains.js","./node_modules/d3-geo/src/clip/index.js","./node_modules/d3-geo/src/clip/antimeridian.js","./node_modules/d3-geo/src/clip/circle.js","./node_modules/d3-geo/src/clip/rectangle.js","./node_modules/d3-geo/src/clip/line.js","./node_modules/d3-geo/src/clip/extent.js","./node_modules/d3-geo/src/length.js","./node_modules/d3-geo/src/distance.js","./node_modules/d3-geo/src/contains.js","./node_modules/d3-geo/src/graticule.js","./node_modules/d3-geo/src/interpolate.js","./node_modules/d3-geo/src/identity.js","./node_modules/d3-geo/src/path/area.js","./node_modules/d3-geo/src/path/centroid.js","./node_modules/d3-geo/src/path/bounds.js","./node_modules/d3-geo/src/path/context.js","./node_modules/d3-geo/src/path/measure.js","./node_modules/d3-geo/src/path/string.js","./node_modules/d3-geo/src/path/index.js","./node_modules/d3-geo/src/transform.js","./node_modules/d3-geo/src/projection/fit.js","./node_modules/d3-geo/src/projection/resample.js","./node_modules/d3-geo/src/projection/index.js","./node_modules/d3-geo/src/projection/conic.js","./node_modules/d3-geo/src/projection/conicEqualArea.js","./node_modules/d3-geo/src/projection/cylindricalEqualArea.js","./node_modules/d3-geo/src/projection/albers.js","./node_modules/d3-geo/src/projection/albersUsa.js","./node_modules/d3-geo/src/projection/azimuthal.js","./node_modules/d3-geo/src/projection/azimuthalEqualArea.js","./node_modules/d3-geo/src/projection/azimuthalEquidistant.js","./node_modules/d3-geo/src/projection/mercator.js","./node_modules/d3-geo/src/projection/conicConformal.js","./node_modules/d3-geo/src/projection/equirectangular.js","./node_modules/d3-geo/src/projection/conicEquidistant.js","./node_modules/d3-geo/src/projection/equalEarth.js","./node_modules/d3-geo/src/projection/gnomonic.js","./node_modules/d3-geo/src/projection/identity.js","./node_modules/d3-geo/src/projection/naturalEarth1.js","./node_modules/d3-geo/src/projection/orthographic.js","./node_modules/d3-geo/src/projection/stereographic.js","./node_modules/d3-geo/src/projection/transverseMercator.js","./node_modules/d3-hierarchy/src/cluster.js","./node_modules/d3-hierarchy/src/hierarchy/count.js","./node_modules/d3-hierarchy/src/hierarchy/index.js","./node_modules/d3-hierarchy/src/hierarchy/each.js","./node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","./node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","./node_modules/d3-hierarchy/src/hierarchy/sum.js","./node_modules/d3-hierarchy/src/hierarchy/sort.js","./node_modules/d3-hierarchy/src/hierarchy/path.js","./node_modules/d3-hierarchy/src/hierarchy/ancestors.js","./node_modules/d3-hierarchy/src/hierarchy/descendants.js","./node_modules/d3-hierarchy/src/hierarchy/leaves.js","./node_modules/d3-hierarchy/src/hierarchy/links.js","./node_modules/d3-hierarchy/src/array.js","./node_modules/d3-hierarchy/src/pack/enclose.js","./node_modules/d3-hierarchy/src/pack/siblings.js","./node_modules/d3-hierarchy/src/accessors.js","./node_modules/d3-hierarchy/src/constant.js","./node_modules/d3-hierarchy/src/pack/index.js","./node_modules/d3-hierarchy/src/treemap/round.js","./node_modules/d3-hierarchy/src/treemap/dice.js","./node_modules/d3-hierarchy/src/partition.js","./node_modules/d3-hierarchy/src/stratify.js","./node_modules/d3-hierarchy/src/tree.js","./node_modules/d3-hierarchy/src/treemap/slice.js","./node_modules/d3-hierarchy/src/treemap/squarify.js","./node_modules/d3-hierarchy/src/treemap/index.js","./node_modules/d3-hierarchy/src/treemap/binary.js","./node_modules/d3-hierarchy/src/treemap/sliceDice.js","./node_modules/d3-hierarchy/src/treemap/resquarify.js","./node_modules/d3-interpolate/src/discrete.js","./node_modules/d3-interpolate/src/hue.js","./node_modules/d3-interpolate/src/round.js","./node_modules/d3-interpolate/src/zoom.js","./node_modules/d3-interpolate/src/hsl.js","./node_modules/d3-interpolate/src/lab.js","./node_modules/d3-interpolate/src/hcl.js","./node_modules/d3-interpolate/src/cubehelix.js","./node_modules/d3-interpolate/src/piecewise.js","./node_modules/d3-interpolate/src/quantize.js","./node_modules/d3-polygon/src/area.js","./node_modules/d3-polygon/src/centroid.js","./node_modules/d3-polygon/src/cross.js","./node_modules/d3-polygon/src/hull.js","./node_modules/d3-polygon/src/contains.js","./node_modules/d3-polygon/src/length.js","./node_modules/d3-random/src/defaultSource.js","./node_modules/d3-random/src/uniform.js","./node_modules/d3-random/src/normal.js","./node_modules/d3-random/src/logNormal.js","./node_modules/d3-random/src/irwinHall.js","./node_modules/d3-random/src/bates.js","./node_modules/d3-random/src/exponential.js","./node_modules/d3-scale/src/init.js","./node_modules/d3-scale/src/array.js","./node_modules/d3-scale/src/ordinal.js","./node_modules/d3-scale/src/band.js","./node_modules/d3-scale/src/number.js","./node_modules/d3-scale/src/continuous.js","./node_modules/d3-scale/src/constant.js","./node_modules/d3-scale/src/tickFormat.js","./node_modules/d3-scale/src/linear.js","./node_modules/d3-scale/src/identity.js","./node_modules/d3-scale/src/nice.js","./node_modules/d3-scale/src/log.js","./node_modules/d3-scale/src/symlog.js","./node_modules/d3-scale/src/pow.js","./node_modules/d3-scale/src/quantile.js","./node_modules/d3-scale/src/quantize.js","./node_modules/d3-scale/src/threshold.js","./node_modules/d3-time/src/interval.js","./node_modules/d3-time/src/year.js","./node_modules/d3-time/src/month.js","./node_modules/d3-time/src/duration.js","./node_modules/d3-time/src/week.js","./node_modules/d3-time/src/day.js","./node_modules/d3-time/src/hour.js","./node_modules/d3-time/src/minute.js","./node_modules/d3-time/src/second.js","./node_modules/d3-time/src/millisecond.js","./node_modules/d3-time/src/utcWeek.js","./node_modules/d3-time/src/utcDay.js","./node_modules/d3-time/src/utcYear.js","./node_modules/d3-time-format/src/locale.js","./node_modules/d3-time-format/src/defaultLocale.js","./node_modules/d3-scale/src/time.js","./node_modules/d3-time/src/utcMonth.js","./node_modules/d3-time/src/utcHour.js","./node_modules/d3-time/src/utcMinute.js","./node_modules/d3-scale/src/utcTime.js","./node_modules/d3-scale/src/sequential.js","./node_modules/d3-scale/src/sequentialQuantile.js","./node_modules/d3-scale/src/diverging.js","./node_modules/d3-scale-chromatic/src/colors.js","./node_modules/d3-scale-chromatic/src/categorical/category10.js","./node_modules/d3-scale-chromatic/src/categorical/Accent.js","./node_modules/d3-scale-chromatic/src/categorical/Dark2.js","./node_modules/d3-scale-chromatic/src/categorical/Paired.js","./node_modules/d3-scale-chromatic/src/categorical/Pastel1.js","./node_modules/d3-scale-chromatic/src/categorical/Pastel2.js","./node_modules/d3-scale-chromatic/src/categorical/Set1.js","./node_modules/d3-scale-chromatic/src/categorical/Set2.js","./node_modules/d3-scale-chromatic/src/categorical/Set3.js","./node_modules/d3-scale-chromatic/src/categorical/Tableau10.js","./node_modules/d3-scale-chromatic/src/ramp.js","./node_modules/d3-scale-chromatic/src/diverging/BrBG.js","./node_modules/d3-scale-chromatic/src/diverging/PRGn.js","./node_modules/d3-scale-chromatic/src/diverging/PiYG.js","./node_modules/d3-scale-chromatic/src/diverging/PuOr.js","./node_modules/d3-scale-chromatic/src/diverging/RdBu.js","./node_modules/d3-scale-chromatic/src/diverging/RdGy.js","./node_modules/d3-scale-chromatic/src/diverging/RdYlBu.js","./node_modules/d3-scale-chromatic/src/diverging/RdYlGn.js","./node_modules/d3-scale-chromatic/src/diverging/Spectral.js","./node_modules/d3-scale-chromatic/src/sequential-multi/BuGn.js","./node_modules/d3-scale-chromatic/src/sequential-multi/BuPu.js","./node_modules/d3-scale-chromatic/src/sequential-multi/GnBu.js","./node_modules/d3-scale-chromatic/src/sequential-multi/OrRd.js","./node_modules/d3-scale-chromatic/src/sequential-multi/PuBuGn.js","./node_modules/d3-scale-chromatic/src/sequential-multi/PuBu.js","./node_modules/d3-scale-chromatic/src/sequential-multi/PuRd.js","./node_modules/d3-scale-chromatic/src/sequential-multi/RdPu.js","./node_modules/d3-scale-chromatic/src/sequential-multi/YlGnBu.js","./node_modules/d3-scale-chromatic/src/sequential-multi/YlGn.js","./node_modules/d3-scale-chromatic/src/sequential-multi/YlOrBr.js","./node_modules/d3-scale-chromatic/src/sequential-multi/YlOrRd.js","./node_modules/d3-scale-chromatic/src/sequential-single/Blues.js","./node_modules/d3-scale-chromatic/src/sequential-single/Greens.js","./node_modules/d3-scale-chromatic/src/sequential-single/Greys.js","./node_modules/d3-scale-chromatic/src/sequential-single/Purples.js","./node_modules/d3-scale-chromatic/src/sequential-single/Reds.js","./node_modules/d3-scale-chromatic/src/sequential-single/Oranges.js","./node_modules/d3-scale-chromatic/src/sequential-multi/cividis.js","./node_modules/d3-scale-chromatic/src/sequential-multi/cubehelix.js","./node_modules/d3-scale-chromatic/src/sequential-multi/rainbow.js","./node_modules/d3-scale-chromatic/src/sequential-multi/sinebow.js","./node_modules/d3-scale-chromatic/src/sequential-multi/turbo.js","./node_modules/d3-scale-chromatic/src/sequential-multi/viridis.js","./node_modules/d3-selection/src/create.js","./node_modules/d3-selection/src/local.js","./node_modules/d3-selection/src/selectAll.js","./node_modules/d3-selection/src/touches.js","./node_modules/d3-shape/src/constant.js","./node_modules/d3-shape/src/math.js","./node_modules/d3-shape/src/arc.js","./node_modules/d3-shape/src/curve/linear.js","./node_modules/d3-shape/src/point.js","./node_modules/d3-shape/src/line.js","./node_modules/d3-shape/src/area.js","./node_modules/d3-shape/src/descending.js","./node_modules/d3-shape/src/identity.js","./node_modules/d3-shape/src/pie.js","./node_modules/d3-shape/src/curve/radial.js","./node_modules/d3-shape/src/lineRadial.js","./node_modules/d3-shape/src/areaRadial.js","./node_modules/d3-shape/src/pointRadial.js","./node_modules/d3-shape/src/array.js","./node_modules/d3-shape/src/link/index.js","./node_modules/d3-shape/src/symbol/circle.js","./node_modules/d3-shape/src/symbol/cross.js","./node_modules/d3-shape/src/symbol/diamond.js","./node_modules/d3-shape/src/symbol/star.js","./node_modules/d3-shape/src/symbol/square.js","./node_modules/d3-shape/src/symbol/triangle.js","./node_modules/d3-shape/src/symbol/wye.js","./node_modules/d3-shape/src/symbol.js","./node_modules/d3-shape/src/noop.js","./node_modules/d3-shape/src/curve/basis.js","./node_modules/d3-shape/src/curve/basisClosed.js","./node_modules/d3-shape/src/curve/basisOpen.js","./node_modules/d3-shape/src/curve/bundle.js","./node_modules/d3-shape/src/curve/cardinal.js","./node_modules/d3-shape/src/curve/cardinalClosed.js","./node_modules/d3-shape/src/curve/cardinalOpen.js","./node_modules/d3-shape/src/curve/catmullRom.js","./node_modules/d3-shape/src/curve/catmullRomClosed.js","./node_modules/d3-shape/src/curve/catmullRomOpen.js","./node_modules/d3-shape/src/curve/linearClosed.js","./node_modules/d3-shape/src/curve/monotone.js","./node_modules/d3-shape/src/curve/natural.js","./node_modules/d3-shape/src/curve/step.js","./node_modules/d3-shape/src/offset/none.js","./node_modules/d3-shape/src/order/none.js","./node_modules/d3-shape/src/stack.js","./node_modules/d3-shape/src/offset/expand.js","./node_modules/d3-shape/src/offset/diverging.js","./node_modules/d3-shape/src/offset/silhouette.js","./node_modules/d3-shape/src/offset/wiggle.js","./node_modules/d3-shape/src/order/appearance.js","./node_modules/d3-shape/src/order/ascending.js","./node_modules/d3-shape/src/order/descending.js","./node_modules/d3-shape/src/order/insideOut.js","./node_modules/d3-shape/src/order/reverse.js","./node_modules/d3-time-format/src/isoFormat.js","./node_modules/d3-time-format/src/isoParse.js","./node_modules/d3-timer/src/interval.js","./node_modules/d3-voronoi/src/constant.js","./node_modules/d3-voronoi/src/point.js","./node_modules/d3-voronoi/src/RedBlackTree.js","./node_modules/d3-voronoi/src/Edge.js","./node_modules/d3-voronoi/src/Cell.js","./node_modules/d3-voronoi/src/Circle.js","./node_modules/d3-voronoi/src/Beach.js","./node_modules/d3-voronoi/src/Diagram.js","./node_modules/d3-voronoi/src/voronoi.js","./node_modules/d3-zoom/src/constant.js","./node_modules/d3-zoom/src/event.js","./node_modules/d3-zoom/src/transform.js","./node_modules/d3-zoom/src/noevent.js","./node_modules/d3-zoom/src/zoom.js","./node_modules/lodash/lodash.js","./node_modules/regenerator-runtime/runtime.js","./node_modules/rxjs/_esm2015/internal/BehaviorSubject.js","./node_modules/rxjs/_esm2015/internal/Notification.js","./node_modules/rxjs/_esm2015/internal/util/pipe.js","./node_modules/rxjs/_esm2015/internal/Observable.js","./node_modules/rxjs/_esm2015/internal/util/toSubscriber.js","./node_modules/rxjs/_esm2015/internal/util/canReportError.js","./node_modules/rxjs/_esm2015/internal/Observer.js","./node_modules/rxjs/_esm2015/internal/OuterSubscriber.js","./node_modules/rxjs/_esm2015/internal/Subject.js","./node_modules/rxjs/_esm2015/internal/SubjectSubscription.js","./node_modules/rxjs/_esm2015/internal/Subscriber.js","./node_modules/rxjs/_esm2015/internal/util/UnsubscriptionError.js","./node_modules/rxjs/_esm2015/internal/Subscription.js","./node_modules/rxjs/_esm2015/internal/config.js","./node_modules/rxjs/_esm2015/internal/innerSubscribe.js","./node_modules/rxjs/_esm2015/internal/observable/ConnectableObservable.js","./node_modules/rxjs/_esm2015/internal/observable/combineLatest.js","./node_modules/rxjs/_esm2015/internal/operators/concatAll.js","./node_modules/rxjs/_esm2015/internal/observable/concat.js","./node_modules/rxjs/_esm2015/internal/observable/defer.js","./node_modules/rxjs/_esm2015/internal/observable/empty.js","./node_modules/rxjs/_esm2015/internal/observable/forkJoin.js","./node_modules/rxjs/_esm2015/internal/observable/from.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduled.js","./node_modules/rxjs/_esm2015/internal/util/isInteropObservable.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduleObservable.js","./node_modules/rxjs/_esm2015/internal/scheduled/schedulePromise.js","./node_modules/rxjs/_esm2015/internal/util/isIterable.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduleIterable.js","./node_modules/rxjs/_esm2015/internal/observable/fromArray.js","./node_modules/rxjs/_esm2015/internal/observable/merge.js","./node_modules/rxjs/_esm2015/internal/observable/of.js","./node_modules/rxjs/_esm2015/internal/observable/throwError.js","./node_modules/rxjs/_esm2015/internal/operators/catchError.js","./node_modules/rxjs/_esm2015/internal/operators/concatMap.js","./node_modules/rxjs/_esm2015/internal/operators/distinctUntilChanged.js","./node_modules/rxjs/_esm2015/internal/operators/filter.js","./node_modules/rxjs/_esm2015/internal/operators/finalize.js","./node_modules/rxjs/_esm2015/internal/operators/map.js","./node_modules/rxjs/_esm2015/internal/operators/mergeAll.js","./node_modules/rxjs/_esm2015/internal/operators/mergeMap.js","./node_modules/rxjs/_esm2015/internal/operators/refCount.js","./node_modules/rxjs/_esm2015/internal/operators/share.js","./node_modules/rxjs/_esm2015/internal/operators/multicast.js","./node_modules/rxjs/_esm2015/internal/operators/startWith.js","./node_modules/rxjs/_esm2015/internal/operators/switchMap.js","./node_modules/rxjs/_esm2015/internal/operators/take.js","./node_modules/rxjs/_esm2015/internal/operators/tap.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduleArray.js","./node_modules/rxjs/_esm2015/internal/scheduler/AsyncAction.js","./node_modules/rxjs/_esm2015/internal/scheduler/Action.js","./node_modules/rxjs/_esm2015/internal/Scheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/AsyncScheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/async.js","./node_modules/rxjs/_esm2015/internal/symbol/iterator.js","./node_modules/rxjs/_esm2015/internal/symbol/observable.js","./node_modules/rxjs/_esm2015/internal/symbol/rxSubscriber.js","./node_modules/rxjs/_esm2015/internal/util/ArgumentOutOfRangeError.js","./node_modules/rxjs/_esm2015/internal/util/ObjectUnsubscribedError.js","./node_modules/rxjs/_esm2015/internal/util/hostReportError.js","./node_modules/rxjs/_esm2015/internal/util/identity.js","./node_modules/rxjs/_esm2015/internal/util/isArray.js","./node_modules/rxjs/_esm2015/internal/util/isArrayLike.js","./node_modules/rxjs/_esm2015/internal/util/isFunction.js","./node_modules/rxjs/_esm2015/internal/util/isObject.js","./node_modules/rxjs/_esm2015/internal/util/isPromise.js","./node_modules/rxjs/_esm2015/internal/util/isScheduler.js","./node_modules/rxjs/_esm2015/internal/util/noop.js","./node_modules/rxjs/_esm2015/internal/util/subscribeTo.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToObservable.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToPromise.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToIterable.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToArray.js","./node_modules/rxjs/_esm2015/internal/InnerSubscriber.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToResult.js","./src/app/shared/components/footer/footer.component.ts","./src/app/shared/components/footer/footer.component.html","./src/app/shared/components/header/header.component.html","./src/app/shared/components/header/header.component.ts","./src/app/shared/components/popover/popover.component.ts","./src/app/shared/components/popover/popover.component.html","./src/app/shared/directives/min.directive.ts","./src/app/shared/services/auth.service.ts","./src/app/shared/services/bootstrap-modal/alert/alert-modal-content/alert-modal-content.component.html","./src/app/shared/services/bootstrap-modal/alert/alert-modal-content/alert-modal-content.component.ts","./src/app/shared/services/bootstrap-modal/confirm/confirm-modal-content/confirm-modal-content.component.html","./src/app/shared/services/bootstrap-modal/confirm/confirm-modal-content/confirm-modal-content.component.ts","./src/app/shared/services/bootstrap-modal/bootstrap-modal.service.ts","./src/app/shared/services/error/error.service.ts","./src/app/shared/services/loader/loader-content/loader-content.component.ts","./src/app/shared/services/loader/loader-content/loader-content.component.html","./src/app/shared/services/loader/loader-ref.ts","./src/app/shared/services/loader/loader.service.ts","./src/app/shared/services/app-date-fr-parser-formatter.ts","./src/app/shared/services/auth-interceptor.ts","./node_modules/@fortawesome/free-solid-svg-icons/index.es.js","./src/app/shared/modules/font-awesome-lib.module.ts","./node_modules/@ngx-translate/http-loader/__ivy_ngcc__/fesm2015/ngx-translate-http-loader.js","./src/app/shared/shared.module.ts","./src/app/shared/util.ts","./src/app/ventilis-agri/components/ventilis-tableau-resultat/ventilis-tableau-resultat.component.html","./src/app/ventilis-agri/components/ventilis-tableau-resultat/ventilis-tableau-resultat.component.ts","./src/app/ventilis-agri/models/espece-ponderee.model.ts","./src/app/ventilis-agri/services/forme-cellule.service.ts","./src/app/ventilis-agri/models/recherche-point-fonctionnement.model.ts","./src/app/ventilis-agri/services/point-fonctionnement.service.ts","./src/app/ventilis-agri/services/type-stockage.service.ts","./src/app/ventilis-agri/ventilis-agri-share.module.ts","./src/app/ventilis-diag/services/commune.service.ts","./src/app/app.component.ts","./src/app/app.component.html","./src/app/accueil/accueil/accueil.component.html","./src/app/accueil/accueil/accueil.component.ts","./src/app/accueil/accueil-routing.module.ts","./src/app/accueil/accueil.module.ts","./src/app/app-routing.module.ts","./src/app/compte/models/user.model.ts","./src/app/compte/modals/protection-donnees/protection-donnees.component.ts","./src/app/compte/modals/protection-donnees/protection-donnees.component.html","./src/app/compte/services/type-activite.service.ts","./src/app/compte/services/user.service.ts","./src/app/compte/directives/match-password.directive.ts","./src/app/compte/directives/match-email.directive.ts","./src/app/shared/directives/integer.directive.ts","./src/app/compte/nouveau-compte/nouveau-compte.component.html","./src/app/compte/nouveau-compte/nouveau-compte.component.ts","./src/app/compte/main/main.component.ts","./src/app/compte/main/main.component.html","./src/app/compte/mot-de-passe-oublie/mot-de-passe-oublie.component.html","./src/app/compte/modification-mot-de-passe/modification-mot-de-passe.component.html","./src/app/compte/modification-mot-de-passe/modification-mot-de-passe.component.ts","./src/app/compte/compte-routing.module.ts","./src/app/compte/mot-de-passe-oublie/mot-de-passe-oublie.component.ts","./src/app/compte/compte.module.ts","./src/app/core/core.module.ts","./src/app/ventilis-agri/ventilis-agri-accueil/ventilis-agri-accueil.component.ts","./src/app/ventilis-agri/ventilis-agri-accueil/ventilis-agri-accueil.component.html","./src/app/ventilis-agri/models/step.enum.model.ts","./src/app/ventilis-agri/components/ventilis-agri-breadcrumb/ventilis-agri-breadcrumb.component.html","./src/app/ventilis-agri/components/ventilis-agri-breadcrumb/ventilis-agri-breadcrumb.component.ts","./src/app/ventilis-agri/services/espece.service.ts","./src/app/shared/directives/max.directive.ts","./src/app/ventilis-agri/components/ventilis-agri-espece-ponderee/ventilis-agri-espece-ponderee.component.html","./src/app/ventilis-agri/components/ventilis-agri-espece-ponderee/ventilis-agri-espece-ponderee.component.ts","./src/app/ventilis-agri/ventilis-agri-espece/ventilis-agri-espece.component.ts","./src/app/ventilis-agri/ventilis-agri-espece/ventilis-agri-espece.component.html","./src/app/ventilis-agri/services/gaine.service.ts","./src/app/ventilis-agri/ventilis-agri-installation/ventilis-agri-installation.component.html","./src/app/ventilis-agri/ventilis-agri-installation/ventilis-agri-installation.component.ts","./src/app/ventilis-agri/ventilis-agri-main/ventilis-agri-main.component.ts","./src/app/ventilis-agri/ventilis-agri-main/ventilis-agri-main.component.html","./src/app/ventilis-agri/components/resultat-chart/ventilis-agri-result-chart.component.html","./src/app/ventilis-agri/components/resultat-chart/ventilis-agri-result-chart.component.ts","./src/app/ventilis-agri/ventilis-agri-resultat/ventilis-agri-resultat.component.html","./src/app/ventilis-agri/ventilis-agri-resultat/ventilis-agri-resultat.component.ts","./src/app/ventilis-agri/services/fournisseur.service.ts","./src/app/ventilis-agri/ventilis-agri-ventilateur/ventilis-agri-ventilateur.component.html","./src/app/ventilis-agri/ventilis-agri-ventilateur/ventilis-agri-ventilateur.component.ts","./src/app/ventilis-agri/ventilis-agri-routing.module.ts","./src/app/ventilis-diag/services/forme-cellule.service.ts","./src/app/ventilis-agri/ventilis-agri.module.ts","./src/app/compte/login/login.component.html","./src/app/compte/login/login.component.ts","./src/app/ventilis-diag/ventilis-diag-accueil/ventilis-diag-accueil.component.html","./src/app/ventilis-diag/ventilis-diag-accueil/ventilis-diag-accueil.component.ts","./src/app/ventilis-diag/models/step.enum.model.ts","./src/app/ventilis-diag/models/diagnostic.model.ts","./src/app/ventilis-diag/models/silo.model.ts","./src/app/ventilis-diag/models/silo-filter.model.ts","./src/app/ventilis-diag/services/silo.service.ts","./src/app/ventilis-diag/services/diagnostic.service.ts","./src/app/ventilis-diag/components/ventilis-diag-breadcrumb/ventilis-diag-breadcrumb.component.html","./src/app/ventilis-diag/components/ventilis-diag-breadcrumb/ventilis-diag-breadcrumb.component.ts","./node_modules/rxjs/_esm2015/internal/operators/debounceTime.js","./src/app/ventilis-diag/services/stockage.service.ts","./src/app/ventilis-diag/directives/code-metropole.directive.ts","./src/app/ventilis-diag/components/silo-edit/silo-edit.component.html","./src/app/ventilis-diag/components/silo-edit/silo-edit.component.ts","./src/app/ventilis-diag/ventilis-diag-silo/ventilis-diag-silo.component.html","./src/app/ventilis-diag/ventilis-diag-silo/ventilis-diag-silo.component.ts","./src/app/ventilis-diag/services/espece.service.ts","./src/app/ventilis-diag/components/fiche-silo/fiche-silo.component.ts","./src/app/ventilis-diag/components/fiche-silo/fiche-silo.component.html","./src/app/ventilis-diag/ventilis-diag-espece/ventilis-diag-espece.component.html","./src/app/ventilis-diag/ventilis-diag-espece/ventilis-diag-espece.component.ts","./src/app/ventilis-diag/models/objectif-palier.model.ts","./src/app/ventilis-diag/services/palier.service.ts","./src/app/ventilis-diag/ventilis-diag-objectif/ventilis-diag-objectif.component.html","./src/app/ventilis-diag/ventilis-diag-objectif/ventilis-diag-objectif.component.ts","./src/app/ventilis-diag/models/stockages.enum.ts","./src/app/ventilis-diag/services/profondeur-historique.service.ts","./src/app/ventilis-diag/directives/temp-ambiant-entree.directive.ts","./src/app/ventilis-diag/models/sections-gaine.enum.ts","./src/app/ventilis-diag/services/section-gaine.service.ts","./src/app/ventilis-diag/components/materiel-form-commun/materiel-form-commun.component.html","./src/app/ventilis-diag/components/materiel-form-commun/materiel-form-commun.component.ts","./src/app/ventilis-diag/models/formes-cellule.enum.ts","./src/app/ventilis-diag/services/point-mesure.service.ts","./src/app/ventilis-diag/components/materiel-form-cellule/materiel-form-cellule.component.html","./src/app/ventilis-diag/components/materiel-form-cellule/materiel-form-cellule.component.ts","./src/app/ventilis-diag/components/materiel-form-plat/materiel-form-plat.component.html","./src/app/ventilis-diag/components/materiel-form-plat/materiel-form-plat.component.ts","./src/app/ventilis-diag/models/points-mesures.enum.ts","./src/app/shared/pipes/range/range.pipe.ts","./src/app/ventilis-diag/components/materiel-schema-cellule/materiel-schema-cellule.component.html","./src/app/ventilis-diag/components/materiel-schema-cellule/materiel-schema-cellule.component.ts","./src/app/ventilis-diag/components/materiel-schema-plat/materiel-schema-plat.component.html","./src/app/ventilis-diag/components/materiel-schema-plat/materiel-schema-plat.component.ts","./src/app/ventilis-diag/ventilis-diag-materiel/ventilis-diag-materiel.component.html","./src/app/ventilis-diag/ventilis-diag-materiel/ventilis-diag-materiel.component.ts","./src/app/core/can-deactivate/component-can-deactivate.ts","./src/app/shared/pipes/position/position.pipe.ts","./src/app/ventilis-diag/components/resultat-avis/resultat-avis.component.html","./src/app/ventilis-diag/components/resultat-avis/resultat-avis.component.ts","./node_modules/d3/node_modules/d3-selection/src/selector.js","./node_modules/d3/node_modules/d3-selection/src/array.js","./node_modules/d3/node_modules/d3-selection/src/selectorAll.js","./node_modules/d3/node_modules/d3-selection/src/matcher.js","./node_modules/d3/node_modules/d3-selection/src/selection/selectChild.js","./node_modules/d3/node_modules/d3-selection/src/selection/selectChildren.js","./node_modules/d3/node_modules/d3-selection/src/selection/sparse.js","./node_modules/d3/node_modules/d3-selection/src/selection/enter.js","./node_modules/d3/node_modules/d3-selection/src/constant.js","./node_modules/d3/node_modules/d3-selection/src/selection/data.js","./node_modules/d3/node_modules/d3-selection/src/selection/sort.js","./node_modules/d3/node_modules/d3-selection/src/namespaces.js","./node_modules/d3/node_modules/d3-selection/src/namespace.js","./node_modules/d3/node_modules/d3-selection/src/selection/attr.js","./node_modules/d3/node_modules/d3-selection/src/window.js","./node_modules/d3/node_modules/d3-selection/src/selection/style.js","./node_modules/d3/node_modules/d3-selection/src/selection/property.js","./node_modules/d3/node_modules/d3-selection/src/selection/classed.js","./node_modules/d3/node_modules/d3-selection/src/selection/text.js","./node_modules/d3/node_modules/d3-selection/src/selection/html.js","./node_modules/d3/node_modules/d3-selection/src/selection/raise.js","./node_modules/d3/node_modules/d3-selection/src/selection/lower.js","./node_modules/d3/node_modules/d3-selection/src/creator.js","./node_modules/d3/node_modules/d3-selection/src/selection/insert.js","./node_modules/d3/node_modules/d3-selection/src/selection/remove.js","./node_modules/d3/node_modules/d3-selection/src/selection/clone.js","./node_modules/d3/node_modules/d3-selection/src/selection/on.js","./node_modules/d3/node_modules/d3-selection/src/selection/dispatch.js","./node_modules/d3/node_modules/d3-selection/src/selection/iterator.js","./node_modules/d3/node_modules/d3-selection/src/selection/index.js","./node_modules/d3/node_modules/d3-selection/src/selection/select.js","./node_modules/d3/node_modules/d3-selection/src/selection/selectAll.js","./node_modules/d3/node_modules/d3-selection/src/selection/filter.js","./node_modules/d3/node_modules/d3-selection/src/selection/exit.js","./node_modules/d3/node_modules/d3-selection/src/selection/join.js","./node_modules/d3/node_modules/d3-selection/src/selection/merge.js","./node_modules/d3/node_modules/d3-selection/src/selection/order.js","./node_modules/d3/node_modules/d3-selection/src/selection/call.js","./node_modules/d3/node_modules/d3-selection/src/selection/nodes.js","./node_modules/d3/node_modules/d3-selection/src/selection/node.js","./node_modules/d3/node_modules/d3-selection/src/selection/size.js","./node_modules/d3/node_modules/d3-selection/src/selection/empty.js","./node_modules/d3/node_modules/d3-selection/src/selection/each.js","./node_modules/d3/node_modules/d3-selection/src/selection/append.js","./node_modules/d3/node_modules/d3-selection/src/selection/datum.js","./node_modules/d3/node_modules/d3-dispatch/src/dispatch.js","./node_modules/d3/node_modules/d3-timer/src/timer.js","./node_modules/d3/node_modules/d3-timer/src/timeout.js","./node_modules/d3/node_modules/d3-transition/src/transition/schedule.js","./node_modules/d3/node_modules/d3-interpolate/src/number.js","./node_modules/d3/node_modules/d3-interpolate/src/transform/decompose.js","./node_modules/d3/node_modules/d3-interpolate/src/transform/parse.js","./node_modules/d3/node_modules/d3-interpolate/src/transform/index.js","./node_modules/d3/node_modules/d3-transition/src/transition/tween.js","./node_modules/d3/node_modules/d3-color/src/define.js","./node_modules/d3/node_modules/d3-color/src/color.js","./node_modules/d3/node_modules/d3-interpolate/src/basis.js","./node_modules/d3/node_modules/d3-interpolate/src/constant.js","./node_modules/d3/node_modules/d3-interpolate/src/color.js","./node_modules/d3/node_modules/d3-interpolate/src/rgb.js","./node_modules/d3/node_modules/d3-interpolate/src/basisClosed.js","./node_modules/d3/node_modules/d3-interpolate/src/string.js","./node_modules/d3/node_modules/d3-transition/src/transition/interpolate.js","./node_modules/d3/node_modules/d3-transition/src/transition/attr.js","./node_modules/d3/node_modules/d3-transition/src/transition/attrTween.js","./node_modules/d3/node_modules/d3-transition/src/transition/delay.js","./node_modules/d3/node_modules/d3-transition/src/transition/duration.js","./node_modules/d3/node_modules/d3-transition/src/transition/ease.js","./node_modules/d3/node_modules/d3-transition/src/transition/on.js","./node_modules/d3/node_modules/d3-transition/src/transition/selection.js","./node_modules/d3/node_modules/d3-transition/src/transition/style.js","./node_modules/d3/node_modules/d3-transition/src/transition/styleTween.js","./node_modules/d3/node_modules/d3-transition/src/transition/textTween.js","./node_modules/d3/node_modules/d3-transition/src/transition/index.js","./node_modules/d3/node_modules/d3-transition/src/transition/select.js","./node_modules/d3/node_modules/d3-transition/src/transition/selectAll.js","./node_modules/d3/node_modules/d3-transition/src/transition/filter.js","./node_modules/d3/node_modules/d3-transition/src/transition/merge.js","./node_modules/d3/node_modules/d3-transition/src/transition/transition.js","./node_modules/d3/node_modules/d3-transition/src/transition/text.js","./node_modules/d3/node_modules/d3-transition/src/transition/remove.js","./node_modules/d3/node_modules/d3-transition/src/transition/easeVarying.js","./node_modules/d3/node_modules/d3-transition/src/transition/end.js","./node_modules/d3/node_modules/d3-transition/src/selection/transition.js","./node_modules/d3/node_modules/d3-ease/src/cubic.js","./node_modules/d3/node_modules/d3-brush/src/brush.js","./node_modules/d3/node_modules/d3-selection/src/select.js","./node_modules/d3/node_modules/d3-zoom/src/transform.js","./node_modules/d3/node_modules/d3-transition/src/selection/index.js","./node_modules/d3/node_modules/d3-transition/src/selection/interrupt.js","./node_modules/d3/node_modules/d3-transition/src/interrupt.js","./src/app/ventilis-diag/components/resultat-chart/ventilis-diag-result-chart.component.ts","./src/app/ventilis-diag/components/resultat-chart/ventilis-diag-result-chart.component.html","./src/app/ventilis-diag/components/resultat-qui/resultat-qui.component.ts","./src/app/ventilis-diag/components/resultat-qui/resultat-qui.component.html","./src/app/ventilis-diag/components/resultat-installation/resultat-installation.component.html","./src/app/ventilis-diag/components/resultat-installation/resultat-installation.component.ts","./src/app/ventilis-diag/components/resultat-grandeurs/resultat-grandeurs.component.html","./src/app/ventilis-diag/components/resultat-grandeurs/resultat-grandeurs.component.ts","./src/app/ventilis-diag/ventilis-diag-resultat/ventilis-diag-resultat.component.html","./src/app/ventilis-diag/ventilis-diag-resultat/ventilis-diag-resultat.component.ts","./src/app/ventilis-diag/ventilis-diag-main/ventilis-diag-main.component.ts","./src/app/ventilis-diag/ventilis-diag-main/ventilis-diag-main.component.html","./src/app/core/can-deactivate/can-deactivate.guard.ts","./src/app/shared/services/auth.guard.ts","./src/app/ventilis-diag/ventilis-diag-routing.module.ts","./src/app/ventilis-diag/ventilis-diag.module.ts","./src/app/app.module.ts","./src/main.ts","./node_modules/@babel/runtime/regenerator/index.js","./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","./node_modules/@babel/runtime/helpers/esm/createClass.js","./node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","./node_modules/@babel/runtime/helpers/esm/typeof.js","./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","./node_modules/@babel/runtime/helpers/esm/createSuper.js","./node_modules/@babel/runtime/helpers/esm/defineProperty.js","./node_modules/@babel/runtime/helpers/esm/get.js","./node_modules/@babel/runtime/helpers/esm/superPropBase.js","./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","./node_modules/@babel/runtime/helpers/esm/inherits.js","./node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js"],"sourcesContent":["function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = 98255;\nmodule.exports = webpackEmptyAsyncContext;","/**\n * @license Angular v12.2.15\n * (c) 2010-2021 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport { InjectionToken, ɵɵdefineInjectable, Injectable, ɵɵinject, Inject, Optional, EventEmitter, ɵfindLocaleData, ɵLocaleDataIndex, ɵgetLocaleCurrencyCode, ɵgetLocalePluralCase, LOCALE_ID, ɵregisterLocaleData, ɵisListLikeIterable, ɵstringify, Directive, IterableDiffers, KeyValueDiffers, ElementRef, Renderer2, Input, NgModuleRef, ComponentFactoryResolver, ViewContainerRef, TemplateRef, Host, ɵRuntimeError, Attribute, ɵisPromise, ɵisSubscribable, Pipe, ChangeDetectorRef, DEFAULT_CURRENCY_CODE, NgModule, Version } from '@angular/core';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport * as ɵngcc0 from '@angular/core';\nlet _DOM = null;\nfunction getDOM() {\n return _DOM;\n}\nfunction setDOM(adapter) {\n _DOM = adapter;\n}\nfunction setRootDomAdapter(adapter) {\n if (!_DOM) {\n _DOM = adapter;\n }\n}\n/* tslint:disable:requireParameterType */\n/**\n * Provides DOM operations in an environment-agnostic way.\n *\n * @security Tread carefully! Interacting with the DOM directly is dangerous and\n * can introduce XSS risks.\n */\nclass DomAdapter {\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A DI Token representing the main rendering context. In a browser this is the DOM Document.\n *\n * Note: Document might not be available in the Application Context when Application and Rendering\n * Contexts are not the same (e.g. when running the application in a Web Worker).\n *\n * @publicApi\n */\nconst DOCUMENT = new InjectionToken('DocumentToken');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * This class should not be used directly by an application developer. Instead, use\n * {@link Location}.\n *\n * `PlatformLocation` encapsulates all calls to DOM APIs, which allows the Router to be\n * platform-agnostic.\n * This means that we can have different implementation of `PlatformLocation` for the different\n * platforms that Angular supports. For example, `@angular/platform-browser` provides an\n * implementation specific to the browser environment, while `@angular/platform-server` provides\n * one suitable for use with server-side rendering.\n *\n * The `PlatformLocation` class is used directly by all implementations of {@link LocationStrategy}\n * when they need to interact with the DOM APIs like pushState, popState, etc.\n *\n * {@link LocationStrategy} in turn is used by the {@link Location} service which is used directly\n * by the {@link Router} in order to navigate between routes. Since all interactions between {@link\n * Router} /\n * {@link Location} / {@link LocationStrategy} and DOM APIs flow through the `PlatformLocation`\n * class, they are all platform-agnostic.\n *\n * @publicApi\n */\nclass PlatformLocation {\n historyGo(relativePosition) {\n throw new Error('Not implemented');\n }\n}\nPlatformLocation.ɵfac = function PlatformLocation_Factory(t) { return new (t || PlatformLocation)(); };\nPlatformLocation.ɵprov = ɵɵdefineInjectable({ factory: useBrowserPlatformLocation, token: PlatformLocation, providedIn: \"platform\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PlatformLocation, [{\n type: Injectable,\n args: [{\n providedIn: 'platform',\n // See #23917\n useFactory: useBrowserPlatformLocation\n }]\n }], null, null); })();\nfunction useBrowserPlatformLocation() {\n return ɵɵinject(BrowserPlatformLocation);\n}\n/**\n * @description\n * Indicates when a location is initialized.\n *\n * @publicApi\n */\nconst LOCATION_INITIALIZED = new InjectionToken('Location Initialized');\n/**\n * `PlatformLocation` encapsulates all of the direct calls to platform APIs.\n * This class should not be used directly by an application developer. Instead, use\n * {@link Location}.\n */\nclass BrowserPlatformLocation extends PlatformLocation {\n constructor(_doc) {\n super();\n this._doc = _doc;\n this._init();\n }\n // This is moved to its own method so that `MockPlatformLocationStrategy` can overwrite it\n /** @internal */\n _init() {\n this.location = window.location;\n this._history = window.history;\n }\n getBaseHrefFromDOM() {\n return getDOM().getBaseHref(this._doc);\n }\n onPopState(fn) {\n const window = getDOM().getGlobalEventTarget(this._doc, 'window');\n window.addEventListener('popstate', fn, false);\n return () => window.removeEventListener('popstate', fn);\n }\n onHashChange(fn) {\n const window = getDOM().getGlobalEventTarget(this._doc, 'window');\n window.addEventListener('hashchange', fn, false);\n return () => window.removeEventListener('hashchange', fn);\n }\n get href() {\n return this.location.href;\n }\n get protocol() {\n return this.location.protocol;\n }\n get hostname() {\n return this.location.hostname;\n }\n get port() {\n return this.location.port;\n }\n get pathname() {\n return this.location.pathname;\n }\n get search() {\n return this.location.search;\n }\n get hash() {\n return this.location.hash;\n }\n set pathname(newPath) {\n this.location.pathname = newPath;\n }\n pushState(state, title, url) {\n if (supportsState()) {\n this._history.pushState(state, title, url);\n }\n else {\n this.location.hash = url;\n }\n }\n replaceState(state, title, url) {\n if (supportsState()) {\n this._history.replaceState(state, title, url);\n }\n else {\n this.location.hash = url;\n }\n }\n forward() {\n this._history.forward();\n }\n back() {\n this._history.back();\n }\n historyGo(relativePosition = 0) {\n this._history.go(relativePosition);\n }\n getState() {\n return this._history.state;\n }\n}\nBrowserPlatformLocation.ɵfac = function BrowserPlatformLocation_Factory(t) { return new (t || BrowserPlatformLocation)(ɵngcc0.ɵɵinject(DOCUMENT)); };\nBrowserPlatformLocation.ɵprov = ɵɵdefineInjectable({ factory: createBrowserPlatformLocation, token: BrowserPlatformLocation, providedIn: \"platform\" });\nBrowserPlatformLocation.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BrowserPlatformLocation, [{\n type: Injectable,\n args: [{\n providedIn: 'platform',\n // See #23917\n useFactory: createBrowserPlatformLocation\n }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, null); })();\nfunction supportsState() {\n return !!window.history.pushState;\n}\nfunction createBrowserPlatformLocation() {\n return new BrowserPlatformLocation(ɵɵinject(DOCUMENT));\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Joins two parts of a URL with a slash if needed.\n *\n * @param start URL string\n * @param end URL string\n *\n *\n * @returns The joined URL string.\n */\nfunction joinWithSlash(start, end) {\n if (start.length == 0) {\n return end;\n }\n if (end.length == 0) {\n return start;\n }\n let slashes = 0;\n if (start.endsWith('/')) {\n slashes++;\n }\n if (end.startsWith('/')) {\n slashes++;\n }\n if (slashes == 2) {\n return start + end.substring(1);\n }\n if (slashes == 1) {\n return start + end;\n }\n return start + '/' + end;\n}\n/**\n * Removes a trailing slash from a URL string if needed.\n * Looks for the first occurrence of either `#`, `?`, or the end of the\n * line as `/` characters and removes the trailing slash if one exists.\n *\n * @param url URL string.\n *\n * @returns The URL string, modified if needed.\n */\nfunction stripTrailingSlash(url) {\n const match = url.match(/#|\\?|$/);\n const pathEndIdx = match && match.index || url.length;\n const droppedSlashIdx = pathEndIdx - (url[pathEndIdx - 1] === '/' ? 1 : 0);\n return url.slice(0, droppedSlashIdx) + url.slice(pathEndIdx);\n}\n/**\n * Normalizes URL parameters by prepending with `?` if needed.\n *\n * @param params String of URL parameters.\n *\n * @returns The normalized URL parameters string.\n */\nfunction normalizeQueryParams(params) {\n return params && params[0] !== '?' ? '?' + params : params;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Enables the `Location` service to read route state from the browser's URL.\n * Angular provides two strategies:\n * `HashLocationStrategy` and `PathLocationStrategy`.\n *\n * Applications should use the `Router` or `Location` services to\n * interact with application route state.\n *\n * For instance, `HashLocationStrategy` produces URLs like\n * http://example.com#/foo,\n * and `PathLocationStrategy` produces\n * http://example.com/foo as an equivalent URL.\n *\n * See these two classes for more.\n *\n * @publicApi\n */\nclass LocationStrategy {\n historyGo(relativePosition) {\n throw new Error('Not implemented');\n }\n}\nLocationStrategy.ɵfac = function LocationStrategy_Factory(t) { return new (t || LocationStrategy)(); };\nLocationStrategy.ɵprov = ɵɵdefineInjectable({ factory: provideLocationStrategy, token: LocationStrategy, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LocationStrategy, [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: provideLocationStrategy }]\n }], null, null); })();\nfunction provideLocationStrategy(platformLocation) {\n // See #23917\n const location = ɵɵinject(DOCUMENT).location;\n return new PathLocationStrategy(ɵɵinject(PlatformLocation), location && location.origin || '');\n}\n/**\n * A predefined [DI token](guide/glossary#di-token) for the base href\n * to be used with the `PathLocationStrategy`.\n * The base href is the URL prefix that should be preserved when generating\n * and recognizing URLs.\n *\n * @usageNotes\n *\n * The following example shows how to use this token to configure the root app injector\n * with a base href value, so that the DI framework can supply the dependency anywhere in the app.\n *\n * ```typescript\n * import {Component, NgModule} from '@angular/core';\n * import {APP_BASE_HREF} from '@angular/common';\n *\n * @NgModule({\n * providers: [{provide: APP_BASE_HREF, useValue: '/my/app'}]\n * })\n * class AppModule {}\n * ```\n *\n * @publicApi\n */\nconst APP_BASE_HREF = new InjectionToken('appBaseHref');\n/**\n * @description\n * A {@link LocationStrategy} used to configure the {@link Location} service to\n * represent its state in the\n * [path](https://en.wikipedia.org/wiki/Uniform_Resource_Locator#Syntax) of the\n * browser's URL.\n *\n * If you're using `PathLocationStrategy`, you must provide a {@link APP_BASE_HREF}\n * or add a `` element to the document.\n *\n * For instance, if you provide an `APP_BASE_HREF` of `'/my/app/'` and call\n * `location.go('/foo')`, the browser's URL will become\n * `example.com/my/app/foo`. To ensure all relative URIs resolve correctly,\n * the `` and/or `APP_BASE_HREF` should end with a `/`.\n *\n * Similarly, if you add `` to the document and call\n * `location.go('/foo')`, the browser's URL will become\n * `example.com/my/app/foo`.\n *\n * Note that when using `PathLocationStrategy`, neither the query nor\n * the fragment in the `` will be preserved, as outlined\n * by the [RFC](https://tools.ietf.org/html/rfc3986#section-5.2.2).\n *\n * @usageNotes\n *\n * ### Example\n *\n * {@example common/location/ts/path_location_component.ts region='LocationComponent'}\n *\n * @publicApi\n */\nclass PathLocationStrategy extends LocationStrategy {\n constructor(_platformLocation, href) {\n super();\n this._platformLocation = _platformLocation;\n this._removeListenerFns = [];\n if (href == null) {\n href = this._platformLocation.getBaseHrefFromDOM();\n }\n if (href == null) {\n throw new Error(`No base href set. Please provide a value for the APP_BASE_HREF token or add a base element to the document.`);\n }\n this._baseHref = href;\n }\n ngOnDestroy() {\n while (this._removeListenerFns.length) {\n this._removeListenerFns.pop()();\n }\n }\n onPopState(fn) {\n this._removeListenerFns.push(this._platformLocation.onPopState(fn), this._platformLocation.onHashChange(fn));\n }\n getBaseHref() {\n return this._baseHref;\n }\n prepareExternalUrl(internal) {\n return joinWithSlash(this._baseHref, internal);\n }\n path(includeHash = false) {\n const pathname = this._platformLocation.pathname + normalizeQueryParams(this._platformLocation.search);\n const hash = this._platformLocation.hash;\n return hash && includeHash ? `${pathname}${hash}` : pathname;\n }\n pushState(state, title, url, queryParams) {\n const externalUrl = this.prepareExternalUrl(url + normalizeQueryParams(queryParams));\n this._platformLocation.pushState(state, title, externalUrl);\n }\n replaceState(state, title, url, queryParams) {\n const externalUrl = this.prepareExternalUrl(url + normalizeQueryParams(queryParams));\n this._platformLocation.replaceState(state, title, externalUrl);\n }\n forward() {\n this._platformLocation.forward();\n }\n back() {\n this._platformLocation.back();\n }\n historyGo(relativePosition = 0) {\n var _a, _b;\n (_b = (_a = this._platformLocation).historyGo) === null || _b === void 0 ? void 0 : _b.call(_a, relativePosition);\n }\n}\nPathLocationStrategy.ɵfac = function PathLocationStrategy_Factory(t) { return new (t || PathLocationStrategy)(ɵngcc0.ɵɵinject(PlatformLocation), ɵngcc0.ɵɵinject(APP_BASE_HREF, 8)); };\nPathLocationStrategy.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: PathLocationStrategy, factory: PathLocationStrategy.ɵfac });\nPathLocationStrategy.ctorParameters = () => [\n { type: PlatformLocation },\n { type: String, decorators: [{ type: Optional }, { type: Inject, args: [APP_BASE_HREF,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PathLocationStrategy, [{\n type: Injectable\n }], function () { return [{ type: PlatformLocation }, { type: String, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [APP_BASE_HREF]\n }] }]; }, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @description\n * A {@link LocationStrategy} used to configure the {@link Location} service to\n * represent its state in the\n * [hash fragment](https://en.wikipedia.org/wiki/Uniform_Resource_Locator#Syntax)\n * of the browser's URL.\n *\n * For instance, if you call `location.go('/foo')`, the browser's URL will become\n * `example.com#/foo`.\n *\n * @usageNotes\n *\n * ### Example\n *\n * {@example common/location/ts/hash_location_component.ts region='LocationComponent'}\n *\n * @publicApi\n */\nclass HashLocationStrategy extends LocationStrategy {\n constructor(_platformLocation, _baseHref) {\n super();\n this._platformLocation = _platformLocation;\n this._baseHref = '';\n this._removeListenerFns = [];\n if (_baseHref != null) {\n this._baseHref = _baseHref;\n }\n }\n ngOnDestroy() {\n while (this._removeListenerFns.length) {\n this._removeListenerFns.pop()();\n }\n }\n onPopState(fn) {\n this._removeListenerFns.push(this._platformLocation.onPopState(fn), this._platformLocation.onHashChange(fn));\n }\n getBaseHref() {\n return this._baseHref;\n }\n path(includeHash = false) {\n // the hash value is always prefixed with a `#`\n // and if it is empty then it will stay empty\n let path = this._platformLocation.hash;\n if (path == null)\n path = '#';\n return path.length > 0 ? path.substring(1) : path;\n }\n prepareExternalUrl(internal) {\n const url = joinWithSlash(this._baseHref, internal);\n return url.length > 0 ? ('#' + url) : url;\n }\n pushState(state, title, path, queryParams) {\n let url = this.prepareExternalUrl(path + normalizeQueryParams(queryParams));\n if (url.length == 0) {\n url = this._platformLocation.pathname;\n }\n this._platformLocation.pushState(state, title, url);\n }\n replaceState(state, title, path, queryParams) {\n let url = this.prepareExternalUrl(path + normalizeQueryParams(queryParams));\n if (url.length == 0) {\n url = this._platformLocation.pathname;\n }\n this._platformLocation.replaceState(state, title, url);\n }\n forward() {\n this._platformLocation.forward();\n }\n back() {\n this._platformLocation.back();\n }\n historyGo(relativePosition = 0) {\n var _a, _b;\n (_b = (_a = this._platformLocation).historyGo) === null || _b === void 0 ? void 0 : _b.call(_a, relativePosition);\n }\n}\nHashLocationStrategy.ɵfac = function HashLocationStrategy_Factory(t) { return new (t || HashLocationStrategy)(ɵngcc0.ɵɵinject(PlatformLocation), ɵngcc0.ɵɵinject(APP_BASE_HREF, 8)); };\nHashLocationStrategy.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: HashLocationStrategy, factory: HashLocationStrategy.ɵfac });\nHashLocationStrategy.ctorParameters = () => [\n { type: PlatformLocation },\n { type: String, decorators: [{ type: Optional }, { type: Inject, args: [APP_BASE_HREF,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(HashLocationStrategy, [{\n type: Injectable\n }], function () { return [{ type: PlatformLocation }, { type: String, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [APP_BASE_HREF]\n }] }]; }, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @description\n *\n * A service that applications can use to interact with a browser's URL.\n *\n * Depending on the `LocationStrategy` used, `Location` persists\n * to the URL's path or the URL's hash segment.\n *\n * @usageNotes\n *\n * It's better to use the `Router.navigate()` service to trigger route changes. Use\n * `Location` only if you need to interact with or create normalized URLs outside of\n * routing.\n *\n * `Location` is responsible for normalizing the URL against the application's base href.\n * A normalized URL is absolute from the URL host, includes the application's base href, and has no\n * trailing slash:\n * - `/my/app/user/123` is normalized\n * - `my/app/user/123` **is not** normalized\n * - `/my/app/user/123/` **is not** normalized\n *\n * ### Example\n *\n * \n *\n * @publicApi\n */\nclass Location {\n constructor(platformStrategy, platformLocation) {\n /** @internal */\n this._subject = new EventEmitter();\n /** @internal */\n this._urlChangeListeners = [];\n this._platformStrategy = platformStrategy;\n const browserBaseHref = this._platformStrategy.getBaseHref();\n this._platformLocation = platformLocation;\n this._baseHref = stripTrailingSlash(_stripIndexHtml(browserBaseHref));\n this._platformStrategy.onPopState((ev) => {\n this._subject.emit({\n 'url': this.path(true),\n 'pop': true,\n 'state': ev.state,\n 'type': ev.type,\n });\n });\n }\n /**\n * Normalizes the URL path for this location.\n *\n * @param includeHash True to include an anchor fragment in the path.\n *\n * @returns The normalized URL path.\n */\n // TODO: vsavkin. Remove the boolean flag and always include hash once the deprecated router is\n // removed.\n path(includeHash = false) {\n return this.normalize(this._platformStrategy.path(includeHash));\n }\n /**\n * Reports the current state of the location history.\n * @returns The current value of the `history.state` object.\n */\n getState() {\n return this._platformLocation.getState();\n }\n /**\n * Normalizes the given path and compares to the current normalized path.\n *\n * @param path The given URL path.\n * @param query Query parameters.\n *\n * @returns True if the given URL path is equal to the current normalized path, false\n * otherwise.\n */\n isCurrentPathEqualTo(path, query = '') {\n return this.path() == this.normalize(path + normalizeQueryParams(query));\n }\n /**\n * Normalizes a URL path by stripping any trailing slashes.\n *\n * @param url String representing a URL.\n *\n * @returns The normalized URL string.\n */\n normalize(url) {\n return Location.stripTrailingSlash(_stripBaseHref(this._baseHref, _stripIndexHtml(url)));\n }\n /**\n * Normalizes an external URL path.\n * If the given URL doesn't begin with a leading slash (`'/'`), adds one\n * before normalizing. Adds a hash if `HashLocationStrategy` is\n * in use, or the `APP_BASE_HREF` if the `PathLocationStrategy` is in use.\n *\n * @param url String representing a URL.\n *\n * @returns A normalized platform-specific URL.\n */\n prepareExternalUrl(url) {\n if (url && url[0] !== '/') {\n url = '/' + url;\n }\n return this._platformStrategy.prepareExternalUrl(url);\n }\n // TODO: rename this method to pushState\n /**\n * Changes the browser's URL to a normalized version of a given URL, and pushes a\n * new item onto the platform's history.\n *\n * @param path URL path to normalize.\n * @param query Query parameters.\n * @param state Location history state.\n *\n */\n go(path, query = '', state = null) {\n this._platformStrategy.pushState(state, '', path, query);\n this._notifyUrlChangeListeners(this.prepareExternalUrl(path + normalizeQueryParams(query)), state);\n }\n /**\n * Changes the browser's URL to a normalized version of the given URL, and replaces\n * the top item on the platform's history stack.\n *\n * @param path URL path to normalize.\n * @param query Query parameters.\n * @param state Location history state.\n */\n replaceState(path, query = '', state = null) {\n this._platformStrategy.replaceState(state, '', path, query);\n this._notifyUrlChangeListeners(this.prepareExternalUrl(path + normalizeQueryParams(query)), state);\n }\n /**\n * Navigates forward in the platform's history.\n */\n forward() {\n this._platformStrategy.forward();\n }\n /**\n * Navigates back in the platform's history.\n */\n back() {\n this._platformStrategy.back();\n }\n /**\n * Navigate to a specific page from session history, identified by its relative position to the\n * current page.\n *\n * @param relativePosition Position of the target page in the history relative to the current\n * page.\n * A negative value moves backwards, a positive value moves forwards, e.g. `location.historyGo(2)`\n * moves forward two pages and `location.historyGo(-2)` moves back two pages. When we try to go\n * beyond what's stored in the history session, we stay in the current page. Same behaviour occurs\n * when `relativePosition` equals 0.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/History_API#Moving_to_a_specific_point_in_history\n */\n historyGo(relativePosition = 0) {\n var _a, _b;\n (_b = (_a = this._platformStrategy).historyGo) === null || _b === void 0 ? void 0 : _b.call(_a, relativePosition);\n }\n /**\n * Registers a URL change listener. Use to catch updates performed by the Angular\n * framework that are not detectible through \"popstate\" or \"hashchange\" events.\n *\n * @param fn The change handler function, which take a URL and a location history state.\n */\n onUrlChange(fn) {\n this._urlChangeListeners.push(fn);\n if (!this._urlChangeSubscription) {\n this._urlChangeSubscription = this.subscribe(v => {\n this._notifyUrlChangeListeners(v.url, v.state);\n });\n }\n }\n /** @internal */\n _notifyUrlChangeListeners(url = '', state) {\n this._urlChangeListeners.forEach(fn => fn(url, state));\n }\n /**\n * Subscribes to the platform's `popState` events.\n *\n * Note: `Location.go()` does not trigger the `popState` event in the browser. Use\n * `Location.onUrlChange()` to subscribe to URL changes instead.\n *\n * @param value Event that is triggered when the state history changes.\n * @param exception The exception to throw.\n *\n * @see [onpopstate](https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onpopstate)\n *\n * @returns Subscribed events.\n */\n subscribe(onNext, onThrow, onReturn) {\n return this._subject.subscribe({ next: onNext, error: onThrow, complete: onReturn });\n }\n}\nLocation.ɵfac = function Location_Factory(t) { return new (t || Location)(ɵngcc0.ɵɵinject(LocationStrategy), ɵngcc0.ɵɵinject(PlatformLocation)); };\n/**\n * Normalizes URL parameters by prepending with `?` if needed.\n *\n * @param params String of URL parameters.\n *\n * @returns The normalized URL parameters string.\n */\nLocation.normalizeQueryParams = normalizeQueryParams;\n/**\n * Joins two parts of a URL with a slash if needed.\n *\n * @param start URL string\n * @param end URL string\n *\n *\n * @returns The joined URL string.\n */\nLocation.joinWithSlash = joinWithSlash;\n/**\n * Removes a trailing slash from a URL string if needed.\n * Looks for the first occurrence of either `#`, `?`, or the end of the\n * line as `/` characters and removes the trailing slash if one exists.\n *\n * @param url URL string.\n *\n * @returns The URL string, modified if needed.\n */\nLocation.stripTrailingSlash = stripTrailingSlash;\nLocation.ɵprov = ɵɵdefineInjectable({ factory: createLocation, token: Location, providedIn: \"root\" });\nLocation.ctorParameters = () => [\n { type: LocationStrategy },\n { type: PlatformLocation }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(Location, [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n // See #23917\n useFactory: createLocation\n }]\n }], function () { return [{ type: LocationStrategy }, { type: PlatformLocation }]; }, null); })();\nfunction createLocation() {\n return new Location(ɵɵinject(LocationStrategy), ɵɵinject(PlatformLocation));\n}\nfunction _stripBaseHref(baseHref, url) {\n return baseHref && url.startsWith(baseHref) ? url.substring(baseHref.length) : url;\n}\nfunction _stripIndexHtml(url) {\n return url.replace(/\\/index.html$/, '');\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** @internal */\nconst CURRENCIES_EN = { \"ADP\": [undefined, undefined, 0], \"AFN\": [undefined, undefined, 0], \"ALL\": [undefined, undefined, 0], \"AMD\": [undefined, undefined, 2], \"AOA\": [undefined, \"Kz\"], \"ARS\": [undefined, \"$\"], \"AUD\": [\"A$\", \"$\"], \"BAM\": [undefined, \"KM\"], \"BBD\": [undefined, \"$\"], \"BDT\": [undefined, \"৳\"], \"BHD\": [undefined, undefined, 3], \"BIF\": [undefined, undefined, 0], \"BMD\": [undefined, \"$\"], \"BND\": [undefined, \"$\"], \"BOB\": [undefined, \"Bs\"], \"BRL\": [\"R$\"], \"BSD\": [undefined, \"$\"], \"BWP\": [undefined, \"P\"], \"BYN\": [undefined, \"р.\", 2], \"BYR\": [undefined, undefined, 0], \"BZD\": [undefined, \"$\"], \"CAD\": [\"CA$\", \"$\", 2], \"CHF\": [undefined, undefined, 2], \"CLF\": [undefined, undefined, 4], \"CLP\": [undefined, \"$\", 0], \"CNY\": [\"CN¥\", \"¥\"], \"COP\": [undefined, \"$\", 2], \"CRC\": [undefined, \"₡\", 2], \"CUC\": [undefined, \"$\"], \"CUP\": [undefined, \"$\"], \"CZK\": [undefined, \"Kč\", 2], \"DJF\": [undefined, undefined, 0], \"DKK\": [undefined, \"kr\", 2], \"DOP\": [undefined, \"$\"], \"EGP\": [undefined, \"E£\"], \"ESP\": [undefined, \"₧\", 0], \"EUR\": [\"€\"], \"FJD\": [undefined, \"$\"], \"FKP\": [undefined, \"£\"], \"GBP\": [\"£\"], \"GEL\": [undefined, \"₾\"], \"GIP\": [undefined, \"£\"], \"GNF\": [undefined, \"FG\", 0], \"GTQ\": [undefined, \"Q\"], \"GYD\": [undefined, \"$\", 2], \"HKD\": [\"HK$\", \"$\"], \"HNL\": [undefined, \"L\"], \"HRK\": [undefined, \"kn\"], \"HUF\": [undefined, \"Ft\", 2], \"IDR\": [undefined, \"Rp\", 2], \"ILS\": [\"₪\"], \"INR\": [\"₹\"], \"IQD\": [undefined, undefined, 0], \"IRR\": [undefined, undefined, 0], \"ISK\": [undefined, \"kr\", 0], \"ITL\": [undefined, undefined, 0], \"JMD\": [undefined, \"$\"], \"JOD\": [undefined, undefined, 3], \"JPY\": [\"¥\", undefined, 0], \"KHR\": [undefined, \"៛\"], \"KMF\": [undefined, \"CF\", 0], \"KPW\": [undefined, \"₩\", 0], \"KRW\": [\"₩\", undefined, 0], \"KWD\": [undefined, undefined, 3], \"KYD\": [undefined, \"$\"], \"KZT\": [undefined, \"₸\"], \"LAK\": [undefined, \"₭\", 0], \"LBP\": [undefined, \"L£\", 0], \"LKR\": [undefined, \"Rs\"], \"LRD\": [undefined, \"$\"], \"LTL\": [undefined, \"Lt\"], \"LUF\": [undefined, undefined, 0], \"LVL\": [undefined, \"Ls\"], \"LYD\": [undefined, undefined, 3], \"MGA\": [undefined, \"Ar\", 0], \"MGF\": [undefined, undefined, 0], \"MMK\": [undefined, \"K\", 0], \"MNT\": [undefined, \"₮\", 2], \"MRO\": [undefined, undefined, 0], \"MUR\": [undefined, \"Rs\", 2], \"MXN\": [\"MX$\", \"$\"], \"MYR\": [undefined, \"RM\"], \"NAD\": [undefined, \"$\"], \"NGN\": [undefined, \"₦\"], \"NIO\": [undefined, \"C$\"], \"NOK\": [undefined, \"kr\", 2], \"NPR\": [undefined, \"Rs\"], \"NZD\": [\"NZ$\", \"$\"], \"OMR\": [undefined, undefined, 3], \"PHP\": [undefined, \"₱\"], \"PKR\": [undefined, \"Rs\", 2], \"PLN\": [undefined, \"zł\"], \"PYG\": [undefined, \"₲\", 0], \"RON\": [undefined, \"lei\"], \"RSD\": [undefined, undefined, 0], \"RUB\": [undefined, \"₽\"], \"RUR\": [undefined, \"р.\"], \"RWF\": [undefined, \"RF\", 0], \"SBD\": [undefined, \"$\"], \"SEK\": [undefined, \"kr\", 2], \"SGD\": [undefined, \"$\"], \"SHP\": [undefined, \"£\"], \"SLL\": [undefined, undefined, 0], \"SOS\": [undefined, undefined, 0], \"SRD\": [undefined, \"$\"], \"SSP\": [undefined, \"£\"], \"STD\": [undefined, undefined, 0], \"STN\": [undefined, \"Db\"], \"SYP\": [undefined, \"£\", 0], \"THB\": [undefined, \"฿\"], \"TMM\": [undefined, undefined, 0], \"TND\": [undefined, undefined, 3], \"TOP\": [undefined, \"T$\"], \"TRL\": [undefined, undefined, 0], \"TRY\": [undefined, \"₺\"], \"TTD\": [undefined, \"$\"], \"TWD\": [\"NT$\", \"$\", 2], \"TZS\": [undefined, undefined, 2], \"UAH\": [undefined, \"₴\"], \"UGX\": [undefined, undefined, 0], \"USD\": [\"$\"], \"UYI\": [undefined, undefined, 0], \"UYU\": [undefined, \"$\"], \"UYW\": [undefined, undefined, 4], \"UZS\": [undefined, undefined, 2], \"VEF\": [undefined, \"Bs\", 2], \"VND\": [\"₫\", undefined, 0], \"VUV\": [undefined, undefined, 0], \"XAF\": [\"FCFA\", undefined, 0], \"XCD\": [\"EC$\", \"$\"], \"XOF\": [\"CFA\", undefined, 0], \"XPF\": [\"CFPF\", undefined, 0], \"XXX\": [\"¤\"], \"YER\": [undefined, undefined, 0], \"ZAR\": [undefined, \"R\"], \"ZMK\": [undefined, undefined, 0], \"ZMW\": [undefined, \"ZK\"], \"ZWD\": [undefined, undefined, 0] };\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Format styles that can be used to represent numbers.\n * @see `getLocaleNumberFormat()`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nvar NumberFormatStyle;\n(function (NumberFormatStyle) {\n NumberFormatStyle[NumberFormatStyle[\"Decimal\"] = 0] = \"Decimal\";\n NumberFormatStyle[NumberFormatStyle[\"Percent\"] = 1] = \"Percent\";\n NumberFormatStyle[NumberFormatStyle[\"Currency\"] = 2] = \"Currency\";\n NumberFormatStyle[NumberFormatStyle[\"Scientific\"] = 3] = \"Scientific\";\n})(NumberFormatStyle || (NumberFormatStyle = {}));\n/**\n * Plurality cases used for translating plurals to different languages.\n *\n * @see `NgPlural`\n * @see `NgPluralCase`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nvar Plural;\n(function (Plural) {\n Plural[Plural[\"Zero\"] = 0] = \"Zero\";\n Plural[Plural[\"One\"] = 1] = \"One\";\n Plural[Plural[\"Two\"] = 2] = \"Two\";\n Plural[Plural[\"Few\"] = 3] = \"Few\";\n Plural[Plural[\"Many\"] = 4] = \"Many\";\n Plural[Plural[\"Other\"] = 5] = \"Other\";\n})(Plural || (Plural = {}));\n/**\n * Context-dependant translation forms for strings.\n * Typically the standalone version is for the nominative form of the word,\n * and the format version is used for the genitive case.\n * @see [CLDR website](http://cldr.unicode.org/translation/date-time-1/date-time#TOC-Standalone-vs.-Format-Styles)\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nvar FormStyle;\n(function (FormStyle) {\n FormStyle[FormStyle[\"Format\"] = 0] = \"Format\";\n FormStyle[FormStyle[\"Standalone\"] = 1] = \"Standalone\";\n})(FormStyle || (FormStyle = {}));\n/**\n * String widths available for translations.\n * The specific character widths are locale-specific.\n * Examples are given for the word \"Sunday\" in English.\n *\n * @publicApi\n */\nvar TranslationWidth;\n(function (TranslationWidth) {\n /** 1 character for `en-US`. For example: 'S' */\n TranslationWidth[TranslationWidth[\"Narrow\"] = 0] = \"Narrow\";\n /** 3 characters for `en-US`. For example: 'Sun' */\n TranslationWidth[TranslationWidth[\"Abbreviated\"] = 1] = \"Abbreviated\";\n /** Full length for `en-US`. For example: \"Sunday\" */\n TranslationWidth[TranslationWidth[\"Wide\"] = 2] = \"Wide\";\n /** 2 characters for `en-US`, For example: \"Su\" */\n TranslationWidth[TranslationWidth[\"Short\"] = 3] = \"Short\";\n})(TranslationWidth || (TranslationWidth = {}));\n/**\n * String widths available for date-time formats.\n * The specific character widths are locale-specific.\n * Examples are given for `en-US`.\n *\n * @see `getLocaleDateFormat()`\n * @see `getLocaleTimeFormat()`\n * @see `getLocaleDateTimeFormat()`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n * @publicApi\n */\nvar FormatWidth;\n(function (FormatWidth) {\n /**\n * For `en-US`, 'M/d/yy, h:mm a'`\n * (Example: `6/15/15, 9:03 AM`)\n */\n FormatWidth[FormatWidth[\"Short\"] = 0] = \"Short\";\n /**\n * For `en-US`, `'MMM d, y, h:mm:ss a'`\n * (Example: `Jun 15, 2015, 9:03:01 AM`)\n */\n FormatWidth[FormatWidth[\"Medium\"] = 1] = \"Medium\";\n /**\n * For `en-US`, `'MMMM d, y, h:mm:ss a z'`\n * (Example: `June 15, 2015 at 9:03:01 AM GMT+1`)\n */\n FormatWidth[FormatWidth[\"Long\"] = 2] = \"Long\";\n /**\n * For `en-US`, `'EEEE, MMMM d, y, h:mm:ss a zzzz'`\n * (Example: `Monday, June 15, 2015 at 9:03:01 AM GMT+01:00`)\n */\n FormatWidth[FormatWidth[\"Full\"] = 3] = \"Full\";\n})(FormatWidth || (FormatWidth = {}));\n/**\n * Symbols that can be used to replace placeholders in number patterns.\n * Examples are based on `en-US` values.\n *\n * @see `getLocaleNumberSymbol()`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nvar NumberSymbol;\n(function (NumberSymbol) {\n /**\n * Decimal separator.\n * For `en-US`, the dot character.\n * Example: 2,345`.`67\n */\n NumberSymbol[NumberSymbol[\"Decimal\"] = 0] = \"Decimal\";\n /**\n * Grouping separator, typically for thousands.\n * For `en-US`, the comma character.\n * Example: 2`,`345.67\n */\n NumberSymbol[NumberSymbol[\"Group\"] = 1] = \"Group\";\n /**\n * List-item separator.\n * Example: \"one, two, and three\"\n */\n NumberSymbol[NumberSymbol[\"List\"] = 2] = \"List\";\n /**\n * Sign for percentage (out of 100).\n * Example: 23.4%\n */\n NumberSymbol[NumberSymbol[\"PercentSign\"] = 3] = \"PercentSign\";\n /**\n * Sign for positive numbers.\n * Example: +23\n */\n NumberSymbol[NumberSymbol[\"PlusSign\"] = 4] = \"PlusSign\";\n /**\n * Sign for negative numbers.\n * Example: -23\n */\n NumberSymbol[NumberSymbol[\"MinusSign\"] = 5] = \"MinusSign\";\n /**\n * Computer notation for exponential value (n times a power of 10).\n * Example: 1.2E3\n */\n NumberSymbol[NumberSymbol[\"Exponential\"] = 6] = \"Exponential\";\n /**\n * Human-readable format of exponential.\n * Example: 1.2x103\n */\n NumberSymbol[NumberSymbol[\"SuperscriptingExponent\"] = 7] = \"SuperscriptingExponent\";\n /**\n * Sign for permille (out of 1000).\n * Example: 23.4‰\n */\n NumberSymbol[NumberSymbol[\"PerMille\"] = 8] = \"PerMille\";\n /**\n * Infinity, can be used with plus and minus.\n * Example: ∞, +∞, -∞\n */\n NumberSymbol[NumberSymbol[\"Infinity\"] = 9] = \"Infinity\";\n /**\n * Not a number.\n * Example: NaN\n */\n NumberSymbol[NumberSymbol[\"NaN\"] = 10] = \"NaN\";\n /**\n * Symbol used between time units.\n * Example: 10:52\n */\n NumberSymbol[NumberSymbol[\"TimeSeparator\"] = 11] = \"TimeSeparator\";\n /**\n * Decimal separator for currency values (fallback to `Decimal`).\n * Example: $2,345.67\n */\n NumberSymbol[NumberSymbol[\"CurrencyDecimal\"] = 12] = \"CurrencyDecimal\";\n /**\n * Group separator for currency values (fallback to `Group`).\n * Example: $2,345.67\n */\n NumberSymbol[NumberSymbol[\"CurrencyGroup\"] = 13] = \"CurrencyGroup\";\n})(NumberSymbol || (NumberSymbol = {}));\n/**\n * The value for each day of the week, based on the `en-US` locale\n *\n * @publicApi\n */\nvar WeekDay;\n(function (WeekDay) {\n WeekDay[WeekDay[\"Sunday\"] = 0] = \"Sunday\";\n WeekDay[WeekDay[\"Monday\"] = 1] = \"Monday\";\n WeekDay[WeekDay[\"Tuesday\"] = 2] = \"Tuesday\";\n WeekDay[WeekDay[\"Wednesday\"] = 3] = \"Wednesday\";\n WeekDay[WeekDay[\"Thursday\"] = 4] = \"Thursday\";\n WeekDay[WeekDay[\"Friday\"] = 5] = \"Friday\";\n WeekDay[WeekDay[\"Saturday\"] = 6] = \"Saturday\";\n})(WeekDay || (WeekDay = {}));\n/**\n * Retrieves the locale ID from the currently loaded locale.\n * The loaded locale could be, for example, a global one rather than a regional one.\n * @param locale A locale code, such as `fr-FR`.\n * @returns The locale code. For example, `fr`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleId(locale) {\n return ɵfindLocaleData(locale)[ɵLocaleDataIndex.LocaleId];\n}\n/**\n * Retrieves day period strings for the given locale.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param formStyle The required grammatical form.\n * @param width The required character width.\n * @returns An array of localized period strings. For example, `[AM, PM]` for `en-US`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleDayPeriods(locale, formStyle, width) {\n const data = ɵfindLocaleData(locale);\n const amPmData = [\n data[ɵLocaleDataIndex.DayPeriodsFormat], data[ɵLocaleDataIndex.DayPeriodsStandalone]\n ];\n const amPm = getLastDefinedValue(amPmData, formStyle);\n return getLastDefinedValue(amPm, width);\n}\n/**\n * Retrieves days of the week for the given locale, using the Gregorian calendar.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param formStyle The required grammatical form.\n * @param width The required character width.\n * @returns An array of localized name strings.\n * For example,`[Sunday, Monday, ... Saturday]` for `en-US`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleDayNames(locale, formStyle, width) {\n const data = ɵfindLocaleData(locale);\n const daysData = [data[ɵLocaleDataIndex.DaysFormat], data[ɵLocaleDataIndex.DaysStandalone]];\n const days = getLastDefinedValue(daysData, formStyle);\n return getLastDefinedValue(days, width);\n}\n/**\n * Retrieves months of the year for the given locale, using the Gregorian calendar.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param formStyle The required grammatical form.\n * @param width The required character width.\n * @returns An array of localized name strings.\n * For example, `[January, February, ...]` for `en-US`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleMonthNames(locale, formStyle, width) {\n const data = ɵfindLocaleData(locale);\n const monthsData = [data[ɵLocaleDataIndex.MonthsFormat], data[ɵLocaleDataIndex.MonthsStandalone]];\n const months = getLastDefinedValue(monthsData, formStyle);\n return getLastDefinedValue(months, width);\n}\n/**\n * Retrieves Gregorian-calendar eras for the given locale.\n * @param locale A locale code for the locale format rules to use.\n * @param width The required character width.\n\n * @returns An array of localized era strings.\n * For example, `[AD, BC]` for `en-US`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleEraNames(locale, width) {\n const data = ɵfindLocaleData(locale);\n const erasData = data[ɵLocaleDataIndex.Eras];\n return getLastDefinedValue(erasData, width);\n}\n/**\n * Retrieves the first day of the week for the given locale.\n *\n * @param locale A locale code for the locale format rules to use.\n * @returns A day index number, using the 0-based week-day index for `en-US`\n * (Sunday = 0, Monday = 1, ...).\n * For example, for `fr-FR`, returns 1 to indicate that the first day is Monday.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleFirstDayOfWeek(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.FirstDayOfWeek];\n}\n/**\n * Range of week days that are considered the week-end for the given locale.\n *\n * @param locale A locale code for the locale format rules to use.\n * @returns The range of day values, `[startDay, endDay]`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleWeekEndRange(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.WeekendRange];\n}\n/**\n * Retrieves a localized date-value formating string.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param width The format type.\n * @returns The localized formating string.\n * @see `FormatWidth`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleDateFormat(locale, width) {\n const data = ɵfindLocaleData(locale);\n return getLastDefinedValue(data[ɵLocaleDataIndex.DateFormat], width);\n}\n/**\n * Retrieves a localized time-value formatting string.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param width The format type.\n * @returns The localized formatting string.\n * @see `FormatWidth`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n\n * @publicApi\n */\nfunction getLocaleTimeFormat(locale, width) {\n const data = ɵfindLocaleData(locale);\n return getLastDefinedValue(data[ɵLocaleDataIndex.TimeFormat], width);\n}\n/**\n * Retrieves a localized date-time formatting string.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param width The format type.\n * @returns The localized formatting string.\n * @see `FormatWidth`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleDateTimeFormat(locale, width) {\n const data = ɵfindLocaleData(locale);\n const dateTimeFormatData = data[ɵLocaleDataIndex.DateTimeFormat];\n return getLastDefinedValue(dateTimeFormatData, width);\n}\n/**\n * Retrieves a localized number symbol that can be used to replace placeholders in number formats.\n * @param locale The locale code.\n * @param symbol The symbol to localize.\n * @returns The character for the localized symbol.\n * @see `NumberSymbol`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleNumberSymbol(locale, symbol) {\n const data = ɵfindLocaleData(locale);\n const res = data[ɵLocaleDataIndex.NumberSymbols][symbol];\n if (typeof res === 'undefined') {\n if (symbol === NumberSymbol.CurrencyDecimal) {\n return data[ɵLocaleDataIndex.NumberSymbols][NumberSymbol.Decimal];\n }\n else if (symbol === NumberSymbol.CurrencyGroup) {\n return data[ɵLocaleDataIndex.NumberSymbols][NumberSymbol.Group];\n }\n }\n return res;\n}\n/**\n * Retrieves a number format for a given locale.\n *\n * Numbers are formatted using patterns, like `#,###.00`. For example, the pattern `#,###.00`\n * when used to format the number 12345.678 could result in \"12'345,678\". That would happen if the\n * grouping separator for your language is an apostrophe, and the decimal separator is a comma.\n *\n * Important: The characters `.` `,` `0` `#` (and others below) are special placeholders\n * that stand for the decimal separator, and so on, and are NOT real characters.\n * You must NOT \"translate\" the placeholders. For example, don't change `.` to `,` even though in\n * your language the decimal point is written with a comma. The symbols should be replaced by the\n * local equivalents, using the appropriate `NumberSymbol` for your language.\n *\n * Here are the special characters used in number patterns:\n *\n * | Symbol | Meaning |\n * |--------|---------|\n * | . | Replaced automatically by the character used for the decimal point. |\n * | , | Replaced by the \"grouping\" (thousands) separator. |\n * | 0 | Replaced by a digit (or zero if there aren't enough digits). |\n * | # | Replaced by a digit (or nothing if there aren't enough). |\n * | ¤ | Replaced by a currency symbol, such as $ or USD. |\n * | % | Marks a percent format. The % symbol may change position, but must be retained. |\n * | E | Marks a scientific format. The E symbol may change position, but must be retained. |\n * | ' | Special characters used as literal characters are quoted with ASCII single quotes. |\n *\n * @param locale A locale code for the locale format rules to use.\n * @param type The type of numeric value to be formatted (such as `Decimal` or `Currency`.)\n * @returns The localized format string.\n * @see `NumberFormatStyle`\n * @see [CLDR website](http://cldr.unicode.org/translation/number-patterns)\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleNumberFormat(locale, type) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.NumberFormats][type];\n}\n/**\n * Retrieves the symbol used to represent the currency for the main country\n * corresponding to a given locale. For example, '$' for `en-US`.\n *\n * @param locale A locale code for the locale format rules to use.\n * @returns The localized symbol character,\n * or `null` if the main country cannot be determined.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleCurrencySymbol(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.CurrencySymbol] || null;\n}\n/**\n * Retrieves the name of the currency for the main country corresponding\n * to a given locale. For example, 'US Dollar' for `en-US`.\n * @param locale A locale code for the locale format rules to use.\n * @returns The currency name,\n * or `null` if the main country cannot be determined.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleCurrencyName(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.CurrencyName] || null;\n}\n/**\n * Retrieves the default currency code for the given locale.\n *\n * The default is defined as the first currency which is still in use.\n *\n * @param locale The code of the locale whose currency code we want.\n * @returns The code of the default currency for the given locale.\n *\n * @publicApi\n */\nfunction getLocaleCurrencyCode(locale) {\n return ɵgetLocaleCurrencyCode(locale);\n}\n/**\n * Retrieves the currency values for a given locale.\n * @param locale A locale code for the locale format rules to use.\n * @returns The currency values.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n */\nfunction getLocaleCurrencies(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.Currencies];\n}\n/**\n * @alias core/ɵgetLocalePluralCase\n * @publicApi\n */\nconst getLocalePluralCase = ɵgetLocalePluralCase;\nfunction checkFullData(data) {\n if (!data[ɵLocaleDataIndex.ExtraData]) {\n throw new Error(`Missing extra locale data for the locale \"${data[ɵLocaleDataIndex\n .LocaleId]}\". Use \"registerLocaleData\" to load new data. See the \"I18n guide\" on angular.io to know more.`);\n }\n}\n/**\n * Retrieves locale-specific rules used to determine which day period to use\n * when more than one period is defined for a locale.\n *\n * There is a rule for each defined day period. The\n * first rule is applied to the first day period and so on.\n * Fall back to AM/PM when no rules are available.\n *\n * A rule can specify a period as time range, or as a single time value.\n *\n * This functionality is only available when you have loaded the full locale data.\n * See the [\"I18n guide\"](guide/i18n-common-format-data-locale).\n *\n * @param locale A locale code for the locale format rules to use.\n * @returns The rules for the locale, a single time value or array of *from-time, to-time*,\n * or null if no periods are available.\n *\n * @see `getLocaleExtraDayPeriods()`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleExtraDayPeriodRules(locale) {\n const data = ɵfindLocaleData(locale);\n checkFullData(data);\n const rules = data[ɵLocaleDataIndex.ExtraData][2 /* ExtraDayPeriodsRules */] || [];\n return rules.map((rule) => {\n if (typeof rule === 'string') {\n return extractTime(rule);\n }\n return [extractTime(rule[0]), extractTime(rule[1])];\n });\n}\n/**\n * Retrieves locale-specific day periods, which indicate roughly how a day is broken up\n * in different languages.\n * For example, for `en-US`, periods are morning, noon, afternoon, evening, and midnight.\n *\n * This functionality is only available when you have loaded the full locale data.\n * See the [\"I18n guide\"](guide/i18n-common-format-data-locale).\n *\n * @param locale A locale code for the locale format rules to use.\n * @param formStyle The required grammatical form.\n * @param width The required character width.\n * @returns The translated day-period strings.\n * @see `getLocaleExtraDayPeriodRules()`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleExtraDayPeriods(locale, formStyle, width) {\n const data = ɵfindLocaleData(locale);\n checkFullData(data);\n const dayPeriodsData = [\n data[ɵLocaleDataIndex.ExtraData][0 /* ExtraDayPeriodFormats */],\n data[ɵLocaleDataIndex.ExtraData][1 /* ExtraDayPeriodStandalone */]\n ];\n const dayPeriods = getLastDefinedValue(dayPeriodsData, formStyle) || [];\n return getLastDefinedValue(dayPeriods, width) || [];\n}\n/**\n * Retrieves the writing direction of a specified locale\n * @param locale A locale code for the locale format rules to use.\n * @publicApi\n * @returns 'rtl' or 'ltr'\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n */\nfunction getLocaleDirection(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.Directionality];\n}\n/**\n * Retrieves the first value that is defined in an array, going backwards from an index position.\n *\n * To avoid repeating the same data (as when the \"format\" and \"standalone\" forms are the same)\n * add the first value to the locale data arrays, and add other values only if they are different.\n *\n * @param data The data array to retrieve from.\n * @param index A 0-based index into the array to start from.\n * @returns The value immediately before the given index position.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLastDefinedValue(data, index) {\n for (let i = index; i > -1; i--) {\n if (typeof data[i] !== 'undefined') {\n return data[i];\n }\n }\n throw new Error('Locale data API: locale data undefined');\n}\n/**\n * Extracts the hours and minutes from a string like \"15:45\"\n */\nfunction extractTime(time) {\n const [h, m] = time.split(':');\n return { hours: +h, minutes: +m };\n}\n/**\n * Retrieves the currency symbol for a given currency code.\n *\n * For example, for the default `en-US` locale, the code `USD` can\n * be represented by the narrow symbol `$` or the wide symbol `US$`.\n *\n * @param code The currency code.\n * @param format The format, `wide` or `narrow`.\n * @param locale A locale code for the locale format rules to use.\n *\n * @returns The symbol, or the currency code if no symbol is available.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getCurrencySymbol(code, format, locale = 'en') {\n const currency = getLocaleCurrencies(locale)[code] || CURRENCIES_EN[code] || [];\n const symbolNarrow = currency[1 /* SymbolNarrow */];\n if (format === 'narrow' && typeof symbolNarrow === 'string') {\n return symbolNarrow;\n }\n return currency[0 /* Symbol */] || code;\n}\n// Most currencies have cents, that's why the default is 2\nconst DEFAULT_NB_OF_CURRENCY_DIGITS = 2;\n/**\n * Reports the number of decimal digits for a given currency.\n * The value depends upon the presence of cents in that particular currency.\n *\n * @param code The currency code.\n * @returns The number of decimal digits, typically 0 or 2.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getNumberOfCurrencyDigits(code) {\n let digits;\n const currency = CURRENCIES_EN[code];\n if (currency) {\n digits = currency[2 /* NbOfDigits */];\n }\n return typeof digits === 'number' ? digits : DEFAULT_NB_OF_CURRENCY_DIGITS;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst ISO8601_DATE_REGEX = /^(\\d{4})-?(\\d\\d)-?(\\d\\d)(?:T(\\d\\d)(?::?(\\d\\d)(?::?(\\d\\d)(?:\\.(\\d+))?)?)?(Z|([+-])(\\d\\d):?(\\d\\d))?)?$/;\n// 1 2 3 4 5 6 7 8 9 10 11\nconst NAMED_FORMATS = {};\nconst DATE_FORMATS_SPLIT = /((?:[^BEGHLMOSWYZabcdhmswyz']+)|(?:'(?:[^']|'')*')|(?:G{1,5}|y{1,4}|Y{1,4}|M{1,5}|L{1,5}|w{1,2}|W{1}|d{1,2}|E{1,6}|c{1,6}|a{1,5}|b{1,5}|B{1,5}|h{1,2}|H{1,2}|m{1,2}|s{1,2}|S{1,3}|z{1,4}|Z{1,5}|O{1,4}))([\\s\\S]*)/;\nvar ZoneWidth;\n(function (ZoneWidth) {\n ZoneWidth[ZoneWidth[\"Short\"] = 0] = \"Short\";\n ZoneWidth[ZoneWidth[\"ShortGMT\"] = 1] = \"ShortGMT\";\n ZoneWidth[ZoneWidth[\"Long\"] = 2] = \"Long\";\n ZoneWidth[ZoneWidth[\"Extended\"] = 3] = \"Extended\";\n})(ZoneWidth || (ZoneWidth = {}));\nvar DateType;\n(function (DateType) {\n DateType[DateType[\"FullYear\"] = 0] = \"FullYear\";\n DateType[DateType[\"Month\"] = 1] = \"Month\";\n DateType[DateType[\"Date\"] = 2] = \"Date\";\n DateType[DateType[\"Hours\"] = 3] = \"Hours\";\n DateType[DateType[\"Minutes\"] = 4] = \"Minutes\";\n DateType[DateType[\"Seconds\"] = 5] = \"Seconds\";\n DateType[DateType[\"FractionalSeconds\"] = 6] = \"FractionalSeconds\";\n DateType[DateType[\"Day\"] = 7] = \"Day\";\n})(DateType || (DateType = {}));\nvar TranslationType;\n(function (TranslationType) {\n TranslationType[TranslationType[\"DayPeriods\"] = 0] = \"DayPeriods\";\n TranslationType[TranslationType[\"Days\"] = 1] = \"Days\";\n TranslationType[TranslationType[\"Months\"] = 2] = \"Months\";\n TranslationType[TranslationType[\"Eras\"] = 3] = \"Eras\";\n})(TranslationType || (TranslationType = {}));\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a date according to locale rules.\n *\n * @param value The date to format, as a Date, or a number (milliseconds since UTC epoch)\n * or an [ISO date-time string](https://www.w3.org/TR/NOTE-datetime).\n * @param format The date-time components to include. See `DatePipe` for details.\n * @param locale A locale code for the locale format rules to use.\n * @param timezone The time zone. A time zone offset from GMT (such as `'+0430'`),\n * or a standard UTC/GMT or continental US time zone abbreviation.\n * If not specified, uses host system settings.\n *\n * @returns The formatted date string.\n *\n * @see `DatePipe`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction formatDate(value, format, locale, timezone) {\n let date = toDate(value);\n const namedFormat = getNamedFormat(locale, format);\n format = namedFormat || format;\n let parts = [];\n let match;\n while (format) {\n match = DATE_FORMATS_SPLIT.exec(format);\n if (match) {\n parts = parts.concat(match.slice(1));\n const part = parts.pop();\n if (!part) {\n break;\n }\n format = part;\n }\n else {\n parts.push(format);\n break;\n }\n }\n let dateTimezoneOffset = date.getTimezoneOffset();\n if (timezone) {\n dateTimezoneOffset = timezoneToOffset(timezone, dateTimezoneOffset);\n date = convertTimezoneToLocal(date, timezone, true);\n }\n let text = '';\n parts.forEach(value => {\n const dateFormatter = getDateFormatter(value);\n text += dateFormatter ?\n dateFormatter(date, locale, dateTimezoneOffset) :\n value === '\\'\\'' ? '\\'' : value.replace(/(^'|'$)/g, '').replace(/''/g, '\\'');\n });\n return text;\n}\n/**\n * Create a new Date object with the given date value, and the time set to midnight.\n *\n * We cannot use `new Date(year, month, date)` because it maps years between 0 and 99 to 1900-1999.\n * See: https://github.com/angular/angular/issues/40377\n *\n * Note that this function returns a Date object whose time is midnight in the current locale's\n * timezone. In the future we might want to change this to be midnight in UTC, but this would be a\n * considerable breaking change.\n */\nfunction createDate(year, month, date) {\n // The `newDate` is set to midnight (UTC) on January 1st 1970.\n // - In PST this will be December 31st 1969 at 4pm.\n // - In GMT this will be January 1st 1970 at 1am.\n // Note that they even have different years, dates and months!\n const newDate = new Date(0);\n // `setFullYear()` allows years like 0001 to be set correctly. This function does not\n // change the internal time of the date.\n // Consider calling `setFullYear(2019, 8, 20)` (September 20, 2019).\n // - In PST this will now be September 20, 2019 at 4pm\n // - In GMT this will now be September 20, 2019 at 1am\n newDate.setFullYear(year, month, date);\n // We want the final date to be at local midnight, so we reset the time.\n // - In PST this will now be September 20, 2019 at 12am\n // - In GMT this will now be September 20, 2019 at 12am\n newDate.setHours(0, 0, 0);\n return newDate;\n}\nfunction getNamedFormat(locale, format) {\n const localeId = getLocaleId(locale);\n NAMED_FORMATS[localeId] = NAMED_FORMATS[localeId] || {};\n if (NAMED_FORMATS[localeId][format]) {\n return NAMED_FORMATS[localeId][format];\n }\n let formatValue = '';\n switch (format) {\n case 'shortDate':\n formatValue = getLocaleDateFormat(locale, FormatWidth.Short);\n break;\n case 'mediumDate':\n formatValue = getLocaleDateFormat(locale, FormatWidth.Medium);\n break;\n case 'longDate':\n formatValue = getLocaleDateFormat(locale, FormatWidth.Long);\n break;\n case 'fullDate':\n formatValue = getLocaleDateFormat(locale, FormatWidth.Full);\n break;\n case 'shortTime':\n formatValue = getLocaleTimeFormat(locale, FormatWidth.Short);\n break;\n case 'mediumTime':\n formatValue = getLocaleTimeFormat(locale, FormatWidth.Medium);\n break;\n case 'longTime':\n formatValue = getLocaleTimeFormat(locale, FormatWidth.Long);\n break;\n case 'fullTime':\n formatValue = getLocaleTimeFormat(locale, FormatWidth.Full);\n break;\n case 'short':\n const shortTime = getNamedFormat(locale, 'shortTime');\n const shortDate = getNamedFormat(locale, 'shortDate');\n formatValue = formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Short), [shortTime, shortDate]);\n break;\n case 'medium':\n const mediumTime = getNamedFormat(locale, 'mediumTime');\n const mediumDate = getNamedFormat(locale, 'mediumDate');\n formatValue = formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Medium), [mediumTime, mediumDate]);\n break;\n case 'long':\n const longTime = getNamedFormat(locale, 'longTime');\n const longDate = getNamedFormat(locale, 'longDate');\n formatValue =\n formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Long), [longTime, longDate]);\n break;\n case 'full':\n const fullTime = getNamedFormat(locale, 'fullTime');\n const fullDate = getNamedFormat(locale, 'fullDate');\n formatValue =\n formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Full), [fullTime, fullDate]);\n break;\n }\n if (formatValue) {\n NAMED_FORMATS[localeId][format] = formatValue;\n }\n return formatValue;\n}\nfunction formatDateTime(str, opt_values) {\n if (opt_values) {\n str = str.replace(/\\{([^}]+)}/g, function (match, key) {\n return (opt_values != null && key in opt_values) ? opt_values[key] : match;\n });\n }\n return str;\n}\nfunction padNumber(num, digits, minusSign = '-', trim, negWrap) {\n let neg = '';\n if (num < 0 || (negWrap && num <= 0)) {\n if (negWrap) {\n num = -num + 1;\n }\n else {\n num = -num;\n neg = minusSign;\n }\n }\n let strNum = String(num);\n while (strNum.length < digits) {\n strNum = '0' + strNum;\n }\n if (trim) {\n strNum = strNum.substr(strNum.length - digits);\n }\n return neg + strNum;\n}\nfunction formatFractionalSeconds(milliseconds, digits) {\n const strMs = padNumber(milliseconds, 3);\n return strMs.substr(0, digits);\n}\n/**\n * Returns a date formatter that transforms a date into its locale digit representation\n */\nfunction dateGetter(name, size, offset = 0, trim = false, negWrap = false) {\n return function (date, locale) {\n let part = getDatePart(name, date);\n if (offset > 0 || part > -offset) {\n part += offset;\n }\n if (name === DateType.Hours) {\n if (part === 0 && offset === -12) {\n part = 12;\n }\n }\n else if (name === DateType.FractionalSeconds) {\n return formatFractionalSeconds(part, size);\n }\n const localeMinus = getLocaleNumberSymbol(locale, NumberSymbol.MinusSign);\n return padNumber(part, size, localeMinus, trim, negWrap);\n };\n}\nfunction getDatePart(part, date) {\n switch (part) {\n case DateType.FullYear:\n return date.getFullYear();\n case DateType.Month:\n return date.getMonth();\n case DateType.Date:\n return date.getDate();\n case DateType.Hours:\n return date.getHours();\n case DateType.Minutes:\n return date.getMinutes();\n case DateType.Seconds:\n return date.getSeconds();\n case DateType.FractionalSeconds:\n return date.getMilliseconds();\n case DateType.Day:\n return date.getDay();\n default:\n throw new Error(`Unknown DateType value \"${part}\".`);\n }\n}\n/**\n * Returns a date formatter that transforms a date into its locale string representation\n */\nfunction dateStrGetter(name, width, form = FormStyle.Format, extended = false) {\n return function (date, locale) {\n return getDateTranslation(date, locale, name, width, form, extended);\n };\n}\n/**\n * Returns the locale translation of a date for a given form, type and width\n */\nfunction getDateTranslation(date, locale, name, width, form, extended) {\n switch (name) {\n case TranslationType.Months:\n return getLocaleMonthNames(locale, form, width)[date.getMonth()];\n case TranslationType.Days:\n return getLocaleDayNames(locale, form, width)[date.getDay()];\n case TranslationType.DayPeriods:\n const currentHours = date.getHours();\n const currentMinutes = date.getMinutes();\n if (extended) {\n const rules = getLocaleExtraDayPeriodRules(locale);\n const dayPeriods = getLocaleExtraDayPeriods(locale, form, width);\n const index = rules.findIndex(rule => {\n if (Array.isArray(rule)) {\n // morning, afternoon, evening, night\n const [from, to] = rule;\n const afterFrom = currentHours >= from.hours && currentMinutes >= from.minutes;\n const beforeTo = (currentHours < to.hours ||\n (currentHours === to.hours && currentMinutes < to.minutes));\n // We must account for normal rules that span a period during the day (e.g. 6am-9am)\n // where `from` is less (earlier) than `to`. But also rules that span midnight (e.g.\n // 10pm - 5am) where `from` is greater (later!) than `to`.\n //\n // In the first case the current time must be BOTH after `from` AND before `to`\n // (e.g. 8am is after 6am AND before 10am).\n //\n // In the second case the current time must be EITHER after `from` OR before `to`\n // (e.g. 4am is before 5am but not after 10pm; and 11pm is not before 5am but it is\n // after 10pm).\n if (from.hours < to.hours) {\n if (afterFrom && beforeTo) {\n return true;\n }\n }\n else if (afterFrom || beforeTo) {\n return true;\n }\n }\n else { // noon or midnight\n if (rule.hours === currentHours && rule.minutes === currentMinutes) {\n return true;\n }\n }\n return false;\n });\n if (index !== -1) {\n return dayPeriods[index];\n }\n }\n // if no rules for the day periods, we use am/pm by default\n return getLocaleDayPeriods(locale, form, width)[currentHours < 12 ? 0 : 1];\n case TranslationType.Eras:\n return getLocaleEraNames(locale, width)[date.getFullYear() <= 0 ? 0 : 1];\n default:\n // This default case is not needed by TypeScript compiler, as the switch is exhaustive.\n // However Closure Compiler does not understand that and reports an error in typed mode.\n // The `throw new Error` below works around the problem, and the unexpected: never variable\n // makes sure tsc still checks this code is unreachable.\n const unexpected = name;\n throw new Error(`unexpected translation type ${unexpected}`);\n }\n}\n/**\n * Returns a date formatter that transforms a date and an offset into a timezone with ISO8601 or\n * GMT format depending on the width (eg: short = +0430, short:GMT = GMT+4, long = GMT+04:30,\n * extended = +04:30)\n */\nfunction timeZoneGetter(width) {\n return function (date, locale, offset) {\n const zone = -1 * offset;\n const minusSign = getLocaleNumberSymbol(locale, NumberSymbol.MinusSign);\n const hours = zone > 0 ? Math.floor(zone / 60) : Math.ceil(zone / 60);\n switch (width) {\n case ZoneWidth.Short:\n return ((zone >= 0) ? '+' : '') + padNumber(hours, 2, minusSign) +\n padNumber(Math.abs(zone % 60), 2, minusSign);\n case ZoneWidth.ShortGMT:\n return 'GMT' + ((zone >= 0) ? '+' : '') + padNumber(hours, 1, minusSign);\n case ZoneWidth.Long:\n return 'GMT' + ((zone >= 0) ? '+' : '') + padNumber(hours, 2, minusSign) + ':' +\n padNumber(Math.abs(zone % 60), 2, minusSign);\n case ZoneWidth.Extended:\n if (offset === 0) {\n return 'Z';\n }\n else {\n return ((zone >= 0) ? '+' : '') + padNumber(hours, 2, minusSign) + ':' +\n padNumber(Math.abs(zone % 60), 2, minusSign);\n }\n default:\n throw new Error(`Unknown zone width \"${width}\"`);\n }\n };\n}\nconst JANUARY = 0;\nconst THURSDAY = 4;\nfunction getFirstThursdayOfYear(year) {\n const firstDayOfYear = createDate(year, JANUARY, 1).getDay();\n return createDate(year, 0, 1 + ((firstDayOfYear <= THURSDAY) ? THURSDAY : THURSDAY + 7) - firstDayOfYear);\n}\nfunction getThursdayThisWeek(datetime) {\n return createDate(datetime.getFullYear(), datetime.getMonth(), datetime.getDate() + (THURSDAY - datetime.getDay()));\n}\nfunction weekGetter(size, monthBased = false) {\n return function (date, locale) {\n let result;\n if (monthBased) {\n const nbDaysBefore1stDayOfMonth = new Date(date.getFullYear(), date.getMonth(), 1).getDay() - 1;\n const today = date.getDate();\n result = 1 + Math.floor((today + nbDaysBefore1stDayOfMonth) / 7);\n }\n else {\n const thisThurs = getThursdayThisWeek(date);\n // Some days of a year are part of next year according to ISO 8601.\n // Compute the firstThurs from the year of this week's Thursday\n const firstThurs = getFirstThursdayOfYear(thisThurs.getFullYear());\n const diff = thisThurs.getTime() - firstThurs.getTime();\n result = 1 + Math.round(diff / 6.048e8); // 6.048e8 ms per week\n }\n return padNumber(result, size, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));\n };\n}\n/**\n * Returns a date formatter that provides the week-numbering year for the input date.\n */\nfunction weekNumberingYearGetter(size, trim = false) {\n return function (date, locale) {\n const thisThurs = getThursdayThisWeek(date);\n const weekNumberingYear = thisThurs.getFullYear();\n return padNumber(weekNumberingYear, size, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign), trim);\n };\n}\nconst DATE_FORMATS = {};\n// Based on CLDR formats:\n// See complete list: http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n// See also explanations: http://cldr.unicode.org/translation/date-time\n// TODO(ocombe): support all missing cldr formats: U, Q, D, F, e, j, J, C, A, v, V, X, x\nfunction getDateFormatter(format) {\n if (DATE_FORMATS[format]) {\n return DATE_FORMATS[format];\n }\n let formatter;\n switch (format) {\n // Era name (AD/BC)\n case 'G':\n case 'GG':\n case 'GGG':\n formatter = dateStrGetter(TranslationType.Eras, TranslationWidth.Abbreviated);\n break;\n case 'GGGG':\n formatter = dateStrGetter(TranslationType.Eras, TranslationWidth.Wide);\n break;\n case 'GGGGG':\n formatter = dateStrGetter(TranslationType.Eras, TranslationWidth.Narrow);\n break;\n // 1 digit representation of the year, e.g. (AD 1 => 1, AD 199 => 199)\n case 'y':\n formatter = dateGetter(DateType.FullYear, 1, 0, false, true);\n break;\n // 2 digit representation of the year, padded (00-99). (e.g. AD 2001 => 01, AD 2010 => 10)\n case 'yy':\n formatter = dateGetter(DateType.FullYear, 2, 0, true, true);\n break;\n // 3 digit representation of the year, padded (000-999). (e.g. AD 2001 => 01, AD 2010 => 10)\n case 'yyy':\n formatter = dateGetter(DateType.FullYear, 3, 0, false, true);\n break;\n // 4 digit representation of the year (e.g. AD 1 => 0001, AD 2010 => 2010)\n case 'yyyy':\n formatter = dateGetter(DateType.FullYear, 4, 0, false, true);\n break;\n // 1 digit representation of the week-numbering year, e.g. (AD 1 => 1, AD 199 => 199)\n case 'Y':\n formatter = weekNumberingYearGetter(1);\n break;\n // 2 digit representation of the week-numbering year, padded (00-99). (e.g. AD 2001 => 01, AD\n // 2010 => 10)\n case 'YY':\n formatter = weekNumberingYearGetter(2, true);\n break;\n // 3 digit representation of the week-numbering year, padded (000-999). (e.g. AD 1 => 001, AD\n // 2010 => 2010)\n case 'YYY':\n formatter = weekNumberingYearGetter(3);\n break;\n // 4 digit representation of the week-numbering year (e.g. AD 1 => 0001, AD 2010 => 2010)\n case 'YYYY':\n formatter = weekNumberingYearGetter(4);\n break;\n // Month of the year (1-12), numeric\n case 'M':\n case 'L':\n formatter = dateGetter(DateType.Month, 1, 1);\n break;\n case 'MM':\n case 'LL':\n formatter = dateGetter(DateType.Month, 2, 1);\n break;\n // Month of the year (January, ...), string, format\n case 'MMM':\n formatter = dateStrGetter(TranslationType.Months, TranslationWidth.Abbreviated);\n break;\n case 'MMMM':\n formatter = dateStrGetter(TranslationType.Months, TranslationWidth.Wide);\n break;\n case 'MMMMM':\n formatter = dateStrGetter(TranslationType.Months, TranslationWidth.Narrow);\n break;\n // Month of the year (January, ...), string, standalone\n case 'LLL':\n formatter =\n dateStrGetter(TranslationType.Months, TranslationWidth.Abbreviated, FormStyle.Standalone);\n break;\n case 'LLLL':\n formatter =\n dateStrGetter(TranslationType.Months, TranslationWidth.Wide, FormStyle.Standalone);\n break;\n case 'LLLLL':\n formatter =\n dateStrGetter(TranslationType.Months, TranslationWidth.Narrow, FormStyle.Standalone);\n break;\n // Week of the year (1, ... 52)\n case 'w':\n formatter = weekGetter(1);\n break;\n case 'ww':\n formatter = weekGetter(2);\n break;\n // Week of the month (1, ...)\n case 'W':\n formatter = weekGetter(1, true);\n break;\n // Day of the month (1-31)\n case 'd':\n formatter = dateGetter(DateType.Date, 1);\n break;\n case 'dd':\n formatter = dateGetter(DateType.Date, 2);\n break;\n // Day of the Week StandAlone (1, 1, Mon, Monday, M, Mo)\n case 'c':\n case 'cc':\n formatter = dateGetter(DateType.Day, 1);\n break;\n case 'ccc':\n formatter =\n dateStrGetter(TranslationType.Days, TranslationWidth.Abbreviated, FormStyle.Standalone);\n break;\n case 'cccc':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Wide, FormStyle.Standalone);\n break;\n case 'ccccc':\n formatter =\n dateStrGetter(TranslationType.Days, TranslationWidth.Narrow, FormStyle.Standalone);\n break;\n case 'cccccc':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Short, FormStyle.Standalone);\n break;\n // Day of the Week\n case 'E':\n case 'EE':\n case 'EEE':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Abbreviated);\n break;\n case 'EEEE':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Wide);\n break;\n case 'EEEEE':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Narrow);\n break;\n case 'EEEEEE':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Short);\n break;\n // Generic period of the day (am-pm)\n case 'a':\n case 'aa':\n case 'aaa':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Abbreviated);\n break;\n case 'aaaa':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Wide);\n break;\n case 'aaaaa':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Narrow);\n break;\n // Extended period of the day (midnight, at night, ...), standalone\n case 'b':\n case 'bb':\n case 'bbb':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Abbreviated, FormStyle.Standalone, true);\n break;\n case 'bbbb':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Wide, FormStyle.Standalone, true);\n break;\n case 'bbbbb':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Narrow, FormStyle.Standalone, true);\n break;\n // Extended period of the day (midnight, night, ...), standalone\n case 'B':\n case 'BB':\n case 'BBB':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Abbreviated, FormStyle.Format, true);\n break;\n case 'BBBB':\n formatter =\n dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Wide, FormStyle.Format, true);\n break;\n case 'BBBBB':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Narrow, FormStyle.Format, true);\n break;\n // Hour in AM/PM, (1-12)\n case 'h':\n formatter = dateGetter(DateType.Hours, 1, -12);\n break;\n case 'hh':\n formatter = dateGetter(DateType.Hours, 2, -12);\n break;\n // Hour of the day (0-23)\n case 'H':\n formatter = dateGetter(DateType.Hours, 1);\n break;\n // Hour in day, padded (00-23)\n case 'HH':\n formatter = dateGetter(DateType.Hours, 2);\n break;\n // Minute of the hour (0-59)\n case 'm':\n formatter = dateGetter(DateType.Minutes, 1);\n break;\n case 'mm':\n formatter = dateGetter(DateType.Minutes, 2);\n break;\n // Second of the minute (0-59)\n case 's':\n formatter = dateGetter(DateType.Seconds, 1);\n break;\n case 'ss':\n formatter = dateGetter(DateType.Seconds, 2);\n break;\n // Fractional second\n case 'S':\n formatter = dateGetter(DateType.FractionalSeconds, 1);\n break;\n case 'SS':\n formatter = dateGetter(DateType.FractionalSeconds, 2);\n break;\n case 'SSS':\n formatter = dateGetter(DateType.FractionalSeconds, 3);\n break;\n // Timezone ISO8601 short format (-0430)\n case 'Z':\n case 'ZZ':\n case 'ZZZ':\n formatter = timeZoneGetter(ZoneWidth.Short);\n break;\n // Timezone ISO8601 extended format (-04:30)\n case 'ZZZZZ':\n formatter = timeZoneGetter(ZoneWidth.Extended);\n break;\n // Timezone GMT short format (GMT+4)\n case 'O':\n case 'OO':\n case 'OOO':\n // Should be location, but fallback to format O instead because we don't have the data yet\n case 'z':\n case 'zz':\n case 'zzz':\n formatter = timeZoneGetter(ZoneWidth.ShortGMT);\n break;\n // Timezone GMT long format (GMT+0430)\n case 'OOOO':\n case 'ZZZZ':\n // Should be location, but fallback to format O instead because we don't have the data yet\n case 'zzzz':\n formatter = timeZoneGetter(ZoneWidth.Long);\n break;\n default:\n return null;\n }\n DATE_FORMATS[format] = formatter;\n return formatter;\n}\nfunction timezoneToOffset(timezone, fallback) {\n // Support: IE 11 only, Edge 13-15+\n // IE/Edge do not \"understand\" colon (`:`) in timezone\n timezone = timezone.replace(/:/g, '');\n const requestedTimezoneOffset = Date.parse('Jan 01, 1970 00:00:00 ' + timezone) / 60000;\n return isNaN(requestedTimezoneOffset) ? fallback : requestedTimezoneOffset;\n}\nfunction addDateMinutes(date, minutes) {\n date = new Date(date.getTime());\n date.setMinutes(date.getMinutes() + minutes);\n return date;\n}\nfunction convertTimezoneToLocal(date, timezone, reverse) {\n const reverseValue = reverse ? -1 : 1;\n const dateTimezoneOffset = date.getTimezoneOffset();\n const timezoneOffset = timezoneToOffset(timezone, dateTimezoneOffset);\n return addDateMinutes(date, reverseValue * (timezoneOffset - dateTimezoneOffset));\n}\n/**\n * Converts a value to date.\n *\n * Supported input formats:\n * - `Date`\n * - number: timestamp\n * - string: numeric (e.g. \"1234\"), ISO and date strings in a format supported by\n * [Date.parse()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse).\n * Note: ISO strings without time return a date without timeoffset.\n *\n * Throws if unable to convert to a date.\n */\nfunction toDate(value) {\n if (isDate(value)) {\n return value;\n }\n if (typeof value === 'number' && !isNaN(value)) {\n return new Date(value);\n }\n if (typeof value === 'string') {\n value = value.trim();\n if (/^(\\d{4}(-\\d{1,2}(-\\d{1,2})?)?)$/.test(value)) {\n /* For ISO Strings without time the day, month and year must be extracted from the ISO String\n before Date creation to avoid time offset and errors in the new Date.\n If we only replace '-' with ',' in the ISO String (\"2015,01,01\"), and try to create a new\n date, some browsers (e.g. IE 9) will throw an invalid Date error.\n If we leave the '-' (\"2015-01-01\") and try to create a new Date(\"2015-01-01\") the timeoffset\n is applied.\n Note: ISO months are 0 for January, 1 for February, ... */\n const [y, m = 1, d = 1] = value.split('-').map((val) => +val);\n return createDate(y, m - 1, d);\n }\n const parsedNb = parseFloat(value);\n // any string that only contains numbers, like \"1234\" but not like \"1234hello\"\n if (!isNaN(value - parsedNb)) {\n return new Date(parsedNb);\n }\n let match;\n if (match = value.match(ISO8601_DATE_REGEX)) {\n return isoStringToDate(match);\n }\n }\n const date = new Date(value);\n if (!isDate(date)) {\n throw new Error(`Unable to convert \"${value}\" into a date`);\n }\n return date;\n}\n/**\n * Converts a date in ISO8601 to a Date.\n * Used instead of `Date.parse` because of browser discrepancies.\n */\nfunction isoStringToDate(match) {\n const date = new Date(0);\n let tzHour = 0;\n let tzMin = 0;\n // match[8] means that the string contains \"Z\" (UTC) or a timezone like \"+01:00\" or \"+0100\"\n const dateSetter = match[8] ? date.setUTCFullYear : date.setFullYear;\n const timeSetter = match[8] ? date.setUTCHours : date.setHours;\n // if there is a timezone defined like \"+01:00\" or \"+0100\"\n if (match[9]) {\n tzHour = Number(match[9] + match[10]);\n tzMin = Number(match[9] + match[11]);\n }\n dateSetter.call(date, Number(match[1]), Number(match[2]) - 1, Number(match[3]));\n const h = Number(match[4] || 0) - tzHour;\n const m = Number(match[5] || 0) - tzMin;\n const s = Number(match[6] || 0);\n // The ECMAScript specification (https://www.ecma-international.org/ecma-262/5.1/#sec-15.9.1.11)\n // defines that `DateTime` milliseconds should always be rounded down, so that `999.9ms`\n // becomes `999ms`.\n const ms = Math.floor(parseFloat('0.' + (match[7] || 0)) * 1000);\n timeSetter.call(date, h, m, s, ms);\n return date;\n}\nfunction isDate(value) {\n return value instanceof Date && !isNaN(value.valueOf());\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst NUMBER_FORMAT_REGEXP = /^(\\d+)?\\.((\\d+)(-(\\d+))?)?$/;\nconst MAX_DIGITS = 22;\nconst DECIMAL_SEP = '.';\nconst ZERO_CHAR = '0';\nconst PATTERN_SEP = ';';\nconst GROUP_SEP = ',';\nconst DIGIT_CHAR = '#';\nconst CURRENCY_CHAR = '¤';\nconst PERCENT_CHAR = '%';\n/**\n * Transforms a number to a locale string based on a style and a format.\n */\nfunction formatNumberToLocaleString(value, pattern, locale, groupSymbol, decimalSymbol, digitsInfo, isPercent = false) {\n let formattedText = '';\n let isZero = false;\n if (!isFinite(value)) {\n formattedText = getLocaleNumberSymbol(locale, NumberSymbol.Infinity);\n }\n else {\n let parsedNumber = parseNumber(value);\n if (isPercent) {\n parsedNumber = toPercent(parsedNumber);\n }\n let minInt = pattern.minInt;\n let minFraction = pattern.minFrac;\n let maxFraction = pattern.maxFrac;\n if (digitsInfo) {\n const parts = digitsInfo.match(NUMBER_FORMAT_REGEXP);\n if (parts === null) {\n throw new Error(`${digitsInfo} is not a valid digit info`);\n }\n const minIntPart = parts[1];\n const minFractionPart = parts[3];\n const maxFractionPart = parts[5];\n if (minIntPart != null) {\n minInt = parseIntAutoRadix(minIntPart);\n }\n if (minFractionPart != null) {\n minFraction = parseIntAutoRadix(minFractionPart);\n }\n if (maxFractionPart != null) {\n maxFraction = parseIntAutoRadix(maxFractionPart);\n }\n else if (minFractionPart != null && minFraction > maxFraction) {\n maxFraction = minFraction;\n }\n }\n roundNumber(parsedNumber, minFraction, maxFraction);\n let digits = parsedNumber.digits;\n let integerLen = parsedNumber.integerLen;\n const exponent = parsedNumber.exponent;\n let decimals = [];\n isZero = digits.every(d => !d);\n // pad zeros for small numbers\n for (; integerLen < minInt; integerLen++) {\n digits.unshift(0);\n }\n // pad zeros for small numbers\n for (; integerLen < 0; integerLen++) {\n digits.unshift(0);\n }\n // extract decimals digits\n if (integerLen > 0) {\n decimals = digits.splice(integerLen, digits.length);\n }\n else {\n decimals = digits;\n digits = [0];\n }\n // format the integer digits with grouping separators\n const groups = [];\n if (digits.length >= pattern.lgSize) {\n groups.unshift(digits.splice(-pattern.lgSize, digits.length).join(''));\n }\n while (digits.length > pattern.gSize) {\n groups.unshift(digits.splice(-pattern.gSize, digits.length).join(''));\n }\n if (digits.length) {\n groups.unshift(digits.join(''));\n }\n formattedText = groups.join(getLocaleNumberSymbol(locale, groupSymbol));\n // append the decimal digits\n if (decimals.length) {\n formattedText += getLocaleNumberSymbol(locale, decimalSymbol) + decimals.join('');\n }\n if (exponent) {\n formattedText += getLocaleNumberSymbol(locale, NumberSymbol.Exponential) + '+' + exponent;\n }\n }\n if (value < 0 && !isZero) {\n formattedText = pattern.negPre + formattedText + pattern.negSuf;\n }\n else {\n formattedText = pattern.posPre + formattedText + pattern.posSuf;\n }\n return formattedText;\n}\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a number as currency using locale rules.\n *\n * @param value The number to format.\n * @param locale A locale code for the locale format rules to use.\n * @param currency A string containing the currency symbol or its name,\n * such as \"$\" or \"Canadian Dollar\". Used in output string, but does not affect the operation\n * of the function.\n * @param currencyCode The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217)\n * currency code, such as `USD` for the US dollar and `EUR` for the euro.\n * Used to determine the number of digits in the decimal part.\n * @param digitsInfo Decimal representation options, specified by a string in the following format:\n * `{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}`. See `DecimalPipe` for more details.\n *\n * @returns The formatted currency value.\n *\n * @see `formatNumber()`\n * @see `DecimalPipe`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction formatCurrency(value, locale, currency, currencyCode, digitsInfo) {\n const format = getLocaleNumberFormat(locale, NumberFormatStyle.Currency);\n const pattern = parseNumberFormat(format, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));\n pattern.minFrac = getNumberOfCurrencyDigits(currencyCode);\n pattern.maxFrac = pattern.minFrac;\n const res = formatNumberToLocaleString(value, pattern, locale, NumberSymbol.CurrencyGroup, NumberSymbol.CurrencyDecimal, digitsInfo);\n return res\n .replace(CURRENCY_CHAR, currency)\n // if we have 2 time the currency character, the second one is ignored\n .replace(CURRENCY_CHAR, '')\n // If there is a spacing between currency character and the value and\n // the currency character is supressed by passing an empty string, the\n // spacing character would remain as part of the string. Then we\n // should remove it.\n .trim();\n}\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a number as a percentage according to locale rules.\n *\n * @param value The number to format.\n * @param locale A locale code for the locale format rules to use.\n * @param digitsInfo Decimal representation options, specified by a string in the following format:\n * `{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}`. See `DecimalPipe` for more details.\n *\n * @returns The formatted percentage value.\n *\n * @see `formatNumber()`\n * @see `DecimalPipe`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n * @publicApi\n *\n */\nfunction formatPercent(value, locale, digitsInfo) {\n const format = getLocaleNumberFormat(locale, NumberFormatStyle.Percent);\n const pattern = parseNumberFormat(format, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));\n const res = formatNumberToLocaleString(value, pattern, locale, NumberSymbol.Group, NumberSymbol.Decimal, digitsInfo, true);\n return res.replace(new RegExp(PERCENT_CHAR, 'g'), getLocaleNumberSymbol(locale, NumberSymbol.PercentSign));\n}\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a number as text, with group sizing, separator, and other\n * parameters based on the locale.\n *\n * @param value The number to format.\n * @param locale A locale code for the locale format rules to use.\n * @param digitsInfo Decimal representation options, specified by a string in the following format:\n * `{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}`. See `DecimalPipe` for more details.\n *\n * @returns The formatted text string.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction formatNumber(value, locale, digitsInfo) {\n const format = getLocaleNumberFormat(locale, NumberFormatStyle.Decimal);\n const pattern = parseNumberFormat(format, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));\n return formatNumberToLocaleString(value, pattern, locale, NumberSymbol.Group, NumberSymbol.Decimal, digitsInfo);\n}\nfunction parseNumberFormat(format, minusSign = '-') {\n const p = {\n minInt: 1,\n minFrac: 0,\n maxFrac: 0,\n posPre: '',\n posSuf: '',\n negPre: '',\n negSuf: '',\n gSize: 0,\n lgSize: 0\n };\n const patternParts = format.split(PATTERN_SEP);\n const positive = patternParts[0];\n const negative = patternParts[1];\n const positiveParts = positive.indexOf(DECIMAL_SEP) !== -1 ?\n positive.split(DECIMAL_SEP) :\n [\n positive.substring(0, positive.lastIndexOf(ZERO_CHAR) + 1),\n positive.substring(positive.lastIndexOf(ZERO_CHAR) + 1)\n ], integer = positiveParts[0], fraction = positiveParts[1] || '';\n p.posPre = integer.substr(0, integer.indexOf(DIGIT_CHAR));\n for (let i = 0; i < fraction.length; i++) {\n const ch = fraction.charAt(i);\n if (ch === ZERO_CHAR) {\n p.minFrac = p.maxFrac = i + 1;\n }\n else if (ch === DIGIT_CHAR) {\n p.maxFrac = i + 1;\n }\n else {\n p.posSuf += ch;\n }\n }\n const groups = integer.split(GROUP_SEP);\n p.gSize = groups[1] ? groups[1].length : 0;\n p.lgSize = (groups[2] || groups[1]) ? (groups[2] || groups[1]).length : 0;\n if (negative) {\n const trunkLen = positive.length - p.posPre.length - p.posSuf.length, pos = negative.indexOf(DIGIT_CHAR);\n p.negPre = negative.substr(0, pos).replace(/'/g, '');\n p.negSuf = negative.substr(pos + trunkLen).replace(/'/g, '');\n }\n else {\n p.negPre = minusSign + p.posPre;\n p.negSuf = p.posSuf;\n }\n return p;\n}\n// Transforms a parsed number into a percentage by multiplying it by 100\nfunction toPercent(parsedNumber) {\n // if the number is 0, don't do anything\n if (parsedNumber.digits[0] === 0) {\n return parsedNumber;\n }\n // Getting the current number of decimals\n const fractionLen = parsedNumber.digits.length - parsedNumber.integerLen;\n if (parsedNumber.exponent) {\n parsedNumber.exponent += 2;\n }\n else {\n if (fractionLen === 0) {\n parsedNumber.digits.push(0, 0);\n }\n else if (fractionLen === 1) {\n parsedNumber.digits.push(0);\n }\n parsedNumber.integerLen += 2;\n }\n return parsedNumber;\n}\n/**\n * Parses a number.\n * Significant bits of this parse algorithm came from https://github.com/MikeMcl/big.js/\n */\nfunction parseNumber(num) {\n let numStr = Math.abs(num) + '';\n let exponent = 0, digits, integerLen;\n let i, j, zeros;\n // Decimal point?\n if ((integerLen = numStr.indexOf(DECIMAL_SEP)) > -1) {\n numStr = numStr.replace(DECIMAL_SEP, '');\n }\n // Exponential form?\n if ((i = numStr.search(/e/i)) > 0) {\n // Work out the exponent.\n if (integerLen < 0)\n integerLen = i;\n integerLen += +numStr.slice(i + 1);\n numStr = numStr.substring(0, i);\n }\n else if (integerLen < 0) {\n // There was no decimal point or exponent so it is an integer.\n integerLen = numStr.length;\n }\n // Count the number of leading zeros.\n for (i = 0; numStr.charAt(i) === ZERO_CHAR; i++) { /* empty */\n }\n if (i === (zeros = numStr.length)) {\n // The digits are all zero.\n digits = [0];\n integerLen = 1;\n }\n else {\n // Count the number of trailing zeros\n zeros--;\n while (numStr.charAt(zeros) === ZERO_CHAR)\n zeros--;\n // Trailing zeros are insignificant so ignore them\n integerLen -= i;\n digits = [];\n // Convert string to array of digits without leading/trailing zeros.\n for (j = 0; i <= zeros; i++, j++) {\n digits[j] = Number(numStr.charAt(i));\n }\n }\n // If the number overflows the maximum allowed digits then use an exponent.\n if (integerLen > MAX_DIGITS) {\n digits = digits.splice(0, MAX_DIGITS - 1);\n exponent = integerLen - 1;\n integerLen = 1;\n }\n return { digits, exponent, integerLen };\n}\n/**\n * Round the parsed number to the specified number of decimal places\n * This function changes the parsedNumber in-place\n */\nfunction roundNumber(parsedNumber, minFrac, maxFrac) {\n if (minFrac > maxFrac) {\n throw new Error(`The minimum number of digits after fraction (${minFrac}) is higher than the maximum (${maxFrac}).`);\n }\n let digits = parsedNumber.digits;\n let fractionLen = digits.length - parsedNumber.integerLen;\n const fractionSize = Math.min(Math.max(minFrac, fractionLen), maxFrac);\n // The index of the digit to where rounding is to occur\n let roundAt = fractionSize + parsedNumber.integerLen;\n let digit = digits[roundAt];\n if (roundAt > 0) {\n // Drop fractional digits beyond `roundAt`\n digits.splice(Math.max(parsedNumber.integerLen, roundAt));\n // Set non-fractional digits beyond `roundAt` to 0\n for (let j = roundAt; j < digits.length; j++) {\n digits[j] = 0;\n }\n }\n else {\n // We rounded to zero so reset the parsedNumber\n fractionLen = Math.max(0, fractionLen);\n parsedNumber.integerLen = 1;\n digits.length = Math.max(1, roundAt = fractionSize + 1);\n digits[0] = 0;\n for (let i = 1; i < roundAt; i++)\n digits[i] = 0;\n }\n if (digit >= 5) {\n if (roundAt - 1 < 0) {\n for (let k = 0; k > roundAt; k--) {\n digits.unshift(0);\n parsedNumber.integerLen++;\n }\n digits.unshift(1);\n parsedNumber.integerLen++;\n }\n else {\n digits[roundAt - 1]++;\n }\n }\n // Pad out with zeros to get the required fraction length\n for (; fractionLen < Math.max(0, fractionSize); fractionLen++)\n digits.push(0);\n let dropTrailingZeros = fractionSize !== 0;\n // Minimal length = nb of decimals required + current nb of integers\n // Any number besides that is optional and can be removed if it's a trailing 0\n const minLen = minFrac + parsedNumber.integerLen;\n // Do any carrying, e.g. a digit was rounded up to 10\n const carry = digits.reduceRight(function (carry, d, i, digits) {\n d = d + carry;\n digits[i] = d < 10 ? d : d - 10; // d % 10\n if (dropTrailingZeros) {\n // Do not keep meaningless fractional trailing zeros (e.g. 15.52000 --> 15.52)\n if (digits[i] === 0 && i >= minLen) {\n digits.pop();\n }\n else {\n dropTrailingZeros = false;\n }\n }\n return d >= 10 ? 1 : 0; // Math.floor(d / 10);\n }, 0);\n if (carry) {\n digits.unshift(carry);\n parsedNumber.integerLen++;\n }\n}\nfunction parseIntAutoRadix(text) {\n const result = parseInt(text);\n if (isNaN(result)) {\n throw new Error('Invalid integer literal when parsing ' + text);\n }\n return result;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @publicApi\n */\nclass NgLocalization {\n}\n/**\n * Returns the plural category for a given value.\n * - \"=value\" when the case exists,\n * - the plural category otherwise\n */\nfunction getPluralCategory(value, cases, ngLocalization, locale) {\n let key = `=${value}`;\n if (cases.indexOf(key) > -1) {\n return key;\n }\n key = ngLocalization.getPluralCategory(value, locale);\n if (cases.indexOf(key) > -1) {\n return key;\n }\n if (cases.indexOf('other') > -1) {\n return 'other';\n }\n throw new Error(`No plural message found for value \"${value}\"`);\n}\n/**\n * Returns the plural case based on the locale\n *\n * @publicApi\n */\nclass NgLocaleLocalization extends NgLocalization {\n constructor(locale) {\n super();\n this.locale = locale;\n }\n getPluralCategory(value, locale) {\n const plural = getLocalePluralCase(locale || this.locale)(value);\n switch (plural) {\n case Plural.Zero:\n return 'zero';\n case Plural.One:\n return 'one';\n case Plural.Two:\n return 'two';\n case Plural.Few:\n return 'few';\n case Plural.Many:\n return 'many';\n default:\n return 'other';\n }\n }\n}\nNgLocaleLocalization.ɵfac = function NgLocaleLocalization_Factory(t) { return new (t || NgLocaleLocalization)(ɵngcc0.ɵɵinject(LOCALE_ID)); };\nNgLocaleLocalization.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgLocaleLocalization, factory: NgLocaleLocalization.ɵfac });\nNgLocaleLocalization.ctorParameters = () => [\n { type: String, decorators: [{ type: Inject, args: [LOCALE_ID,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgLocaleLocalization, [{\n type: Injectable\n }], function () { return [{ type: String, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; }, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Register global data to be used internally by Angular. See the\n * [\"I18n guide\"](guide/i18n-common-format-data-locale) to know how to import additional locale\n * data.\n *\n * The signature registerLocaleData(data: any, extraData?: any) is deprecated since v5.1\n *\n * @publicApi\n */\nfunction registerLocaleData(data, localeId, extraData) {\n return ɵregisterLocaleData(data, localeId, extraData);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction parseCookieValue(cookieStr, name) {\n name = encodeURIComponent(name);\n for (const cookie of cookieStr.split(';')) {\n const eqIndex = cookie.indexOf('=');\n const [cookieName, cookieValue] = eqIndex == -1 ? [cookie, ''] : [cookie.slice(0, eqIndex), cookie.slice(eqIndex + 1)];\n if (cookieName.trim() === name) {\n return decodeURIComponent(cookieValue);\n }\n }\n return null;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n *\n * @usageNotes\n * ```\n * ...\n *\n * ...\n *\n * ...\n *\n * ...\n *\n * ...\n * ```\n *\n * @description\n *\n * Adds and removes CSS classes on an HTML element.\n *\n * The CSS classes are updated as follows, depending on the type of the expression evaluation:\n * - `string` - the CSS classes listed in the string (space delimited) are added,\n * - `Array` - the CSS classes declared as Array elements are added,\n * - `Object` - keys are CSS classes that get added when the expression given in the value\n * evaluates to a truthy value, otherwise they are removed.\n *\n * @publicApi\n */\nclass NgClass {\n constructor(_iterableDiffers, _keyValueDiffers, _ngEl, _renderer) {\n this._iterableDiffers = _iterableDiffers;\n this._keyValueDiffers = _keyValueDiffers;\n this._ngEl = _ngEl;\n this._renderer = _renderer;\n this._iterableDiffer = null;\n this._keyValueDiffer = null;\n this._initialClasses = [];\n this._rawClass = null;\n }\n set klass(value) {\n this._removeClasses(this._initialClasses);\n this._initialClasses = typeof value === 'string' ? value.split(/\\s+/) : [];\n this._applyClasses(this._initialClasses);\n this._applyClasses(this._rawClass);\n }\n set ngClass(value) {\n this._removeClasses(this._rawClass);\n this._applyClasses(this._initialClasses);\n this._iterableDiffer = null;\n this._keyValueDiffer = null;\n this._rawClass = typeof value === 'string' ? value.split(/\\s+/) : value;\n if (this._rawClass) {\n if (ɵisListLikeIterable(this._rawClass)) {\n this._iterableDiffer = this._iterableDiffers.find(this._rawClass).create();\n }\n else {\n this._keyValueDiffer = this._keyValueDiffers.find(this._rawClass).create();\n }\n }\n }\n ngDoCheck() {\n if (this._iterableDiffer) {\n const iterableChanges = this._iterableDiffer.diff(this._rawClass);\n if (iterableChanges) {\n this._applyIterableChanges(iterableChanges);\n }\n }\n else if (this._keyValueDiffer) {\n const keyValueChanges = this._keyValueDiffer.diff(this._rawClass);\n if (keyValueChanges) {\n this._applyKeyValueChanges(keyValueChanges);\n }\n }\n }\n _applyKeyValueChanges(changes) {\n changes.forEachAddedItem((record) => this._toggleClass(record.key, record.currentValue));\n changes.forEachChangedItem((record) => this._toggleClass(record.key, record.currentValue));\n changes.forEachRemovedItem((record) => {\n if (record.previousValue) {\n this._toggleClass(record.key, false);\n }\n });\n }\n _applyIterableChanges(changes) {\n changes.forEachAddedItem((record) => {\n if (typeof record.item === 'string') {\n this._toggleClass(record.item, true);\n }\n else {\n throw new Error(`NgClass can only toggle CSS classes expressed as strings, got ${ɵstringify(record.item)}`);\n }\n });\n changes.forEachRemovedItem((record) => this._toggleClass(record.item, false));\n }\n /**\n * Applies a collection of CSS classes to the DOM element.\n *\n * For argument of type Set and Array CSS class names contained in those collections are always\n * added.\n * For argument of type Map CSS class name in the map's key is toggled based on the value (added\n * for truthy and removed for falsy).\n */\n _applyClasses(rawClassVal) {\n if (rawClassVal) {\n if (Array.isArray(rawClassVal) || rawClassVal instanceof Set) {\n rawClassVal.forEach((klass) => this._toggleClass(klass, true));\n }\n else {\n Object.keys(rawClassVal).forEach(klass => this._toggleClass(klass, !!rawClassVal[klass]));\n }\n }\n }\n /**\n * Removes a collection of CSS classes from the DOM element. This is mostly useful for cleanup\n * purposes.\n */\n _removeClasses(rawClassVal) {\n if (rawClassVal) {\n if (Array.isArray(rawClassVal) || rawClassVal instanceof Set) {\n rawClassVal.forEach((klass) => this._toggleClass(klass, false));\n }\n else {\n Object.keys(rawClassVal).forEach(klass => this._toggleClass(klass, false));\n }\n }\n }\n _toggleClass(klass, enabled) {\n klass = klass.trim();\n if (klass) {\n klass.split(/\\s+/g).forEach(klass => {\n if (enabled) {\n this._renderer.addClass(this._ngEl.nativeElement, klass);\n }\n else {\n this._renderer.removeClass(this._ngEl.nativeElement, klass);\n }\n });\n }\n }\n}\nNgClass.ɵfac = function NgClass_Factory(t) { return new (t || NgClass)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.IterableDiffers), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.KeyValueDiffers), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nNgClass.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgClass, selectors: [[\"\", \"ngClass\", \"\"]], inputs: { klass: [\"class\", \"klass\"], ngClass: \"ngClass\" } });\nNgClass.ctorParameters = () => [\n { type: IterableDiffers },\n { type: KeyValueDiffers },\n { type: ElementRef },\n { type: Renderer2 }\n];\nNgClass.propDecorators = {\n klass: [{ type: Input, args: ['class',] }],\n ngClass: [{ type: Input, args: ['ngClass',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgClass, [{\n type: Directive,\n args: [{ selector: '[ngClass]' }]\n }], function () { return [{ type: ɵngcc0.IterableDiffers }, { type: ɵngcc0.KeyValueDiffers }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }]; }, { klass: [{\n type: Input,\n args: ['class']\n }], ngClass: [{\n type: Input,\n args: ['ngClass']\n }] }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Instantiates a {@link Component} type and inserts its Host View into the current View.\n * `NgComponentOutlet` provides a declarative approach for dynamic component creation.\n *\n * `NgComponentOutlet` requires a component type, if a falsy value is set the view will clear and\n * any existing component will be destroyed.\n *\n * @usageNotes\n *\n * ### Fine tune control\n *\n * You can control the component creation process by using the following optional attributes:\n *\n * * `ngComponentOutletInjector`: Optional custom {@link Injector} that will be used as parent for\n * the Component. Defaults to the injector of the current view container.\n *\n * * `ngComponentOutletContent`: Optional list of projectable nodes to insert into the content\n * section of the component, if it exists.\n *\n * * `ngComponentOutletNgModuleFactory`: Optional module factory to allow loading another\n * module dynamically, then loading a component from that module.\n *\n * ### Syntax\n *\n * Simple\n * ```\n * \n * ```\n *\n * Customized injector/content\n * ```\n * \n * \n * ```\n *\n * Customized ngModuleFactory\n * ```\n * \n * \n * ```\n *\n * ### A simple example\n *\n * {@example common/ngComponentOutlet/ts/module.ts region='SimpleExample'}\n *\n * A more complete example with additional options:\n *\n * {@example common/ngComponentOutlet/ts/module.ts region='CompleteExample'}\n *\n * @publicApi\n * @ngModule CommonModule\n */\nclass NgComponentOutlet {\n constructor(_viewContainerRef) {\n this._viewContainerRef = _viewContainerRef;\n this._componentRef = null;\n this._moduleRef = null;\n }\n ngOnChanges(changes) {\n this._viewContainerRef.clear();\n this._componentRef = null;\n if (this.ngComponentOutlet) {\n const elInjector = this.ngComponentOutletInjector || this._viewContainerRef.parentInjector;\n if (changes['ngComponentOutletNgModuleFactory']) {\n if (this._moduleRef)\n this._moduleRef.destroy();\n if (this.ngComponentOutletNgModuleFactory) {\n const parentModule = elInjector.get(NgModuleRef);\n this._moduleRef = this.ngComponentOutletNgModuleFactory.create(parentModule.injector);\n }\n else {\n this._moduleRef = null;\n }\n }\n const componentFactoryResolver = this._moduleRef ? this._moduleRef.componentFactoryResolver :\n elInjector.get(ComponentFactoryResolver);\n const componentFactory = componentFactoryResolver.resolveComponentFactory(this.ngComponentOutlet);\n this._componentRef = this._viewContainerRef.createComponent(componentFactory, this._viewContainerRef.length, elInjector, this.ngComponentOutletContent);\n }\n }\n ngOnDestroy() {\n if (this._moduleRef)\n this._moduleRef.destroy();\n }\n}\nNgComponentOutlet.ɵfac = function NgComponentOutlet_Factory(t) { return new (t || NgComponentOutlet)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef)); };\nNgComponentOutlet.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgComponentOutlet, selectors: [[\"\", \"ngComponentOutlet\", \"\"]], inputs: { ngComponentOutlet: \"ngComponentOutlet\", ngComponentOutletInjector: \"ngComponentOutletInjector\", ngComponentOutletContent: \"ngComponentOutletContent\", ngComponentOutletNgModuleFactory: \"ngComponentOutletNgModuleFactory\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\nNgComponentOutlet.ctorParameters = () => [\n { type: ViewContainerRef }\n];\nNgComponentOutlet.propDecorators = {\n ngComponentOutlet: [{ type: Input }],\n ngComponentOutletInjector: [{ type: Input }],\n ngComponentOutletContent: [{ type: Input }],\n ngComponentOutletNgModuleFactory: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgComponentOutlet, [{\n type: Directive,\n args: [{ selector: '[ngComponentOutlet]' }]\n }], function () { return [{ type: ɵngcc0.ViewContainerRef }]; }, { ngComponentOutlet: [{\n type: Input\n }], ngComponentOutletInjector: [{\n type: Input\n }], ngComponentOutletContent: [{\n type: Input\n }], ngComponentOutletNgModuleFactory: [{\n type: Input\n }] }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @publicApi\n */\nclass NgForOfContext {\n constructor($implicit, ngForOf, index, count) {\n this.$implicit = $implicit;\n this.ngForOf = ngForOf;\n this.index = index;\n this.count = count;\n }\n get first() {\n return this.index === 0;\n }\n get last() {\n return this.index === this.count - 1;\n }\n get even() {\n return this.index % 2 === 0;\n }\n get odd() {\n return !this.even;\n }\n}\n/**\n * A [structural directive](guide/structural-directives) that renders\n * a template for each item in a collection.\n * The directive is placed on an element, which becomes the parent\n * of the cloned templates.\n *\n * The `ngForOf` directive is generally used in the\n * [shorthand form](guide/structural-directives#asterisk) `*ngFor`.\n * In this form, the template to be rendered for each iteration is the content\n * of an anchor element containing the directive.\n *\n * The following example shows the shorthand syntax with some options,\n * contained in an `
  • ` element.\n *\n * ```\n *
  • ...
  • \n * ```\n *\n * The shorthand form expands into a long form that uses the `ngForOf` selector\n * on an `` element.\n * The content of the `` element is the `
  • ` element that held the\n * short-form directive.\n *\n * Here is the expanded version of the short-form example.\n *\n * ```\n * \n *
  • ...
  • \n *
    \n * ```\n *\n * Angular automatically expands the shorthand syntax as it compiles the template.\n * The context for each embedded view is logically merged to the current component\n * context according to its lexical position.\n *\n * When using the shorthand syntax, Angular allows only [one structural directive\n * on an element](guide/built-in-directives#one-per-element).\n * If you want to iterate conditionally, for example,\n * put the `*ngIf` on a container element that wraps the `*ngFor` element.\n * For futher discussion, see\n * [Structural Directives](guide/built-in-directives#one-per-element).\n *\n * @usageNotes\n *\n * ### Local variables\n *\n * `NgForOf` provides exported values that can be aliased to local variables.\n * For example:\n *\n * ```\n *
  • \n * {{i}}/{{users.length}}. {{user}} default\n *
  • \n * ```\n *\n * The following exported values can be aliased to local variables:\n *\n * - `$implicit: T`: The value of the individual items in the iterable (`ngForOf`).\n * - `ngForOf: NgIterable`: The value of the iterable expression. Useful when the expression is\n * more complex then a property access, for example when using the async pipe (`userStreams |\n * async`).\n * - `index: number`: The index of the current item in the iterable.\n * - `count: number`: The length of the iterable.\n * - `first: boolean`: True when the item is the first item in the iterable.\n * - `last: boolean`: True when the item is the last item in the iterable.\n * - `even: boolean`: True when the item has an even index in the iterable.\n * - `odd: boolean`: True when the item has an odd index in the iterable.\n *\n * ### Change propagation\n *\n * When the contents of the iterator changes, `NgForOf` makes the corresponding changes to the DOM:\n *\n * * When an item is added, a new instance of the template is added to the DOM.\n * * When an item is removed, its template instance is removed from the DOM.\n * * When items are reordered, their respective templates are reordered in the DOM.\n *\n * Angular uses object identity to track insertions and deletions within the iterator and reproduce\n * those changes in the DOM. This has important implications for animations and any stateful\n * controls that are present, such as `` elements that accept user input. Inserted rows can\n * be animated in, deleted rows can be animated out, and unchanged rows retain any unsaved state\n * such as user input.\n * For more on animations, see [Transitions and Triggers](guide/transition-and-triggers).\n *\n * The identities of elements in the iterator can change while the data does not.\n * This can happen, for example, if the iterator is produced from an RPC to the server, and that\n * RPC is re-run. Even if the data hasn't changed, the second response produces objects with\n * different identities, and Angular must tear down the entire DOM and rebuild it (as if all old\n * elements were deleted and all new elements inserted).\n *\n * To avoid this expensive operation, you can customize the default tracking algorithm.\n * by supplying the `trackBy` option to `NgForOf`.\n * `trackBy` takes a function that has two arguments: `index` and `item`.\n * If `trackBy` is given, Angular tracks changes by the return value of the function.\n *\n * @see [Structural Directives](guide/structural-directives)\n * @ngModule CommonModule\n * @publicApi\n */\nclass NgForOf {\n constructor(_viewContainer, _template, _differs) {\n this._viewContainer = _viewContainer;\n this._template = _template;\n this._differs = _differs;\n this._ngForOf = null;\n this._ngForOfDirty = true;\n this._differ = null;\n }\n /**\n * The value of the iterable expression, which can be used as a\n * [template input variable](guide/structural-directives#shorthand).\n */\n set ngForOf(ngForOf) {\n this._ngForOf = ngForOf;\n this._ngForOfDirty = true;\n }\n /**\n * Specifies a custom `TrackByFunction` to compute the identity of items in an iterable.\n *\n * If a custom `TrackByFunction` is not provided, `NgForOf` will use the item's [object\n * identity](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is)\n * as the key.\n *\n * `NgForOf` uses the computed key to associate items in an iterable with DOM elements\n * it produces for these items.\n *\n * A custom `TrackByFunction` is useful to provide good user experience in cases when items in an\n * iterable rendered using `NgForOf` have a natural identifier (for example, custom ID or a\n * primary key), and this iterable could be updated with new object instances that still\n * represent the same underlying entity (for example, when data is re-fetched from the server,\n * and the iterable is recreated and re-rendered, but most of the data is still the same).\n *\n * @see `TrackByFunction`\n */\n set ngForTrackBy(fn) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && fn != null && typeof fn !== 'function') {\n // TODO(vicb): use a log service once there is a public one available\n if (console && console.warn) {\n console.warn(`trackBy must be a function, but received ${JSON.stringify(fn)}. ` +\n `See https://angular.io/api/common/NgForOf#change-propagation for more information.`);\n }\n }\n this._trackByFn = fn;\n }\n get ngForTrackBy() {\n return this._trackByFn;\n }\n /**\n * A reference to the template that is stamped out for each item in the iterable.\n * @see [template reference variable](guide/template-reference-variables)\n */\n set ngForTemplate(value) {\n // TODO(TS2.1): make TemplateRef>> once we move to TS v2.1\n // The current type is too restrictive; a template that just uses index, for example,\n // should be acceptable.\n if (value) {\n this._template = value;\n }\n }\n /**\n * Applies the changes when needed.\n */\n ngDoCheck() {\n if (this._ngForOfDirty) {\n this._ngForOfDirty = false;\n // React on ngForOf changes only once all inputs have been initialized\n const value = this._ngForOf;\n if (!this._differ && value) {\n try {\n this._differ = this._differs.find(value).create(this.ngForTrackBy);\n }\n catch (_a) {\n throw new Error(`Cannot find a differ supporting object '${value}' of type '${getTypeName(value)}'. NgFor only supports binding to Iterables such as Arrays.`);\n }\n }\n }\n if (this._differ) {\n const changes = this._differ.diff(this._ngForOf);\n if (changes)\n this._applyChanges(changes);\n }\n }\n _applyChanges(changes) {\n const insertTuples = [];\n changes.forEachOperation((item, adjustedPreviousIndex, currentIndex) => {\n if (item.previousIndex == null) {\n // NgForOf is never \"null\" or \"undefined\" here because the differ detected\n // that a new item needs to be inserted from the iterable. This implies that\n // there is an iterable value for \"_ngForOf\".\n const view = this._viewContainer.createEmbeddedView(this._template, new NgForOfContext(null, this._ngForOf, -1, -1), currentIndex === null ? undefined : currentIndex);\n const tuple = new RecordViewTuple(item, view);\n insertTuples.push(tuple);\n }\n else if (currentIndex == null) {\n this._viewContainer.remove(adjustedPreviousIndex === null ? undefined : adjustedPreviousIndex);\n }\n else if (adjustedPreviousIndex !== null) {\n const view = this._viewContainer.get(adjustedPreviousIndex);\n this._viewContainer.move(view, currentIndex);\n const tuple = new RecordViewTuple(item, view);\n insertTuples.push(tuple);\n }\n });\n for (let i = 0; i < insertTuples.length; i++) {\n this._perViewChange(insertTuples[i].view, insertTuples[i].record);\n }\n for (let i = 0, ilen = this._viewContainer.length; i < ilen; i++) {\n const viewRef = this._viewContainer.get(i);\n viewRef.context.index = i;\n viewRef.context.count = ilen;\n viewRef.context.ngForOf = this._ngForOf;\n }\n changes.forEachIdentityChange((record) => {\n const viewRef = this._viewContainer.get(record.currentIndex);\n viewRef.context.$implicit = record.item;\n });\n }\n _perViewChange(view, record) {\n view.context.$implicit = record.item;\n }\n /**\n * Asserts the correct type of the context for the template that `NgForOf` will render.\n *\n * The presence of this method is a signal to the Ivy template type-check compiler that the\n * `NgForOf` structural directive renders its template with a specific context type.\n */\n static ngTemplateContextGuard(dir, ctx) {\n return true;\n }\n}\nNgForOf.ɵfac = function NgForOf_Factory(t) { return new (t || NgForOf)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.IterableDiffers)); };\nNgForOf.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgForOf, selectors: [[\"\", \"ngFor\", \"\", \"ngForOf\", \"\"]], inputs: { ngForOf: \"ngForOf\", ngForTrackBy: \"ngForTrackBy\", ngForTemplate: \"ngForTemplate\" } });\nNgForOf.ctorParameters = () => [\n { type: ViewContainerRef },\n { type: TemplateRef },\n { type: IterableDiffers }\n];\nNgForOf.propDecorators = {\n ngForOf: [{ type: Input }],\n ngForTrackBy: [{ type: Input }],\n ngForTemplate: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgForOf, [{\n type: Directive,\n args: [{ selector: '[ngFor][ngForOf]' }]\n }], function () { return [{ type: ɵngcc0.ViewContainerRef }, { type: ɵngcc0.TemplateRef }, { type: ɵngcc0.IterableDiffers }]; }, { ngForOf: [{\n type: Input\n }], ngForTrackBy: [{\n type: Input\n }], ngForTemplate: [{\n type: Input\n }] }); })();\nclass RecordViewTuple {\n constructor(record, view) {\n this.record = record;\n this.view = view;\n }\n}\nfunction getTypeName(type) {\n return type['name'] || typeof type;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A structural directive that conditionally includes a template based on the value of\n * an expression coerced to Boolean.\n * When the expression evaluates to true, Angular renders the template\n * provided in a `then` clause, and when false or null,\n * Angular renders the template provided in an optional `else` clause. The default\n * template for the `else` clause is blank.\n *\n * A [shorthand form](guide/structural-directives#asterisk) of the directive,\n * `*ngIf=\"condition\"`, is generally used, provided\n * as an attribute of the anchor element for the inserted template.\n * Angular expands this into a more explicit version, in which the anchor element\n * is contained in an `` element.\n *\n * Simple form with shorthand syntax:\n *\n * ```\n *
    Content to render when condition is true.
    \n * ```\n *\n * Simple form with expanded syntax:\n *\n * ```\n *
    Content to render when condition is\n * true.
    \n * ```\n *\n * Form with an \"else\" block:\n *\n * ```\n *
    Content to render when condition is true.
    \n * Content to render when condition is false.\n * ```\n *\n * Shorthand form with \"then\" and \"else\" blocks:\n *\n * ```\n *
    \n * Content to render when condition is true.\n * Content to render when condition is false.\n * ```\n *\n * Form with storing the value locally:\n *\n * ```\n *
    {{value}}
    \n * Content to render when value is null.\n * ```\n *\n * @usageNotes\n *\n * The `*ngIf` directive is most commonly used to conditionally show an inline template,\n * as seen in the following example.\n * The default `else` template is blank.\n *\n * {@example common/ngIf/ts/module.ts region='NgIfSimple'}\n *\n * ### Showing an alternative template using `else`\n *\n * To display a template when `expression` evaluates to false, use an `else` template\n * binding as shown in the following example.\n * The `else` binding points to an `` element labeled `#elseBlock`.\n * The template can be defined anywhere in the component view, but is typically placed right after\n * `ngIf` for readability.\n *\n * {@example common/ngIf/ts/module.ts region='NgIfElse'}\n *\n * ### Using an external `then` template\n *\n * In the previous example, the then-clause template is specified inline, as the content of the\n * tag that contains the `ngIf` directive. You can also specify a template that is defined\n * externally, by referencing a labeled `` element. When you do this, you can\n * change which template to use at runtime, as shown in the following example.\n *\n * {@example common/ngIf/ts/module.ts region='NgIfThenElse'}\n *\n * ### Storing a conditional result in a variable\n *\n * You might want to show a set of properties from the same object. If you are waiting\n * for asynchronous data, the object can be undefined.\n * In this case, you can use `ngIf` and store the result of the condition in a local\n * variable as shown in the following example.\n *\n * {@example common/ngIf/ts/module.ts region='NgIfAs'}\n *\n * This code uses only one `AsyncPipe`, so only one subscription is created.\n * The conditional statement stores the result of `userStream|async` in the local variable `user`.\n * You can then bind the local `user` repeatedly.\n *\n * The conditional displays the data only if `userStream` returns a value,\n * so you don't need to use the\n * safe-navigation-operator (`?.`)\n * to guard against null values when accessing properties.\n * You can display an alternative template while waiting for the data.\n *\n * ### Shorthand syntax\n *\n * The shorthand syntax `*ngIf` expands into two separate template specifications\n * for the \"then\" and \"else\" clauses. For example, consider the following shorthand statement,\n * that is meant to show a loading page while waiting for data to be loaded.\n *\n * ```\n *
    \n * ...\n *
    \n *\n * \n *
    Loading...
    \n *
    \n * ```\n *\n * You can see that the \"else\" clause references the ``\n * with the `#loading` label, and the template for the \"then\" clause\n * is provided as the content of the anchor element.\n *\n * However, when Angular expands the shorthand syntax, it creates\n * another `` tag, with `ngIf` and `ngIfElse` directives.\n * The anchor element containing the template for the \"then\" clause becomes\n * the content of this unlabeled `` tag.\n *\n * ```\n * \n *
    \n * ...\n *
    \n *
    \n *\n * \n *
    Loading...
    \n *
    \n * ```\n *\n * The presence of the implicit template object has implications for the nesting of\n * structural directives. For more on this subject, see\n * [Structural Directives](https://angular.io/guide/built-in-directives#one-per-element).\n *\n * @ngModule CommonModule\n * @publicApi\n */\nclass NgIf {\n constructor(_viewContainer, templateRef) {\n this._viewContainer = _viewContainer;\n this._context = new NgIfContext();\n this._thenTemplateRef = null;\n this._elseTemplateRef = null;\n this._thenViewRef = null;\n this._elseViewRef = null;\n this._thenTemplateRef = templateRef;\n }\n /**\n * The Boolean expression to evaluate as the condition for showing a template.\n */\n set ngIf(condition) {\n this._context.$implicit = this._context.ngIf = condition;\n this._updateView();\n }\n /**\n * A template to show if the condition expression evaluates to true.\n */\n set ngIfThen(templateRef) {\n assertTemplate('ngIfThen', templateRef);\n this._thenTemplateRef = templateRef;\n this._thenViewRef = null; // clear previous view if any.\n this._updateView();\n }\n /**\n * A template to show if the condition expression evaluates to false.\n */\n set ngIfElse(templateRef) {\n assertTemplate('ngIfElse', templateRef);\n this._elseTemplateRef = templateRef;\n this._elseViewRef = null; // clear previous view if any.\n this._updateView();\n }\n _updateView() {\n if (this._context.$implicit) {\n if (!this._thenViewRef) {\n this._viewContainer.clear();\n this._elseViewRef = null;\n if (this._thenTemplateRef) {\n this._thenViewRef =\n this._viewContainer.createEmbeddedView(this._thenTemplateRef, this._context);\n }\n }\n }\n else {\n if (!this._elseViewRef) {\n this._viewContainer.clear();\n this._thenViewRef = null;\n if (this._elseTemplateRef) {\n this._elseViewRef =\n this._viewContainer.createEmbeddedView(this._elseTemplateRef, this._context);\n }\n }\n }\n }\n /**\n * Asserts the correct type of the context for the template that `NgIf` will render.\n *\n * The presence of this method is a signal to the Ivy template type-check compiler that the\n * `NgIf` structural directive renders its template with a specific context type.\n */\n static ngTemplateContextGuard(dir, ctx) {\n return true;\n }\n}\nNgIf.ɵfac = function NgIf_Factory(t) { return new (t || NgIf)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgIf.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgIf, selectors: [[\"\", \"ngIf\", \"\"]], inputs: { ngIf: \"ngIf\", ngIfThen: \"ngIfThen\", ngIfElse: \"ngIfElse\" } });\nNgIf.ctorParameters = () => [\n { type: ViewContainerRef },\n { type: TemplateRef }\n];\nNgIf.propDecorators = {\n ngIf: [{ type: Input }],\n ngIfThen: [{ type: Input }],\n ngIfElse: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgIf, [{\n type: Directive,\n args: [{ selector: '[ngIf]' }]\n }], function () { return [{ type: ɵngcc0.ViewContainerRef }, { type: ɵngcc0.TemplateRef }]; }, { ngIf: [{\n type: Input\n }], ngIfThen: [{\n type: Input\n }], ngIfElse: [{\n type: Input\n }] }); })();\n/**\n * @publicApi\n */\nclass NgIfContext {\n constructor() {\n this.$implicit = null;\n this.ngIf = null;\n }\n}\nfunction assertTemplate(property, templateRef) {\n const isTemplateRefOrNull = !!(!templateRef || templateRef.createEmbeddedView);\n if (!isTemplateRefOrNull) {\n throw new Error(`${property} must be a TemplateRef, but received '${ɵstringify(templateRef)}'.`);\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass SwitchView {\n constructor(_viewContainerRef, _templateRef) {\n this._viewContainerRef = _viewContainerRef;\n this._templateRef = _templateRef;\n this._created = false;\n }\n create() {\n this._created = true;\n this._viewContainerRef.createEmbeddedView(this._templateRef);\n }\n destroy() {\n this._created = false;\n this._viewContainerRef.clear();\n }\n enforceState(created) {\n if (created && !this._created) {\n this.create();\n }\n else if (!created && this._created) {\n this.destroy();\n }\n }\n}\n/**\n * @ngModule CommonModule\n *\n * @description\n * The `[ngSwitch]` directive on a container specifies an expression to match against.\n * The expressions to match are provided by `ngSwitchCase` directives on views within the container.\n * - Every view that matches is rendered.\n * - If there are no matches, a view with the `ngSwitchDefault` directive is rendered.\n * - Elements within the `[NgSwitch]` statement but outside of any `NgSwitchCase`\n * or `ngSwitchDefault` directive are preserved at the location.\n *\n * @usageNotes\n * Define a container element for the directive, and specify the switch expression\n * to match against as an attribute:\n *\n * ```\n * \n * ```\n *\n * Within the container, `*ngSwitchCase` statements specify the match expressions\n * as attributes. Include `*ngSwitchDefault` as the final case.\n *\n * ```\n * \n * ...\n * ...\n * ...\n * \n * ```\n *\n * ### Usage Examples\n *\n * The following example shows how to use more than one case to display the same view:\n *\n * ```\n * \n * \n * ...\n * ...\n * ...\n * \n * ...\n * \n * ```\n *\n * The following example shows how cases can be nested:\n * ```\n * \n * ...\n * ...\n * ...\n * \n * \n * \n * \n * \n * ...\n * \n * ```\n *\n * @publicApi\n * @see `NgSwitchCase`\n * @see `NgSwitchDefault`\n * @see [Structural Directives](guide/structural-directives)\n *\n */\nclass NgSwitch {\n constructor() {\n this._defaultUsed = false;\n this._caseCount = 0;\n this._lastCaseCheckIndex = 0;\n this._lastCasesMatched = false;\n }\n set ngSwitch(newValue) {\n this._ngSwitch = newValue;\n if (this._caseCount === 0) {\n this._updateDefaultCases(true);\n }\n }\n /** @internal */\n _addCase() {\n return this._caseCount++;\n }\n /** @internal */\n _addDefault(view) {\n if (!this._defaultViews) {\n this._defaultViews = [];\n }\n this._defaultViews.push(view);\n }\n /** @internal */\n _matchCase(value) {\n const matched = value == this._ngSwitch;\n this._lastCasesMatched = this._lastCasesMatched || matched;\n this._lastCaseCheckIndex++;\n if (this._lastCaseCheckIndex === this._caseCount) {\n this._updateDefaultCases(!this._lastCasesMatched);\n this._lastCaseCheckIndex = 0;\n this._lastCasesMatched = false;\n }\n return matched;\n }\n _updateDefaultCases(useDefault) {\n if (this._defaultViews && useDefault !== this._defaultUsed) {\n this._defaultUsed = useDefault;\n for (let i = 0; i < this._defaultViews.length; i++) {\n const defaultView = this._defaultViews[i];\n defaultView.enforceState(useDefault);\n }\n }\n }\n}\nNgSwitch.ɵfac = function NgSwitch_Factory(t) { return new (t || NgSwitch)(); };\nNgSwitch.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgSwitch, selectors: [[\"\", \"ngSwitch\", \"\"]], inputs: { ngSwitch: \"ngSwitch\" } });\nNgSwitch.propDecorators = {\n ngSwitch: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgSwitch, [{\n type: Directive,\n args: [{ selector: '[ngSwitch]' }]\n }], function () { return []; }, { ngSwitch: [{\n type: Input\n }] }); })();\n/**\n * @ngModule CommonModule\n *\n * @description\n * Provides a switch case expression to match against an enclosing `ngSwitch` expression.\n * When the expressions match, the given `NgSwitchCase` template is rendered.\n * If multiple match expressions match the switch expression value, all of them are displayed.\n *\n * @usageNotes\n *\n * Within a switch container, `*ngSwitchCase` statements specify the match expressions\n * as attributes. Include `*ngSwitchDefault` as the final case.\n *\n * ```\n * \n * ...\n * ...\n * ...\n * \n * ```\n *\n * Each switch-case statement contains an in-line HTML template or template reference\n * that defines the subtree to be selected if the value of the match expression\n * matches the value of the switch expression.\n *\n * Unlike JavaScript, which uses strict equality, Angular uses loose equality.\n * This means that the empty string, `\"\"` matches 0.\n *\n * @publicApi\n * @see `NgSwitch`\n * @see `NgSwitchDefault`\n *\n */\nclass NgSwitchCase {\n constructor(viewContainer, templateRef, ngSwitch) {\n this.ngSwitch = ngSwitch;\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !ngSwitch) {\n throwNgSwitchProviderNotFoundError('ngSwitchCase', 'NgSwitchCase');\n }\n ngSwitch._addCase();\n this._view = new SwitchView(viewContainer, templateRef);\n }\n /**\n * Performs case matching. For internal use only.\n */\n ngDoCheck() {\n this._view.enforceState(this.ngSwitch._matchCase(this.ngSwitchCase));\n }\n}\nNgSwitchCase.ɵfac = function NgSwitchCase_Factory(t) { return new (t || NgSwitchCase)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef), ɵngcc0.ɵɵdirectiveInject(NgSwitch, 9)); };\nNgSwitchCase.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgSwitchCase, selectors: [[\"\", \"ngSwitchCase\", \"\"]], inputs: { ngSwitchCase: \"ngSwitchCase\" } });\nNgSwitchCase.ctorParameters = () => [\n { type: ViewContainerRef },\n { type: TemplateRef },\n { type: NgSwitch, decorators: [{ type: Optional }, { type: Host }] }\n];\nNgSwitchCase.propDecorators = {\n ngSwitchCase: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgSwitchCase, [{\n type: Directive,\n args: [{ selector: '[ngSwitchCase]' }]\n }], function () { return [{ type: ɵngcc0.ViewContainerRef }, { type: ɵngcc0.TemplateRef }, { type: NgSwitch, decorators: [{\n type: Optional\n }, {\n type: Host\n }] }]; }, { ngSwitchCase: [{\n type: Input\n }] }); })();\n/**\n * @ngModule CommonModule\n *\n * @description\n *\n * Creates a view that is rendered when no `NgSwitchCase` expressions\n * match the `NgSwitch` expression.\n * This statement should be the final case in an `NgSwitch`.\n *\n * @publicApi\n * @see `NgSwitch`\n * @see `NgSwitchCase`\n *\n */\nclass NgSwitchDefault {\n constructor(viewContainer, templateRef, ngSwitch) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !ngSwitch) {\n throwNgSwitchProviderNotFoundError('ngSwitchDefault', 'NgSwitchDefault');\n }\n ngSwitch._addDefault(new SwitchView(viewContainer, templateRef));\n }\n}\nNgSwitchDefault.ɵfac = function NgSwitchDefault_Factory(t) { return new (t || NgSwitchDefault)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef), ɵngcc0.ɵɵdirectiveInject(NgSwitch, 9)); };\nNgSwitchDefault.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgSwitchDefault, selectors: [[\"\", \"ngSwitchDefault\", \"\"]] });\nNgSwitchDefault.ctorParameters = () => [\n { type: ViewContainerRef },\n { type: TemplateRef },\n { type: NgSwitch, decorators: [{ type: Optional }, { type: Host }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgSwitchDefault, [{\n type: Directive,\n args: [{ selector: '[ngSwitchDefault]' }]\n }], function () { return [{ type: ɵngcc0.ViewContainerRef }, { type: ɵngcc0.TemplateRef }, { type: NgSwitch, decorators: [{\n type: Optional\n }, {\n type: Host\n }] }]; }, null); })();\nfunction throwNgSwitchProviderNotFoundError(attrName, directiveName) {\n throw new ɵRuntimeError(\"305\" /* TEMPLATE_STRUCTURE_ERROR */, `An element with the \"${attrName}\" attribute ` +\n `(matching the \"${directiveName}\" directive) must be located inside an element with the \"ngSwitch\" attribute ` +\n `(matching \"NgSwitch\" directive)`);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n *\n * @usageNotes\n * ```\n * \n * there is nothing\n * there is one\n * there are a few\n * \n * ```\n *\n * @description\n *\n * Adds / removes DOM sub-trees based on a numeric value. Tailored for pluralization.\n *\n * Displays DOM sub-trees that match the switch expression value, or failing that, DOM sub-trees\n * that match the switch expression's pluralization category.\n *\n * To use this directive you must provide a container element that sets the `[ngPlural]` attribute\n * to a switch expression. Inner elements with a `[ngPluralCase]` will display based on their\n * expression:\n * - if `[ngPluralCase]` is set to a value starting with `=`, it will only display if the value\n * matches the switch expression exactly,\n * - otherwise, the view will be treated as a \"category match\", and will only display if exact\n * value matches aren't found and the value maps to its category for the defined locale.\n *\n * See http://cldr.unicode.org/index/cldr-spec/plural-rules\n *\n * @publicApi\n */\nclass NgPlural {\n constructor(_localization) {\n this._localization = _localization;\n this._caseViews = {};\n }\n set ngPlural(value) {\n this._switchValue = value;\n this._updateView();\n }\n addCase(value, switchView) {\n this._caseViews[value] = switchView;\n }\n _updateView() {\n this._clearViews();\n const cases = Object.keys(this._caseViews);\n const key = getPluralCategory(this._switchValue, cases, this._localization);\n this._activateView(this._caseViews[key]);\n }\n _clearViews() {\n if (this._activeView)\n this._activeView.destroy();\n }\n _activateView(view) {\n if (view) {\n this._activeView = view;\n this._activeView.create();\n }\n }\n}\nNgPlural.ɵfac = function NgPlural_Factory(t) { return new (t || NgPlural)(ɵngcc0.ɵɵdirectiveInject(NgLocalization)); };\nNgPlural.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgPlural, selectors: [[\"\", \"ngPlural\", \"\"]], inputs: { ngPlural: \"ngPlural\" } });\nNgPlural.ctorParameters = () => [\n { type: NgLocalization }\n];\nNgPlural.propDecorators = {\n ngPlural: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgPlural, [{\n type: Directive,\n args: [{ selector: '[ngPlural]' }]\n }], function () { return [{ type: NgLocalization }]; }, { ngPlural: [{\n type: Input\n }] }); })();\n/**\n * @ngModule CommonModule\n *\n * @description\n *\n * Creates a view that will be added/removed from the parent {@link NgPlural} when the\n * given expression matches the plural expression according to CLDR rules.\n *\n * @usageNotes\n * ```\n * \n * ...\n * ...\n * \n *```\n *\n * See {@link NgPlural} for more details and example.\n *\n * @publicApi\n */\nclass NgPluralCase {\n constructor(value, template, viewContainer, ngPlural) {\n this.value = value;\n const isANumber = !isNaN(Number(value));\n ngPlural.addCase(isANumber ? `=${value}` : value, new SwitchView(viewContainer, template));\n }\n}\nNgPluralCase.ɵfac = function NgPluralCase_Factory(t) { return new (t || NgPluralCase)(ɵngcc0.ɵɵinjectAttribute('ngPluralCase'), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(NgPlural, 1)); };\nNgPluralCase.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgPluralCase, selectors: [[\"\", \"ngPluralCase\", \"\"]] });\nNgPluralCase.ctorParameters = () => [\n { type: String, decorators: [{ type: Attribute, args: ['ngPluralCase',] }] },\n { type: TemplateRef },\n { type: ViewContainerRef },\n { type: NgPlural, decorators: [{ type: Host }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgPluralCase, [{\n type: Directive,\n args: [{ selector: '[ngPluralCase]' }]\n }], function () { return [{ type: String, decorators: [{\n type: Attribute,\n args: ['ngPluralCase']\n }] }, { type: ɵngcc0.TemplateRef }, { type: ɵngcc0.ViewContainerRef }, { type: NgPlural, decorators: [{\n type: Host\n }] }]; }, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n *\n * @usageNotes\n *\n * Set the font of the containing element to the result of an expression.\n *\n * ```\n * ...\n * ```\n *\n * Set the width of the containing element to a pixel value returned by an expression.\n *\n * ```\n * ...\n * ```\n *\n * Set a collection of style values using an expression that returns key-value pairs.\n *\n * ```\n * ...\n * ```\n *\n * @description\n *\n * An attribute directive that updates styles for the containing HTML element.\n * Sets one or more style properties, specified as colon-separated key-value pairs.\n * The key is a style name, with an optional `.` suffix\n * (such as 'top.px', 'font-style.em').\n * The value is an expression to be evaluated.\n * The resulting non-null value, expressed in the given unit,\n * is assigned to the given style property.\n * If the result of evaluation is null, the corresponding style is removed.\n *\n * @publicApi\n */\nclass NgStyle {\n constructor(_ngEl, _differs, _renderer) {\n this._ngEl = _ngEl;\n this._differs = _differs;\n this._renderer = _renderer;\n this._ngStyle = null;\n this._differ = null;\n }\n set ngStyle(values) {\n this._ngStyle = values;\n if (!this._differ && values) {\n this._differ = this._differs.find(values).create();\n }\n }\n ngDoCheck() {\n if (this._differ) {\n const changes = this._differ.diff(this._ngStyle);\n if (changes) {\n this._applyChanges(changes);\n }\n }\n }\n _setStyle(nameAndUnit, value) {\n const [name, unit] = nameAndUnit.split('.');\n value = value != null && unit ? `${value}${unit}` : value;\n if (value != null) {\n this._renderer.setStyle(this._ngEl.nativeElement, name, value);\n }\n else {\n this._renderer.removeStyle(this._ngEl.nativeElement, name);\n }\n }\n _applyChanges(changes) {\n changes.forEachRemovedItem((record) => this._setStyle(record.key, null));\n changes.forEachAddedItem((record) => this._setStyle(record.key, record.currentValue));\n changes.forEachChangedItem((record) => this._setStyle(record.key, record.currentValue));\n }\n}\nNgStyle.ɵfac = function NgStyle_Factory(t) { return new (t || NgStyle)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.KeyValueDiffers), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nNgStyle.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgStyle, selectors: [[\"\", \"ngStyle\", \"\"]], inputs: { ngStyle: \"ngStyle\" } });\nNgStyle.ctorParameters = () => [\n { type: ElementRef },\n { type: KeyValueDiffers },\n { type: Renderer2 }\n];\nNgStyle.propDecorators = {\n ngStyle: [{ type: Input, args: ['ngStyle',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgStyle, [{\n type: Directive,\n args: [{ selector: '[ngStyle]' }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.KeyValueDiffers }, { type: ɵngcc0.Renderer2 }]; }, { ngStyle: [{\n type: Input,\n args: ['ngStyle']\n }] }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n *\n * @description\n *\n * Inserts an embedded view from a prepared `TemplateRef`.\n *\n * You can attach a context object to the `EmbeddedViewRef` by setting `[ngTemplateOutletContext]`.\n * `[ngTemplateOutletContext]` should be an object, the object's keys will be available for binding\n * by the local template `let` declarations.\n *\n * @usageNotes\n * ```\n * \n * ```\n *\n * Using the key `$implicit` in the context object will set its value as default.\n *\n * ### Example\n *\n * {@example common/ngTemplateOutlet/ts/module.ts region='NgTemplateOutlet'}\n *\n * @publicApi\n */\nclass NgTemplateOutlet {\n constructor(_viewContainerRef) {\n this._viewContainerRef = _viewContainerRef;\n this._viewRef = null;\n /**\n * A context object to attach to the {@link EmbeddedViewRef}. This should be an\n * object, the object's keys will be available for binding by the local template `let`\n * declarations.\n * Using the key `$implicit` in the context object will set its value as default.\n */\n this.ngTemplateOutletContext = null;\n /**\n * A string defining the template reference and optionally the context object for the template.\n */\n this.ngTemplateOutlet = null;\n }\n ngOnChanges(changes) {\n if (changes['ngTemplateOutlet']) {\n const viewContainerRef = this._viewContainerRef;\n if (this._viewRef) {\n viewContainerRef.remove(viewContainerRef.indexOf(this._viewRef));\n }\n this._viewRef = this.ngTemplateOutlet ?\n viewContainerRef.createEmbeddedView(this.ngTemplateOutlet, this.ngTemplateOutletContext) :\n null;\n }\n else if (this._viewRef && changes['ngTemplateOutletContext'] && this.ngTemplateOutletContext) {\n this._viewRef.context = this.ngTemplateOutletContext;\n }\n }\n}\nNgTemplateOutlet.ɵfac = function NgTemplateOutlet_Factory(t) { return new (t || NgTemplateOutlet)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef)); };\nNgTemplateOutlet.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgTemplateOutlet, selectors: [[\"\", \"ngTemplateOutlet\", \"\"]], inputs: { ngTemplateOutletContext: \"ngTemplateOutletContext\", ngTemplateOutlet: \"ngTemplateOutlet\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\nNgTemplateOutlet.ctorParameters = () => [\n { type: ViewContainerRef }\n];\nNgTemplateOutlet.propDecorators = {\n ngTemplateOutletContext: [{ type: Input }],\n ngTemplateOutlet: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgTemplateOutlet, [{\n type: Directive,\n args: [{ selector: '[ngTemplateOutlet]' }]\n }], function () { return [{ type: ɵngcc0.ViewContainerRef }]; }, { ngTemplateOutletContext: [{\n type: Input\n }], ngTemplateOutlet: [{\n type: Input\n }] }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A collection of Angular directives that are likely to be used in each and every Angular\n * application.\n */\nconst COMMON_DIRECTIVES = [\n NgClass,\n NgComponentOutlet,\n NgForOf,\n NgIf,\n NgTemplateOutlet,\n NgStyle,\n NgSwitch,\n NgSwitchCase,\n NgSwitchDefault,\n NgPlural,\n NgPluralCase,\n];\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction invalidPipeArgumentError(type, value) {\n return Error(`InvalidPipeArgument: '${value}' for pipe '${ɵstringify(type)}'`);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass SubscribableStrategy {\n createSubscription(async, updateLatestValue) {\n return async.subscribe({\n next: updateLatestValue,\n error: (e) => {\n throw e;\n }\n });\n }\n dispose(subscription) {\n subscription.unsubscribe();\n }\n onDestroy(subscription) {\n subscription.unsubscribe();\n }\n}\nclass PromiseStrategy {\n createSubscription(async, updateLatestValue) {\n return async.then(updateLatestValue, e => {\n throw e;\n });\n }\n dispose(subscription) { }\n onDestroy(subscription) { }\n}\nconst _promiseStrategy = new PromiseStrategy();\nconst _subscribableStrategy = new SubscribableStrategy();\n/**\n * @ngModule CommonModule\n * @description\n *\n * Unwraps a value from an asynchronous primitive.\n *\n * The `async` pipe subscribes to an `Observable` or `Promise` and returns the latest value it has\n * emitted. When a new value is emitted, the `async` pipe marks the component to be checked for\n * changes. When the component gets destroyed, the `async` pipe unsubscribes automatically to avoid\n * potential memory leaks. When the reference of the expression changes, the `async` pipe\n * automatically unsubscribes from the old `Observable` or `Promise` and subscribes to the new one.\n *\n * @usageNotes\n *\n * ### Examples\n *\n * This example binds a `Promise` to the view. Clicking the `Resolve` button resolves the\n * promise.\n *\n * {@example common/pipes/ts/async_pipe.ts region='AsyncPipePromise'}\n *\n * It's also possible to use `async` with Observables. The example below binds the `time` Observable\n * to the view. The Observable continuously updates the view with the current time.\n *\n * {@example common/pipes/ts/async_pipe.ts region='AsyncPipeObservable'}\n *\n * @publicApi\n */\nclass AsyncPipe {\n constructor(_ref) {\n this._ref = _ref;\n this._latestValue = null;\n this._subscription = null;\n this._obj = null;\n this._strategy = null;\n }\n ngOnDestroy() {\n if (this._subscription) {\n this._dispose();\n }\n }\n transform(obj) {\n if (!this._obj) {\n if (obj) {\n this._subscribe(obj);\n }\n return this._latestValue;\n }\n if (obj !== this._obj) {\n this._dispose();\n return this.transform(obj);\n }\n return this._latestValue;\n }\n _subscribe(obj) {\n this._obj = obj;\n this._strategy = this._selectStrategy(obj);\n this._subscription = this._strategy.createSubscription(obj, (value) => this._updateLatestValue(obj, value));\n }\n _selectStrategy(obj) {\n if (ɵisPromise(obj)) {\n return _promiseStrategy;\n }\n if (ɵisSubscribable(obj)) {\n return _subscribableStrategy;\n }\n throw invalidPipeArgumentError(AsyncPipe, obj);\n }\n _dispose() {\n this._strategy.dispose(this._subscription);\n this._latestValue = null;\n this._subscription = null;\n this._obj = null;\n }\n _updateLatestValue(async, value) {\n if (async === this._obj) {\n this._latestValue = value;\n this._ref.markForCheck();\n }\n }\n}\nAsyncPipe.ɵfac = function AsyncPipe_Factory(t) { return new (t || AsyncPipe)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef, 16)); };\nAsyncPipe.ɵpipe = /*@__PURE__*/ ɵngcc0.ɵɵdefinePipe({ name: \"async\", type: AsyncPipe, pure: false });\nAsyncPipe.ctorParameters = () => [\n { type: ChangeDetectorRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AsyncPipe, [{\n type: Pipe,\n args: [{ name: 'async', pure: false }]\n }], function () { return [{ type: ɵngcc0.ChangeDetectorRef }]; }, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Transforms text to all lower case.\n *\n * @see `UpperCasePipe`\n * @see `TitleCasePipe`\n * @usageNotes\n *\n * The following example defines a view that allows the user to enter\n * text, and then uses the pipe to convert the input text to all lower case.\n *\n * \n *\n * @ngModule CommonModule\n * @publicApi\n */\nclass LowerCasePipe {\n transform(value) {\n if (value == null)\n return null;\n if (typeof value !== 'string') {\n throw invalidPipeArgumentError(LowerCasePipe, value);\n }\n return value.toLowerCase();\n }\n}\nLowerCasePipe.ɵfac = function LowerCasePipe_Factory(t) { return new (t || LowerCasePipe)(); };\nLowerCasePipe.ɵpipe = /*@__PURE__*/ ɵngcc0.ɵɵdefinePipe({ name: \"lowercase\", type: LowerCasePipe, pure: true });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LowerCasePipe, [{\n type: Pipe,\n args: [{ name: 'lowercase' }]\n }], null, null); })();\n//\n// Regex below matches any Unicode word and number compatible with ES5. In ES2018 the same result\n// can be achieved by using /[0-9\\p{L}]\\S*/gu and also known as Unicode Property Escapes\n// (https://2ality.com/2017/07/regexp-unicode-property-escapes.html). Since there is no\n// transpilation of this functionality down to ES5 without external tool, the only solution is\n// to use already transpiled form. Example can be found here -\n// https://mothereff.in/regexpu#input=var+regex+%3D+%2F%5B0-9%5Cp%7BL%7D%5D%5CS*%2Fgu%3B%0A%0A&unicodePropertyEscape=1\n//\nconst unicodeWordMatch = /(?:[0-9A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088E\\u08A0-\\u08C9\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C5D\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u1711\\u171F-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4C\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA7F2-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF2D-\\uDF40\\uDF42-\\uDF49\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDD70-\\uDD7A\\uDD7C-\\uDD8A\\uDD8C-\\uDD92\\uDD94\\uDD95\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67\\uDF80-\\uDF85\\uDF87-\\uDFB0\\uDFB2-\\uDFBA]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDD00-\\uDD23\\uDE80-\\uDEA9\\uDEB0\\uDEB1\\uDF00-\\uDF1C\\uDF27\\uDF30-\\uDF45\\uDF70-\\uDF81\\uDFB0-\\uDFC4\\uDFE0-\\uDFF6]|\\uD804[\\uDC03-\\uDC37\\uDC71\\uDC72\\uDC75\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD44\\uDD47\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC5F-\\uDC61\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDEB8\\uDF00-\\uDF1A\\uDF40-\\uDF46]|\\uD806[\\uDC00-\\uDC2B\\uDCA0-\\uDCDF\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD2F\\uDD3F\\uDD41\\uDDA0-\\uDDA7\\uDDAA-\\uDDD0\\uDDE1\\uDDE3\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE89\\uDE9D\\uDEB0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDEE0-\\uDEF2\\uDFB0]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC80-\\uDD43]|\\uD80B[\\uDF90-\\uDFF0]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE70-\\uDEBE\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE7F\\uDF00-\\uDF4A\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1\\uDFE3]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82B[\\uDFF0-\\uDFF3\\uDFF5-\\uDFFB\\uDFFD\\uDFFE]|\\uD82C[\\uDC00-\\uDD22\\uDD50-\\uDD52\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD837[\\uDF00-\\uDF1E]|\\uD838[\\uDD00-\\uDD2C\\uDD37-\\uDD3D\\uDD4E\\uDE90-\\uDEAD\\uDEC0-\\uDEEB]|\\uD839[\\uDFE0-\\uDFE6\\uDFE8-\\uDFEB\\uDFED\\uDFEE\\uDFF0-\\uDFFE]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43\\uDD4B]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDEDF\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF38\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A])\\S*/g;\n/**\n * Transforms text to title case.\n * Capitalizes the first letter of each word and transforms the\n * rest of the word to lower case.\n * Words are delimited by any whitespace character, such as a space, tab, or line-feed character.\n *\n * @see `LowerCasePipe`\n * @see `UpperCasePipe`\n *\n * @usageNotes\n * The following example shows the result of transforming various strings into title case.\n *\n * \n *\n * @ngModule CommonModule\n * @publicApi\n */\nclass TitleCasePipe {\n transform(value) {\n if (value == null)\n return null;\n if (typeof value !== 'string') {\n throw invalidPipeArgumentError(TitleCasePipe, value);\n }\n return value.replace(unicodeWordMatch, (txt => txt[0].toUpperCase() + txt.substr(1).toLowerCase()));\n }\n}\nTitleCasePipe.ɵfac = function TitleCasePipe_Factory(t) { return new (t || TitleCasePipe)(); };\nTitleCasePipe.ɵpipe = /*@__PURE__*/ ɵngcc0.ɵɵdefinePipe({ name: \"titlecase\", type: TitleCasePipe, pure: true });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TitleCasePipe, [{\n type: Pipe,\n args: [{ name: 'titlecase' }]\n }], null, null); })();\n/**\n * Transforms text to all upper case.\n * @see `LowerCasePipe`\n * @see `TitleCasePipe`\n *\n * @ngModule CommonModule\n * @publicApi\n */\nclass UpperCasePipe {\n transform(value) {\n if (value == null)\n return null;\n if (typeof value !== 'string') {\n throw invalidPipeArgumentError(UpperCasePipe, value);\n }\n return value.toUpperCase();\n }\n}\nUpperCasePipe.ɵfac = function UpperCasePipe_Factory(t) { return new (t || UpperCasePipe)(); };\nUpperCasePipe.ɵpipe = /*@__PURE__*/ ɵngcc0.ɵɵdefinePipe({ name: \"uppercase\", type: UpperCasePipe, pure: true });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(UpperCasePipe, [{\n type: Pipe,\n args: [{ name: 'uppercase' }]\n }], null, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// clang-format off\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a date value according to locale rules.\n *\n * `DatePipe` is executed only when it detects a pure change to the input value.\n * A pure change is either a change to a primitive input value\n * (such as `String`, `Number`, `Boolean`, or `Symbol`),\n * or a changed object reference (such as `Date`, `Array`, `Function`, or `Object`).\n *\n * Note that mutating a `Date` object does not cause the pipe to be rendered again.\n * To ensure that the pipe is executed, you must create a new `Date` object.\n *\n * Only the `en-US` locale data comes with Angular. To localize dates\n * in another language, you must import the corresponding locale data.\n * See the [I18n guide](guide/i18n-common-format-data-locale) for more information.\n *\n * @see `formatDate()`\n *\n *\n * @usageNotes\n *\n * The result of this pipe is not reevaluated when the input is mutated. To avoid the need to\n * reformat the date on every change-detection cycle, treat the date as an immutable object\n * and change the reference when the pipe needs to run again.\n *\n * ### Pre-defined format options\n *\n * | Option | Equivalent to | Examples (given in `en-US` locale) |\n * |---------------|-------------------------------------|-------------------------------------------------|\n * | `'short'` | `'M/d/yy, h:mm a'` | `6/15/15, 9:03 AM` |\n * | `'medium'` | `'MMM d, y, h:mm:ss a'` | `Jun 15, 2015, 9:03:01 AM` |\n * | `'long'` | `'MMMM d, y, h:mm:ss a z'` | `June 15, 2015 at 9:03:01 AM GMT+1` |\n * | `'full'` | `'EEEE, MMMM d, y, h:mm:ss a zzzz'` | `Monday, June 15, 2015 at 9:03:01 AM GMT+01:00` |\n * | `'shortDate'` | `'M/d/yy'` | `6/15/15` |\n * | `'mediumDate'`| `'MMM d, y'` | `Jun 15, 2015` |\n * | `'longDate'` | `'MMMM d, y'` | `June 15, 2015` |\n * | `'fullDate'` | `'EEEE, MMMM d, y'` | `Monday, June 15, 2015` |\n * | `'shortTime'` | `'h:mm a'` | `9:03 AM` |\n * | `'mediumTime'`| `'h:mm:ss a'` | `9:03:01 AM` |\n * | `'longTime'` | `'h:mm:ss a z'` | `9:03:01 AM GMT+1` |\n * | `'fullTime'` | `'h:mm:ss a zzzz'` | `9:03:01 AM GMT+01:00` |\n *\n * ### Custom format options\n *\n * You can construct a format string using symbols to specify the components\n * of a date-time value, as described in the following table.\n * Format details depend on the locale.\n * Fields marked with (*) are only available in the extra data set for the given locale.\n *\n * | Field type | Format | Description | Example Value |\n * |-------------------- |-------------|---------------------------------------------------------------|------------------------------------------------------------|\n * | Era | G, GG & GGG | Abbreviated | AD |\n * | | GGGG | Wide | Anno Domini |\n * | | GGGGG | Narrow | A |\n * | Year | y | Numeric: minimum digits | 2, 20, 201, 2017, 20173 |\n * | | yy | Numeric: 2 digits + zero padded | 02, 20, 01, 17, 73 |\n * | | yyy | Numeric: 3 digits + zero padded | 002, 020, 201, 2017, 20173 |\n * | | yyyy | Numeric: 4 digits or more + zero padded | 0002, 0020, 0201, 2017, 20173 |\n * | Week-numbering year | Y | Numeric: minimum digits | 2, 20, 201, 2017, 20173 |\n * | | YY | Numeric: 2 digits + zero padded | 02, 20, 01, 17, 73 |\n * | | YYY | Numeric: 3 digits + zero padded | 002, 020, 201, 2017, 20173 |\n * | | YYYY | Numeric: 4 digits or more + zero padded | 0002, 0020, 0201, 2017, 20173 |\n * | Month | M | Numeric: 1 digit | 9, 12 |\n * | | MM | Numeric: 2 digits + zero padded | 09, 12 |\n * | | MMM | Abbreviated | Sep |\n * | | MMMM | Wide | September |\n * | | MMMMM | Narrow | S |\n * | Month standalone | L | Numeric: 1 digit | 9, 12 |\n * | | LL | Numeric: 2 digits + zero padded | 09, 12 |\n * | | LLL | Abbreviated | Sep |\n * | | LLLL | Wide | September |\n * | | LLLLL | Narrow | S |\n * | Week of year | w | Numeric: minimum digits | 1... 53 |\n * | | ww | Numeric: 2 digits + zero padded | 01... 53 |\n * | Week of month | W | Numeric: 1 digit | 1... 5 |\n * | Day of month | d | Numeric: minimum digits | 1 |\n * | | dd | Numeric: 2 digits + zero padded | 01 |\n * | Week day | E, EE & EEE | Abbreviated | Tue |\n * | | EEEE | Wide | Tuesday |\n * | | EEEEE | Narrow | T |\n * | | EEEEEE | Short | Tu |\n * | Week day standalone | c, cc | Numeric: 1 digit | 2 |\n * | | ccc | Abbreviated | Tue |\n * | | cccc | Wide | Tuesday |\n * | | ccccc | Narrow | T |\n * | | cccccc | Short | Tu |\n * | Period | a, aa & aaa | Abbreviated | am/pm or AM/PM |\n * | | aaaa | Wide (fallback to `a` when missing) | ante meridiem/post meridiem |\n * | | aaaaa | Narrow | a/p |\n * | Period* | B, BB & BBB | Abbreviated | mid. |\n * | | BBBB | Wide | am, pm, midnight, noon, morning, afternoon, evening, night |\n * | | BBBBB | Narrow | md |\n * | Period standalone* | b, bb & bbb | Abbreviated | mid. |\n * | | bbbb | Wide | am, pm, midnight, noon, morning, afternoon, evening, night |\n * | | bbbbb | Narrow | md |\n * | Hour 1-12 | h | Numeric: minimum digits | 1, 12 |\n * | | hh | Numeric: 2 digits + zero padded | 01, 12 |\n * | Hour 0-23 | H | Numeric: minimum digits | 0, 23 |\n * | | HH | Numeric: 2 digits + zero padded | 00, 23 |\n * | Minute | m | Numeric: minimum digits | 8, 59 |\n * | | mm | Numeric: 2 digits + zero padded | 08, 59 |\n * | Second | s | Numeric: minimum digits | 0... 59 |\n * | | ss | Numeric: 2 digits + zero padded | 00... 59 |\n * | Fractional seconds | S | Numeric: 1 digit | 0... 9 |\n * | | SS | Numeric: 2 digits + zero padded | 00... 99 |\n * | | SSS | Numeric: 3 digits + zero padded (= milliseconds) | 000... 999 |\n * | Zone | z, zz & zzz | Short specific non location format (fallback to O) | GMT-8 |\n * | | zzzz | Long specific non location format (fallback to OOOO) | GMT-08:00 |\n * | | Z, ZZ & ZZZ | ISO8601 basic format | -0800 |\n * | | ZZZZ | Long localized GMT format | GMT-8:00 |\n * | | ZZZZZ | ISO8601 extended format + Z indicator for offset 0 (= XXXXX) | -08:00 |\n * | | O, OO & OOO | Short localized GMT format | GMT-8 |\n * | | OOOO | Long localized GMT format | GMT-08:00 |\n *\n *\n * ### Format examples\n *\n * These examples transform a date into various formats,\n * assuming that `dateObj` is a JavaScript `Date` object for\n * year: 2015, month: 6, day: 15, hour: 21, minute: 43, second: 11,\n * given in the local time for the `en-US` locale.\n *\n * ```\n * {{ dateObj | date }} // output is 'Jun 15, 2015'\n * {{ dateObj | date:'medium' }} // output is 'Jun 15, 2015, 9:43:11 PM'\n * {{ dateObj | date:'shortTime' }} // output is '9:43 PM'\n * {{ dateObj | date:'mm:ss' }} // output is '43:11'\n * ```\n *\n * ### Usage example\n *\n * The following component uses a date pipe to display the current date in different formats.\n *\n * ```\n * @Component({\n * selector: 'date-pipe',\n * template: `
    \n *

    Today is {{today | date}}

    \n *

    Or if you prefer, {{today | date:'fullDate'}}

    \n *

    The time is {{today | date:'h:mm a z'}}

    \n *
    `\n * })\n * // Get the current date and time as a date-time value.\n * export class DatePipeComponent {\n * today: number = Date.now();\n * }\n * ```\n *\n * @publicApi\n */\n// clang-format on\nclass DatePipe {\n constructor(locale) {\n this.locale = locale;\n }\n transform(value, format = 'mediumDate', timezone, locale) {\n if (value == null || value === '' || value !== value)\n return null;\n try {\n return formatDate(value, format, locale || this.locale, timezone);\n }\n catch (error) {\n throw invalidPipeArgumentError(DatePipe, error.message);\n }\n }\n}\nDatePipe.ɵfac = function DatePipe_Factory(t) { return new (t || DatePipe)(ɵngcc0.ɵɵdirectiveInject(LOCALE_ID, 16)); };\nDatePipe.ɵpipe = /*@__PURE__*/ ɵngcc0.ɵɵdefinePipe({ name: \"date\", type: DatePipe, pure: true });\nDatePipe.ctorParameters = () => [\n { type: String, decorators: [{ type: Inject, args: [LOCALE_ID,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DatePipe, [{\n type: Pipe,\n args: [{ name: 'date', pure: true }]\n }], function () { return [{ type: String, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; }, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst _INTERPOLATION_REGEXP = /#/g;\n/**\n * @ngModule CommonModule\n * @description\n *\n * Maps a value to a string that pluralizes the value according to locale rules.\n *\n * @usageNotes\n *\n * ### Example\n *\n * {@example common/pipes/ts/i18n_pipe.ts region='I18nPluralPipeComponent'}\n *\n * @publicApi\n */\nclass I18nPluralPipe {\n constructor(_localization) {\n this._localization = _localization;\n }\n /**\n * @param value the number to be formatted\n * @param pluralMap an object that mimics the ICU format, see\n * http://userguide.icu-project.org/formatparse/messages.\n * @param locale a `string` defining the locale to use (uses the current {@link LOCALE_ID} by\n * default).\n */\n transform(value, pluralMap, locale) {\n if (value == null)\n return '';\n if (typeof pluralMap !== 'object' || pluralMap === null) {\n throw invalidPipeArgumentError(I18nPluralPipe, pluralMap);\n }\n const key = getPluralCategory(value, Object.keys(pluralMap), this._localization, locale);\n return pluralMap[key].replace(_INTERPOLATION_REGEXP, value.toString());\n }\n}\nI18nPluralPipe.ɵfac = function I18nPluralPipe_Factory(t) { return new (t || I18nPluralPipe)(ɵngcc0.ɵɵdirectiveInject(NgLocalization, 16)); };\nI18nPluralPipe.ɵpipe = /*@__PURE__*/ ɵngcc0.ɵɵdefinePipe({ name: \"i18nPlural\", type: I18nPluralPipe, pure: true });\nI18nPluralPipe.ctorParameters = () => [\n { type: NgLocalization }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(I18nPluralPipe, [{\n type: Pipe,\n args: [{ name: 'i18nPlural', pure: true }]\n }], function () { return [{ type: NgLocalization }]; }, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n * @description\n *\n * Generic selector that displays the string that matches the current value.\n *\n * If none of the keys of the `mapping` match the `value`, then the content\n * of the `other` key is returned when present, otherwise an empty string is returned.\n *\n * @usageNotes\n *\n * ### Example\n *\n * {@example common/pipes/ts/i18n_pipe.ts region='I18nSelectPipeComponent'}\n *\n * @publicApi\n */\nclass I18nSelectPipe {\n /**\n * @param value a string to be internationalized.\n * @param mapping an object that indicates the text that should be displayed\n * for different values of the provided `value`.\n */\n transform(value, mapping) {\n if (value == null)\n return '';\n if (typeof mapping !== 'object' || typeof value !== 'string') {\n throw invalidPipeArgumentError(I18nSelectPipe, mapping);\n }\n if (mapping.hasOwnProperty(value)) {\n return mapping[value];\n }\n if (mapping.hasOwnProperty('other')) {\n return mapping['other'];\n }\n return '';\n }\n}\nI18nSelectPipe.ɵfac = function I18nSelectPipe_Factory(t) { return new (t || I18nSelectPipe)(); };\nI18nSelectPipe.ɵpipe = /*@__PURE__*/ ɵngcc0.ɵɵdefinePipe({ name: \"i18nSelect\", type: I18nSelectPipe, pure: true });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(I18nSelectPipe, [{\n type: Pipe,\n args: [{ name: 'i18nSelect', pure: true }]\n }], null, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n * @description\n *\n * Converts a value into its JSON-format representation. Useful for debugging.\n *\n * @usageNotes\n *\n * The following component uses a JSON pipe to convert an object\n * to JSON format, and displays the string in both formats for comparison.\n *\n * {@example common/pipes/ts/json_pipe.ts region='JsonPipe'}\n *\n * @publicApi\n */\nclass JsonPipe {\n /**\n * @param value A value of any type to convert into a JSON-format string.\n */\n transform(value) {\n return JSON.stringify(value, null, 2);\n }\n}\nJsonPipe.ɵfac = function JsonPipe_Factory(t) { return new (t || JsonPipe)(); };\nJsonPipe.ɵpipe = /*@__PURE__*/ ɵngcc0.ɵɵdefinePipe({ name: \"json\", type: JsonPipe, pure: false });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(JsonPipe, [{\n type: Pipe,\n args: [{ name: 'json', pure: false }]\n }], null, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction makeKeyValuePair(key, value) {\n return { key: key, value: value };\n}\n/**\n * @ngModule CommonModule\n * @description\n *\n * Transforms Object or Map into an array of key value pairs.\n *\n * The output array will be ordered by keys.\n * By default the comparator will be by Unicode point value.\n * You can optionally pass a compareFn if your keys are complex types.\n *\n * @usageNotes\n * ### Examples\n *\n * This examples show how an Object or a Map can be iterated by ngFor with the use of this\n * keyvalue pipe.\n *\n * {@example common/pipes/ts/keyvalue_pipe.ts region='KeyValuePipe'}\n *\n * @publicApi\n */\nclass KeyValuePipe {\n constructor(differs) {\n this.differs = differs;\n this.keyValues = [];\n this.compareFn = defaultComparator;\n }\n transform(input, compareFn = defaultComparator) {\n if (!input || (!(input instanceof Map) && typeof input !== 'object')) {\n return null;\n }\n if (!this.differ) {\n // make a differ for whatever type we've been passed in\n this.differ = this.differs.find(input).create();\n }\n const differChanges = this.differ.diff(input);\n const compareFnChanged = compareFn !== this.compareFn;\n if (differChanges) {\n this.keyValues = [];\n differChanges.forEachItem((r) => {\n this.keyValues.push(makeKeyValuePair(r.key, r.currentValue));\n });\n }\n if (differChanges || compareFnChanged) {\n this.keyValues.sort(compareFn);\n this.compareFn = compareFn;\n }\n return this.keyValues;\n }\n}\nKeyValuePipe.ɵfac = function KeyValuePipe_Factory(t) { return new (t || KeyValuePipe)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.KeyValueDiffers, 16)); };\nKeyValuePipe.ɵpipe = /*@__PURE__*/ ɵngcc0.ɵɵdefinePipe({ name: \"keyvalue\", type: KeyValuePipe, pure: false });\nKeyValuePipe.ctorParameters = () => [\n { type: KeyValueDiffers }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(KeyValuePipe, [{\n type: Pipe,\n args: [{ name: 'keyvalue', pure: false }]\n }], function () { return [{ type: ɵngcc0.KeyValueDiffers }]; }, null); })();\nfunction defaultComparator(keyValueA, keyValueB) {\n const a = keyValueA.key;\n const b = keyValueB.key;\n // if same exit with 0;\n if (a === b)\n return 0;\n // make sure that undefined are at the end of the sort.\n if (a === undefined)\n return 1;\n if (b === undefined)\n return -1;\n // make sure that nulls are at the end of the sort.\n if (a === null)\n return 1;\n if (b === null)\n return -1;\n if (typeof a == 'string' && typeof b == 'string') {\n return a < b ? -1 : 1;\n }\n if (typeof a == 'number' && typeof b == 'number') {\n return a - b;\n }\n if (typeof a == 'boolean' && typeof b == 'boolean') {\n return a < b ? -1 : 1;\n }\n // `a` and `b` are of different types. Compare their string values.\n const aString = String(a);\n const bString = String(b);\n return aString == bString ? 0 : aString < bString ? -1 : 1;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a value according to digit options and locale rules.\n * Locale determines group sizing and separator,\n * decimal point character, and other locale-specific configurations.\n *\n * @see `formatNumber()`\n *\n * @usageNotes\n *\n * ### digitsInfo\n *\n * The value's decimal representation is specified by the `digitsInfo`\n * parameter, written in the following format:
    \n *\n * ```\n * {minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}\n * ```\n *\n * - `minIntegerDigits`:\n * The minimum number of integer digits before the decimal point.\n * Default is 1.\n *\n * - `minFractionDigits`:\n * The minimum number of digits after the decimal point.\n * Default is 0.\n *\n * - `maxFractionDigits`:\n * The maximum number of digits after the decimal point.\n * Default is 3.\n *\n * If the formatted value is truncated it will be rounded using the \"to-nearest\" method:\n *\n * ```\n * {{3.6 | number: '1.0-0'}}\n * \n *\n * {{-3.6 | number:'1.0-0'}}\n * \n * ```\n *\n * ### locale\n *\n * `locale` will format a value according to locale rules.\n * Locale determines group sizing and separator,\n * decimal point character, and other locale-specific configurations.\n *\n * When not supplied, uses the value of `LOCALE_ID`, which is `en-US` by default.\n *\n * See [Setting your app locale](guide/i18n-common-locale-id).\n *\n * ### Example\n *\n * The following code shows how the pipe transforms values\n * according to various format specifications,\n * where the caller's default locale is `en-US`.\n *\n * \n *\n * @publicApi\n */\nclass DecimalPipe {\n constructor(_locale) {\n this._locale = _locale;\n }\n /**\n * @param value The value to be formatted.\n * @param digitsInfo Sets digit and decimal representation.\n * [See more](#digitsinfo).\n * @param locale Specifies what locale format rules to use.\n * [See more](#locale).\n */\n transform(value, digitsInfo, locale) {\n if (!isValue(value))\n return null;\n locale = locale || this._locale;\n try {\n const num = strToNumber(value);\n return formatNumber(num, locale, digitsInfo);\n }\n catch (error) {\n throw invalidPipeArgumentError(DecimalPipe, error.message);\n }\n }\n}\nDecimalPipe.ɵfac = function DecimalPipe_Factory(t) { return new (t || DecimalPipe)(ɵngcc0.ɵɵdirectiveInject(LOCALE_ID, 16)); };\nDecimalPipe.ɵpipe = /*@__PURE__*/ ɵngcc0.ɵɵdefinePipe({ name: \"number\", type: DecimalPipe, pure: true });\nDecimalPipe.ctorParameters = () => [\n { type: String, decorators: [{ type: Inject, args: [LOCALE_ID,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DecimalPipe, [{\n type: Pipe,\n args: [{ name: 'number' }]\n }], function () { return [{ type: String, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; }, null); })();\n/**\n * @ngModule CommonModule\n * @description\n *\n * Transforms a number to a percentage\n * string, formatted according to locale rules that determine group sizing and\n * separator, decimal-point character, and other locale-specific\n * configurations.\n *\n * @see `formatPercent()`\n *\n * @usageNotes\n * The following code shows how the pipe transforms numbers\n * into text strings, according to various format specifications,\n * where the caller's default locale is `en-US`.\n *\n * \n *\n * @publicApi\n */\nclass PercentPipe {\n constructor(_locale) {\n this._locale = _locale;\n }\n /**\n *\n * @param value The number to be formatted as a percentage.\n * @param digitsInfo Decimal representation options, specified by a string\n * in the following format:
    \n * {minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}.\n * - `minIntegerDigits`: The minimum number of integer digits before the decimal point.\n * Default is `1`.\n * - `minFractionDigits`: The minimum number of digits after the decimal point.\n * Default is `0`.\n * - `maxFractionDigits`: The maximum number of digits after the decimal point.\n * Default is `0`.\n * @param locale A locale code for the locale format rules to use.\n * When not supplied, uses the value of `LOCALE_ID`, which is `en-US` by default.\n * See [Setting your app locale](guide/i18n-common-locale-id).\n */\n transform(value, digitsInfo, locale) {\n if (!isValue(value))\n return null;\n locale = locale || this._locale;\n try {\n const num = strToNumber(value);\n return formatPercent(num, locale, digitsInfo);\n }\n catch (error) {\n throw invalidPipeArgumentError(PercentPipe, error.message);\n }\n }\n}\nPercentPipe.ɵfac = function PercentPipe_Factory(t) { return new (t || PercentPipe)(ɵngcc0.ɵɵdirectiveInject(LOCALE_ID, 16)); };\nPercentPipe.ɵpipe = /*@__PURE__*/ ɵngcc0.ɵɵdefinePipe({ name: \"percent\", type: PercentPipe, pure: true });\nPercentPipe.ctorParameters = () => [\n { type: String, decorators: [{ type: Inject, args: [LOCALE_ID,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PercentPipe, [{\n type: Pipe,\n args: [{ name: 'percent' }]\n }], function () { return [{ type: String, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; }, null); })();\n/**\n * @ngModule CommonModule\n * @description\n *\n * Transforms a number to a currency string, formatted according to locale rules\n * that determine group sizing and separator, decimal-point character,\n * and other locale-specific configurations.\n *\n * {@a currency-code-deprecation}\n *
    \n *\n * **Deprecation notice:**\n *\n * The default currency code is currently always `USD` but this is deprecated from v9.\n *\n * **In v11 the default currency code will be taken from the current locale identified by\n * the `LOCALE_ID` token. See the [i18n guide](guide/i18n-common-locale-id) for\n * more information.**\n *\n * If you need the previous behavior then set it by creating a `DEFAULT_CURRENCY_CODE` provider in\n * your application `NgModule`:\n *\n * ```ts\n * {provide: DEFAULT_CURRENCY_CODE, useValue: 'USD'}\n * ```\n *\n *
    \n *\n * @see `getCurrencySymbol()`\n * @see `formatCurrency()`\n *\n * @usageNotes\n * The following code shows how the pipe transforms numbers\n * into text strings, according to various format specifications,\n * where the caller's default locale is `en-US`.\n *\n * \n *\n * @publicApi\n */\nclass CurrencyPipe {\n constructor(_locale, _defaultCurrencyCode = 'USD') {\n this._locale = _locale;\n this._defaultCurrencyCode = _defaultCurrencyCode;\n }\n /**\n *\n * @param value The number to be formatted as currency.\n * @param currencyCode The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code,\n * such as `USD` for the US dollar and `EUR` for the euro. The default currency code can be\n * configured using the `DEFAULT_CURRENCY_CODE` injection token.\n * @param display The format for the currency indicator. One of the following:\n * - `code`: Show the code (such as `USD`).\n * - `symbol`(default): Show the symbol (such as `$`).\n * - `symbol-narrow`: Use the narrow symbol for locales that have two symbols for their\n * currency.\n * For example, the Canadian dollar CAD has the symbol `CA$` and the symbol-narrow `$`. If the\n * locale has no narrow symbol, uses the standard symbol for the locale.\n * - String: Use the given string value instead of a code or a symbol.\n * For example, an empty string will suppress the currency & symbol.\n * - Boolean (marked deprecated in v5): `true` for symbol and false for `code`.\n *\n * @param digitsInfo Decimal representation options, specified by a string\n * in the following format:
    \n * {minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}.\n * - `minIntegerDigits`: The minimum number of integer digits before the decimal point.\n * Default is `1`.\n * - `minFractionDigits`: The minimum number of digits after the decimal point.\n * Default is `2`.\n * - `maxFractionDigits`: The maximum number of digits after the decimal point.\n * Default is `2`.\n * If not provided, the number will be formatted with the proper amount of digits,\n * depending on what the [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) specifies.\n * For example, the Canadian dollar has 2 digits, whereas the Chilean peso has none.\n * @param locale A locale code for the locale format rules to use.\n * When not supplied, uses the value of `LOCALE_ID`, which is `en-US` by default.\n * See [Setting your app locale](guide/i18n-common-locale-id).\n */\n transform(value, currencyCode = this._defaultCurrencyCode, display = 'symbol', digitsInfo, locale) {\n if (!isValue(value))\n return null;\n locale = locale || this._locale;\n if (typeof display === 'boolean') {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && console && console.warn) {\n console.warn(`Warning: the currency pipe has been changed in Angular v5. The symbolDisplay option (third parameter) is now a string instead of a boolean. The accepted values are \"code\", \"symbol\" or \"symbol-narrow\".`);\n }\n display = display ? 'symbol' : 'code';\n }\n let currency = currencyCode || this._defaultCurrencyCode;\n if (display !== 'code') {\n if (display === 'symbol' || display === 'symbol-narrow') {\n currency = getCurrencySymbol(currency, display === 'symbol' ? 'wide' : 'narrow', locale);\n }\n else {\n currency = display;\n }\n }\n try {\n const num = strToNumber(value);\n return formatCurrency(num, locale, currency, currencyCode, digitsInfo);\n }\n catch (error) {\n throw invalidPipeArgumentError(CurrencyPipe, error.message);\n }\n }\n}\nCurrencyPipe.ɵfac = function CurrencyPipe_Factory(t) { return new (t || CurrencyPipe)(ɵngcc0.ɵɵdirectiveInject(LOCALE_ID, 16), ɵngcc0.ɵɵdirectiveInject(DEFAULT_CURRENCY_CODE, 16)); };\nCurrencyPipe.ɵpipe = /*@__PURE__*/ ɵngcc0.ɵɵdefinePipe({ name: \"currency\", type: CurrencyPipe, pure: true });\nCurrencyPipe.ctorParameters = () => [\n { type: String, decorators: [{ type: Inject, args: [LOCALE_ID,] }] },\n { type: String, decorators: [{ type: Inject, args: [DEFAULT_CURRENCY_CODE,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CurrencyPipe, [{\n type: Pipe,\n args: [{ name: 'currency' }]\n }], function () { return [{ type: String, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }, { type: String, decorators: [{\n type: Inject,\n args: [DEFAULT_CURRENCY_CODE]\n }] }]; }, null); })();\nfunction isValue(value) {\n return !(value == null || value === '' || value !== value);\n}\n/**\n * Transforms a string into a number (if needed).\n */\nfunction strToNumber(value) {\n // Convert strings to numbers\n if (typeof value === 'string' && !isNaN(Number(value) - parseFloat(value))) {\n return Number(value);\n }\n if (typeof value !== 'number') {\n throw new Error(`${value} is not a number`);\n }\n return value;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n * @description\n *\n * Creates a new `Array` or `String` containing a subset (slice) of the elements.\n *\n * @usageNotes\n *\n * All behavior is based on the expected behavior of the JavaScript API `Array.prototype.slice()`\n * and `String.prototype.slice()`.\n *\n * When operating on an `Array`, the returned `Array` is always a copy even when all\n * the elements are being returned.\n *\n * When operating on a blank value, the pipe returns the blank value.\n *\n * ### List Example\n *\n * This `ngFor` example:\n *\n * {@example common/pipes/ts/slice_pipe.ts region='SlicePipe_list'}\n *\n * produces the following:\n *\n * ```html\n *
  • b
  • \n *
  • c
  • \n * ```\n *\n * ### String Examples\n *\n * {@example common/pipes/ts/slice_pipe.ts region='SlicePipe_string'}\n *\n * @publicApi\n */\nclass SlicePipe {\n transform(value, start, end) {\n if (value == null)\n return null;\n if (!this.supports(value)) {\n throw invalidPipeArgumentError(SlicePipe, value);\n }\n return value.slice(start, end);\n }\n supports(obj) {\n return typeof obj === 'string' || Array.isArray(obj);\n }\n}\nSlicePipe.ɵfac = function SlicePipe_Factory(t) { return new (t || SlicePipe)(); };\nSlicePipe.ɵpipe = /*@__PURE__*/ ɵngcc0.ɵɵdefinePipe({ name: \"slice\", type: SlicePipe, pure: false });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SlicePipe, [{\n type: Pipe,\n args: [{ name: 'slice', pure: false }]\n }], null, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A collection of Angular pipes that are likely to be used in each and every application.\n */\nconst COMMON_PIPES = [\n AsyncPipe,\n UpperCasePipe,\n LowerCasePipe,\n JsonPipe,\n SlicePipe,\n DecimalPipe,\n PercentPipe,\n TitleCasePipe,\n CurrencyPipe,\n DatePipe,\n I18nPluralPipe,\n I18nSelectPipe,\n KeyValuePipe,\n];\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Note: This does not contain the location providers,\n// as they need some platform specific implementations to work.\n/**\n * Exports all the basic Angular directives and pipes,\n * such as `NgIf`, `NgForOf`, `DecimalPipe`, and so on.\n * Re-exported by `BrowserModule`, which is included automatically in the root\n * `AppModule` when you create a new app with the CLI `new` command.\n *\n * * The `providers` options configure the NgModule's injector to provide\n * localization dependencies to members.\n * * The `exports` options make the declared directives and pipes available for import\n * by other NgModules.\n *\n * @publicApi\n */\nclass CommonModule {\n}\nCommonModule.ɵfac = function CommonModule_Factory(t) { return new (t || CommonModule)(); };\nCommonModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: CommonModule });\nCommonModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ providers: [\n { provide: NgLocalization, useClass: NgLocaleLocalization },\n ] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CommonModule, [{\n type: NgModule,\n args: [{\n declarations: [COMMON_DIRECTIVES, COMMON_PIPES],\n exports: [COMMON_DIRECTIVES, COMMON_PIPES],\n providers: [\n { provide: NgLocalization, useClass: NgLocaleLocalization },\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(CommonModule, { declarations: [NgClass, NgComponentOutlet, NgForOf, NgIf, NgTemplateOutlet, NgStyle, NgSwitch, NgSwitchCase, NgSwitchDefault, NgPlural, NgPluralCase, AsyncPipe, UpperCasePipe, LowerCasePipe, JsonPipe, SlicePipe, DecimalPipe, PercentPipe, TitleCasePipe, CurrencyPipe, DatePipe, I18nPluralPipe, I18nSelectPipe, KeyValuePipe], exports: [NgClass, NgComponentOutlet, NgForOf, NgIf, NgTemplateOutlet, NgStyle, NgSwitch, NgSwitchCase, NgSwitchDefault, NgPlural, NgPluralCase, AsyncPipe, UpperCasePipe, LowerCasePipe, JsonPipe, SlicePipe, DecimalPipe, PercentPipe, TitleCasePipe, CurrencyPipe, DatePipe, I18nPluralPipe, I18nSelectPipe, KeyValuePipe] }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst PLATFORM_BROWSER_ID = 'browser';\nconst PLATFORM_SERVER_ID = 'server';\nconst PLATFORM_WORKER_APP_ID = 'browserWorkerApp';\nconst PLATFORM_WORKER_UI_ID = 'browserWorkerUi';\n/**\n * Returns whether a platform id represents a browser platform.\n * @publicApi\n */\nfunction isPlatformBrowser(platformId) {\n return platformId === PLATFORM_BROWSER_ID;\n}\n/**\n * Returns whether a platform id represents a server platform.\n * @publicApi\n */\nfunction isPlatformServer(platformId) {\n return platformId === PLATFORM_SERVER_ID;\n}\n/**\n * Returns whether a platform id represents a web worker app platform.\n * @publicApi\n */\nfunction isPlatformWorkerApp(platformId) {\n return platformId === PLATFORM_WORKER_APP_ID;\n}\n/**\n * Returns whether a platform id represents a web worker UI platform.\n * @publicApi\n */\nfunction isPlatformWorkerUi(platformId) {\n return platformId === PLATFORM_WORKER_UI_ID;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @publicApi\n */\nconst VERSION = new Version('12.2.15');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Defines a scroll position manager. Implemented by `BrowserViewportScroller`.\n *\n * @publicApi\n */\nclass ViewportScroller {\n}\n// De-sugared tree-shakable injection\n// See #23917\n/** @nocollapse */\nViewportScroller.ɵprov = ɵɵdefineInjectable({\n token: ViewportScroller,\n providedIn: 'root',\n factory: () => new BrowserViewportScroller(ɵɵinject(DOCUMENT), window)\n});\n/**\n * Manages the scroll position for a browser window.\n */\nclass BrowserViewportScroller {\n constructor(document, window) {\n this.document = document;\n this.window = window;\n this.offset = () => [0, 0];\n }\n /**\n * Configures the top offset used when scrolling to an anchor.\n * @param offset A position in screen coordinates (a tuple with x and y values)\n * or a function that returns the top offset position.\n *\n */\n setOffset(offset) {\n if (Array.isArray(offset)) {\n this.offset = () => offset;\n }\n else {\n this.offset = offset;\n }\n }\n /**\n * Retrieves the current scroll position.\n * @returns The position in screen coordinates.\n */\n getScrollPosition() {\n if (this.supportsScrolling()) {\n return [this.window.pageXOffset, this.window.pageYOffset];\n }\n else {\n return [0, 0];\n }\n }\n /**\n * Sets the scroll position.\n * @param position The new position in screen coordinates.\n */\n scrollToPosition(position) {\n if (this.supportsScrolling()) {\n this.window.scrollTo(position[0], position[1]);\n }\n }\n /**\n * Scrolls to an element and attempts to focus the element.\n *\n * Note that the function name here is misleading in that the target string may be an ID for a\n * non-anchor element.\n *\n * @param target The ID of an element or name of the anchor.\n *\n * @see https://html.spec.whatwg.org/#the-indicated-part-of-the-document\n * @see https://html.spec.whatwg.org/#scroll-to-fragid\n */\n scrollToAnchor(target) {\n if (!this.supportsScrolling()) {\n return;\n }\n const elSelected = findAnchorFromDocument(this.document, target);\n if (elSelected) {\n this.scrollToElement(elSelected);\n // After scrolling to the element, the spec dictates that we follow the focus steps for the\n // target. Rather than following the robust steps, simply attempt focus.\n this.attemptFocus(elSelected);\n }\n }\n /**\n * Disables automatic scroll restoration provided by the browser.\n */\n setHistoryScrollRestoration(scrollRestoration) {\n if (this.supportScrollRestoration()) {\n const history = this.window.history;\n if (history && history.scrollRestoration) {\n history.scrollRestoration = scrollRestoration;\n }\n }\n }\n /**\n * Scrolls to an element using the native offset and the specified offset set on this scroller.\n *\n * The offset can be used when we know that there is a floating header and scrolling naively to an\n * element (ex: `scrollIntoView`) leaves the element hidden behind the floating header.\n */\n scrollToElement(el) {\n const rect = el.getBoundingClientRect();\n const left = rect.left + this.window.pageXOffset;\n const top = rect.top + this.window.pageYOffset;\n const offset = this.offset();\n this.window.scrollTo(left - offset[0], top - offset[1]);\n }\n /**\n * Calls `focus` on the `focusTarget` and returns `true` if the element was focused successfully.\n *\n * If `false`, further steps may be necessary to determine a valid substitute to be focused\n * instead.\n *\n * @see https://html.spec.whatwg.org/#get-the-focusable-area\n * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLOrForeignElement/focus\n * @see https://html.spec.whatwg.org/#focusable-area\n */\n attemptFocus(focusTarget) {\n focusTarget.focus();\n return this.document.activeElement === focusTarget;\n }\n /**\n * We only support scroll restoration when we can get a hold of window.\n * This means that we do not support this behavior when running in a web worker.\n *\n * Lifting this restriction right now would require more changes in the dom adapter.\n * Since webworkers aren't widely used, we will lift it once RouterScroller is\n * battle-tested.\n */\n supportScrollRestoration() {\n try {\n if (!this.supportsScrolling()) {\n return false;\n }\n // The `scrollRestoration` property could be on the `history` instance or its prototype.\n const scrollRestorationDescriptor = getScrollRestorationProperty(this.window.history) ||\n getScrollRestorationProperty(Object.getPrototypeOf(this.window.history));\n // We can write to the `scrollRestoration` property if it is a writable data field or it has a\n // setter function.\n return !!scrollRestorationDescriptor &&\n !!(scrollRestorationDescriptor.writable || scrollRestorationDescriptor.set);\n }\n catch (_a) {\n return false;\n }\n }\n supportsScrolling() {\n try {\n return !!this.window && !!this.window.scrollTo && 'pageXOffset' in this.window;\n }\n catch (_a) {\n return false;\n }\n }\n}\nfunction getScrollRestorationProperty(obj) {\n return Object.getOwnPropertyDescriptor(obj, 'scrollRestoration');\n}\nfunction findAnchorFromDocument(document, target) {\n const documentResult = document.getElementById(target) || document.getElementsByName(target)[0];\n if (documentResult) {\n return documentResult;\n }\n // `getElementById` and `getElementsByName` won't pierce through the shadow DOM so we\n // have to traverse the DOM manually and do the lookup through the shadow roots.\n if (typeof document.createTreeWalker === 'function' && document.body &&\n (document.body.createShadowRoot || document.body.attachShadow)) {\n const treeWalker = document.createTreeWalker(document.body, NodeFilter.SHOW_ELEMENT);\n let currentNode = treeWalker.currentNode;\n while (currentNode) {\n const shadowRoot = currentNode.shadowRoot;\n if (shadowRoot) {\n // Note that `ShadowRoot` doesn't support `getElementsByName`\n // so we have to fall back to `querySelector`.\n const result = shadowRoot.getElementById(target) || shadowRoot.querySelector(`[name=\"${target}\"]`);\n if (result) {\n return result;\n }\n }\n currentNode = treeWalker.nextNode();\n }\n }\n return null;\n}\n/**\n * Provides an empty implementation of the viewport scroller.\n */\nclass NullViewportScroller {\n /**\n * Empty implementation\n */\n setOffset(offset) { }\n /**\n * Empty implementation\n */\n getScrollPosition() {\n return [0, 0];\n }\n /**\n * Empty implementation\n */\n scrollToPosition(position) { }\n /**\n * Empty implementation\n */\n scrollToAnchor(anchor) { }\n /**\n * Empty implementation\n */\n setHistoryScrollRestoration(scrollRestoration) { }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A wrapper around the `XMLHttpRequest` constructor.\n *\n * @publicApi\n */\nclass XhrFactory {\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// This file only reexports content of the `src` folder. Keep it that way.\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { APP_BASE_HREF, AsyncPipe, CommonModule, CurrencyPipe, DOCUMENT, DatePipe, DecimalPipe, FormStyle, FormatWidth, HashLocationStrategy, I18nPluralPipe, I18nSelectPipe, JsonPipe, KeyValuePipe, LOCATION_INITIALIZED, Location, LocationStrategy, LowerCasePipe, NgClass, NgComponentOutlet, NgForOf, NgForOfContext, NgIf, NgIfContext, NgLocaleLocalization, NgLocalization, NgPlural, NgPluralCase, NgStyle, NgSwitch, NgSwitchCase, NgSwitchDefault, NgTemplateOutlet, NumberFormatStyle, NumberSymbol, PathLocationStrategy, PercentPipe, PlatformLocation, Plural, SlicePipe, TitleCasePipe, TranslationWidth, UpperCasePipe, VERSION, ViewportScroller, WeekDay, XhrFactory, formatCurrency, formatDate, formatNumber, formatPercent, getCurrencySymbol, getLocaleCurrencyCode, getLocaleCurrencyName, getLocaleCurrencySymbol, getLocaleDateFormat, getLocaleDateTimeFormat, getLocaleDayNames, getLocaleDayPeriods, getLocaleDirection, getLocaleEraNames, getLocaleExtraDayPeriodRules, getLocaleExtraDayPeriods, getLocaleFirstDayOfWeek, getLocaleId, getLocaleMonthNames, getLocaleNumberFormat, getLocaleNumberSymbol, getLocalePluralCase, getLocaleTimeFormat, getLocaleWeekEndRange, getNumberOfCurrencyDigits, isPlatformBrowser, isPlatformServer, isPlatformWorkerApp, isPlatformWorkerUi, registerLocaleData, BrowserPlatformLocation as ɵBrowserPlatformLocation, DomAdapter as ɵDomAdapter, NullViewportScroller as ɵNullViewportScroller, PLATFORM_BROWSER_ID as ɵPLATFORM_BROWSER_ID, PLATFORM_SERVER_ID as ɵPLATFORM_SERVER_ID, PLATFORM_WORKER_APP_ID as ɵPLATFORM_WORKER_APP_ID, PLATFORM_WORKER_UI_ID as ɵPLATFORM_WORKER_UI_ID, useBrowserPlatformLocation as ɵangular_packages_common_common_a, createBrowserPlatformLocation as ɵangular_packages_common_common_b, createLocation as ɵangular_packages_common_common_c, provideLocationStrategy as ɵangular_packages_common_common_d, COMMON_DIRECTIVES as ɵangular_packages_common_common_e, COMMON_PIPES as ɵangular_packages_common_common_f, getDOM as ɵgetDOM, parseCookieValue as ɵparseCookieValue, setRootDomAdapter as ɵsetRootDomAdapter };\n\n","/**\n * @license Angular v12.2.15\n * (c) 2010-2021 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport { DOCUMENT, XhrFactory as XhrFactory$1, ɵparseCookieValue } from '@angular/common';\nimport { Injectable, InjectionToken, Inject, PLATFORM_ID, Injector, NgModule } from '@angular/core';\nimport { of, Observable } from 'rxjs';\nimport { concatMap, filter, map } from 'rxjs/operators';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Transforms an `HttpRequest` into a stream of `HttpEvent`s, one of which will likely be a\n * `HttpResponse`.\n *\n * `HttpHandler` is injectable. When injected, the handler instance dispatches requests to the\n * first interceptor in the chain, which dispatches to the second, etc, eventually reaching the\n * `HttpBackend`.\n *\n * In an `HttpInterceptor`, the `HttpHandler` parameter is the next interceptor in the chain.\n *\n * @publicApi\n */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/common';\nclass HttpHandler {\n}\n/**\n * A final `HttpHandler` which will dispatch the request via browser HTTP APIs to a backend.\n *\n * Interceptors sit between the `HttpClient` interface and the `HttpBackend`.\n *\n * When injected, `HttpBackend` dispatches requests directly to the backend, without going\n * through the interceptor chain.\n *\n * @publicApi\n */\nclass HttpBackend {\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Represents the header configuration options for an HTTP request.\n * Instances are immutable. Modifying methods return a cloned\n * instance with the change. The original object is never changed.\n *\n * @publicApi\n */\nclass HttpHeaders {\n /** Constructs a new HTTP header object with the given values.*/\n constructor(headers) {\n /**\n * Internal map of lowercased header names to the normalized\n * form of the name (the form seen first).\n */\n this.normalizedNames = new Map();\n /**\n * Queued updates to be materialized the next initialization.\n */\n this.lazyUpdate = null;\n if (!headers) {\n this.headers = new Map();\n }\n else if (typeof headers === 'string') {\n this.lazyInit = () => {\n this.headers = new Map();\n headers.split('\\n').forEach(line => {\n const index = line.indexOf(':');\n if (index > 0) {\n const name = line.slice(0, index);\n const key = name.toLowerCase();\n const value = line.slice(index + 1).trim();\n this.maybeSetNormalizedName(name, key);\n if (this.headers.has(key)) {\n this.headers.get(key).push(value);\n }\n else {\n this.headers.set(key, [value]);\n }\n }\n });\n };\n }\n else {\n this.lazyInit = () => {\n this.headers = new Map();\n Object.keys(headers).forEach(name => {\n let values = headers[name];\n const key = name.toLowerCase();\n if (typeof values === 'string') {\n values = [values];\n }\n if (values.length > 0) {\n this.headers.set(key, values);\n this.maybeSetNormalizedName(name, key);\n }\n });\n };\n }\n }\n /**\n * Checks for existence of a given header.\n *\n * @param name The header name to check for existence.\n *\n * @returns True if the header exists, false otherwise.\n */\n has(name) {\n this.init();\n return this.headers.has(name.toLowerCase());\n }\n /**\n * Retrieves the first value of a given header.\n *\n * @param name The header name.\n *\n * @returns The value string if the header exists, null otherwise\n */\n get(name) {\n this.init();\n const values = this.headers.get(name.toLowerCase());\n return values && values.length > 0 ? values[0] : null;\n }\n /**\n * Retrieves the names of the headers.\n *\n * @returns A list of header names.\n */\n keys() {\n this.init();\n return Array.from(this.normalizedNames.values());\n }\n /**\n * Retrieves a list of values for a given header.\n *\n * @param name The header name from which to retrieve values.\n *\n * @returns A string of values if the header exists, null otherwise.\n */\n getAll(name) {\n this.init();\n return this.headers.get(name.toLowerCase()) || null;\n }\n /**\n * Appends a new value to the existing set of values for a header\n * and returns them in a clone of the original instance.\n *\n * @param name The header name for which to append the values.\n * @param value The value to append.\n *\n * @returns A clone of the HTTP headers object with the value appended to the given header.\n */\n append(name, value) {\n return this.clone({ name, value, op: 'a' });\n }\n /**\n * Sets or modifies a value for a given header in a clone of the original instance.\n * If the header already exists, its value is replaced with the given value\n * in the returned object.\n *\n * @param name The header name.\n * @param value The value or values to set or overide for the given header.\n *\n * @returns A clone of the HTTP headers object with the newly set header value.\n */\n set(name, value) {\n return this.clone({ name, value, op: 's' });\n }\n /**\n * Deletes values for a given header in a clone of the original instance.\n *\n * @param name The header name.\n * @param value The value or values to delete for the given header.\n *\n * @returns A clone of the HTTP headers object with the given value deleted.\n */\n delete(name, value) {\n return this.clone({ name, value, op: 'd' });\n }\n maybeSetNormalizedName(name, lcName) {\n if (!this.normalizedNames.has(lcName)) {\n this.normalizedNames.set(lcName, name);\n }\n }\n init() {\n if (!!this.lazyInit) {\n if (this.lazyInit instanceof HttpHeaders) {\n this.copyFrom(this.lazyInit);\n }\n else {\n this.lazyInit();\n }\n this.lazyInit = null;\n if (!!this.lazyUpdate) {\n this.lazyUpdate.forEach(update => this.applyUpdate(update));\n this.lazyUpdate = null;\n }\n }\n }\n copyFrom(other) {\n other.init();\n Array.from(other.headers.keys()).forEach(key => {\n this.headers.set(key, other.headers.get(key));\n this.normalizedNames.set(key, other.normalizedNames.get(key));\n });\n }\n clone(update) {\n const clone = new HttpHeaders();\n clone.lazyInit =\n (!!this.lazyInit && this.lazyInit instanceof HttpHeaders) ? this.lazyInit : this;\n clone.lazyUpdate = (this.lazyUpdate || []).concat([update]);\n return clone;\n }\n applyUpdate(update) {\n const key = update.name.toLowerCase();\n switch (update.op) {\n case 'a':\n case 's':\n let value = update.value;\n if (typeof value === 'string') {\n value = [value];\n }\n if (value.length === 0) {\n return;\n }\n this.maybeSetNormalizedName(update.name, key);\n const base = (update.op === 'a' ? this.headers.get(key) : undefined) || [];\n base.push(...value);\n this.headers.set(key, base);\n break;\n case 'd':\n const toDelete = update.value;\n if (!toDelete) {\n this.headers.delete(key);\n this.normalizedNames.delete(key);\n }\n else {\n let existing = this.headers.get(key);\n if (!existing) {\n return;\n }\n existing = existing.filter(value => toDelete.indexOf(value) === -1);\n if (existing.length === 0) {\n this.headers.delete(key);\n this.normalizedNames.delete(key);\n }\n else {\n this.headers.set(key, existing);\n }\n }\n break;\n }\n }\n /**\n * @internal\n */\n forEach(fn) {\n this.init();\n Array.from(this.normalizedNames.keys())\n .forEach(key => fn(this.normalizedNames.get(key), this.headers.get(key)));\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Provides encoding and decoding of URL parameter and query-string values.\n *\n * Serializes and parses URL parameter keys and values to encode and decode them.\n * If you pass URL query parameters without encoding,\n * the query parameters can be misinterpreted at the receiving end.\n *\n *\n * @publicApi\n */\nclass HttpUrlEncodingCodec {\n /**\n * Encodes a key name for a URL parameter or query-string.\n * @param key The key name.\n * @returns The encoded key name.\n */\n encodeKey(key) {\n return standardEncoding(key);\n }\n /**\n * Encodes the value of a URL parameter or query-string.\n * @param value The value.\n * @returns The encoded value.\n */\n encodeValue(value) {\n return standardEncoding(value);\n }\n /**\n * Decodes an encoded URL parameter or query-string key.\n * @param key The encoded key name.\n * @returns The decoded key name.\n */\n decodeKey(key) {\n return decodeURIComponent(key);\n }\n /**\n * Decodes an encoded URL parameter or query-string value.\n * @param value The encoded value.\n * @returns The decoded value.\n */\n decodeValue(value) {\n return decodeURIComponent(value);\n }\n}\nfunction paramParser(rawParams, codec) {\n const map = new Map();\n if (rawParams.length > 0) {\n // The `window.location.search` can be used while creating an instance of the `HttpParams` class\n // (e.g. `new HttpParams({ fromString: window.location.search })`). The `window.location.search`\n // may start with the `?` char, so we strip it if it's present.\n const params = rawParams.replace(/^\\?/, '').split('&');\n params.forEach((param) => {\n const eqIdx = param.indexOf('=');\n const [key, val] = eqIdx == -1 ?\n [codec.decodeKey(param), ''] :\n [codec.decodeKey(param.slice(0, eqIdx)), codec.decodeValue(param.slice(eqIdx + 1))];\n const list = map.get(key) || [];\n list.push(val);\n map.set(key, list);\n });\n }\n return map;\n}\n/**\n * Encode input string with standard encodeURIComponent and then un-encode specific characters.\n */\nconst STANDARD_ENCODING_REGEX = /%(\\d[a-f0-9])/gi;\nconst STANDARD_ENCODING_REPLACEMENTS = {\n '40': '@',\n '3A': ':',\n '24': '$',\n '2C': ',',\n '3B': ';',\n '2B': '+',\n '3D': '=',\n '3F': '?',\n '2F': '/',\n};\nfunction standardEncoding(v) {\n return encodeURIComponent(v).replace(STANDARD_ENCODING_REGEX, (s, t) => { var _a; return (_a = STANDARD_ENCODING_REPLACEMENTS[t]) !== null && _a !== void 0 ? _a : s; });\n}\nfunction valueToString(value) {\n return `${value}`;\n}\n/**\n * An HTTP request/response body that represents serialized parameters,\n * per the MIME type `application/x-www-form-urlencoded`.\n *\n * This class is immutable; all mutation operations return a new instance.\n *\n * @publicApi\n */\nclass HttpParams {\n constructor(options = {}) {\n this.updates = null;\n this.cloneFrom = null;\n this.encoder = options.encoder || new HttpUrlEncodingCodec();\n if (!!options.fromString) {\n if (!!options.fromObject) {\n throw new Error(`Cannot specify both fromString and fromObject.`);\n }\n this.map = paramParser(options.fromString, this.encoder);\n }\n else if (!!options.fromObject) {\n this.map = new Map();\n Object.keys(options.fromObject).forEach(key => {\n const value = options.fromObject[key];\n this.map.set(key, Array.isArray(value) ? value : [value]);\n });\n }\n else {\n this.map = null;\n }\n }\n /**\n * Reports whether the body includes one or more values for a given parameter.\n * @param param The parameter name.\n * @returns True if the parameter has one or more values,\n * false if it has no value or is not present.\n */\n has(param) {\n this.init();\n return this.map.has(param);\n }\n /**\n * Retrieves the first value for a parameter.\n * @param param The parameter name.\n * @returns The first value of the given parameter,\n * or `null` if the parameter is not present.\n */\n get(param) {\n this.init();\n const res = this.map.get(param);\n return !!res ? res[0] : null;\n }\n /**\n * Retrieves all values for a parameter.\n * @param param The parameter name.\n * @returns All values in a string array,\n * or `null` if the parameter not present.\n */\n getAll(param) {\n this.init();\n return this.map.get(param) || null;\n }\n /**\n * Retrieves all the parameters for this body.\n * @returns The parameter names in a string array.\n */\n keys() {\n this.init();\n return Array.from(this.map.keys());\n }\n /**\n * Appends a new value to existing values for a parameter.\n * @param param The parameter name.\n * @param value The new value to add.\n * @return A new body with the appended value.\n */\n append(param, value) {\n return this.clone({ param, value, op: 'a' });\n }\n /**\n * Constructs a new body with appended values for the given parameter name.\n * @param params parameters and values\n * @return A new body with the new value.\n */\n appendAll(params) {\n const updates = [];\n Object.keys(params).forEach(param => {\n const value = params[param];\n if (Array.isArray(value)) {\n value.forEach(_value => {\n updates.push({ param, value: _value, op: 'a' });\n });\n }\n else {\n updates.push({ param, value: value, op: 'a' });\n }\n });\n return this.clone(updates);\n }\n /**\n * Replaces the value for a parameter.\n * @param param The parameter name.\n * @param value The new value.\n * @return A new body with the new value.\n */\n set(param, value) {\n return this.clone({ param, value, op: 's' });\n }\n /**\n * Removes a given value or all values from a parameter.\n * @param param The parameter name.\n * @param value The value to remove, if provided.\n * @return A new body with the given value removed, or with all values\n * removed if no value is specified.\n */\n delete(param, value) {\n return this.clone({ param, value, op: 'd' });\n }\n /**\n * Serializes the body to an encoded string, where key-value pairs (separated by `=`) are\n * separated by `&`s.\n */\n toString() {\n this.init();\n return this.keys()\n .map(key => {\n const eKey = this.encoder.encodeKey(key);\n // `a: ['1']` produces `'a=1'`\n // `b: []` produces `''`\n // `c: ['1', '2']` produces `'c=1&c=2'`\n return this.map.get(key).map(value => eKey + '=' + this.encoder.encodeValue(value))\n .join('&');\n })\n // filter out empty values because `b: []` produces `''`\n // which results in `a=1&&c=1&c=2` instead of `a=1&c=1&c=2` if we don't\n .filter(param => param !== '')\n .join('&');\n }\n clone(update) {\n const clone = new HttpParams({ encoder: this.encoder });\n clone.cloneFrom = this.cloneFrom || this;\n clone.updates = (this.updates || []).concat(update);\n return clone;\n }\n init() {\n if (this.map === null) {\n this.map = new Map();\n }\n if (this.cloneFrom !== null) {\n this.cloneFrom.init();\n this.cloneFrom.keys().forEach(key => this.map.set(key, this.cloneFrom.map.get(key)));\n this.updates.forEach(update => {\n switch (update.op) {\n case 'a':\n case 's':\n const base = (update.op === 'a' ? this.map.get(update.param) : undefined) || [];\n base.push(valueToString(update.value));\n this.map.set(update.param, base);\n break;\n case 'd':\n if (update.value !== undefined) {\n let base = this.map.get(update.param) || [];\n const idx = base.indexOf(valueToString(update.value));\n if (idx !== -1) {\n base.splice(idx, 1);\n }\n if (base.length > 0) {\n this.map.set(update.param, base);\n }\n else {\n this.map.delete(update.param);\n }\n }\n else {\n this.map.delete(update.param);\n break;\n }\n }\n });\n this.cloneFrom = this.updates = null;\n }\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A token used to manipulate and access values stored in `HttpContext`.\n *\n * @publicApi\n */\nclass HttpContextToken {\n constructor(defaultValue) {\n this.defaultValue = defaultValue;\n }\n}\n/**\n * Http context stores arbitrary user defined values and ensures type safety without\n * actually knowing the types. It is backed by a `Map` and guarantees that keys do not clash.\n *\n * This context is mutable and is shared between cloned requests unless explicitly specified.\n *\n * @usageNotes\n *\n * ### Usage Example\n *\n * ```typescript\n * // inside cache.interceptors.ts\n * export const IS_CACHE_ENABLED = new HttpContextToken(() => false);\n *\n * export class CacheInterceptor implements HttpInterceptor {\n *\n * intercept(req: HttpRequest, delegate: HttpHandler): Observable> {\n * if (req.context.get(IS_CACHE_ENABLED) === true) {\n * return ...;\n * }\n * return delegate.handle(req);\n * }\n * }\n *\n * // inside a service\n *\n * this.httpClient.get('/api/weather', {\n * context: new HttpContext().set(IS_CACHE_ENABLED, true)\n * }).subscribe(...);\n * ```\n *\n * @publicApi\n */\nclass HttpContext {\n constructor() {\n this.map = new Map();\n }\n /**\n * Store a value in the context. If a value is already present it will be overwritten.\n *\n * @param token The reference to an instance of `HttpContextToken`.\n * @param value The value to store.\n *\n * @returns A reference to itself for easy chaining.\n */\n set(token, value) {\n this.map.set(token, value);\n return this;\n }\n /**\n * Retrieve the value associated with the given token.\n *\n * @param token The reference to an instance of `HttpContextToken`.\n *\n * @returns The stored value or default if one is defined.\n */\n get(token) {\n if (!this.map.has(token)) {\n this.map.set(token, token.defaultValue());\n }\n return this.map.get(token);\n }\n /**\n * Delete the value associated with the given token.\n *\n * @param token The reference to an instance of `HttpContextToken`.\n *\n * @returns A reference to itself for easy chaining.\n */\n delete(token) {\n this.map.delete(token);\n return this;\n }\n /**\n * @returns a list of tokens currently stored in the context.\n */\n keys() {\n return this.map.keys();\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Determine whether the given HTTP method may include a body.\n */\nfunction mightHaveBody(method) {\n switch (method) {\n case 'DELETE':\n case 'GET':\n case 'HEAD':\n case 'OPTIONS':\n case 'JSONP':\n return false;\n default:\n return true;\n }\n}\n/**\n * Safely assert whether the given value is an ArrayBuffer.\n *\n * In some execution environments ArrayBuffer is not defined.\n */\nfunction isArrayBuffer(value) {\n return typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer;\n}\n/**\n * Safely assert whether the given value is a Blob.\n *\n * In some execution environments Blob is not defined.\n */\nfunction isBlob(value) {\n return typeof Blob !== 'undefined' && value instanceof Blob;\n}\n/**\n * Safely assert whether the given value is a FormData instance.\n *\n * In some execution environments FormData is not defined.\n */\nfunction isFormData(value) {\n return typeof FormData !== 'undefined' && value instanceof FormData;\n}\n/**\n * Safely assert whether the given value is a URLSearchParams instance.\n *\n * In some execution environments URLSearchParams is not defined.\n */\nfunction isUrlSearchParams(value) {\n return typeof URLSearchParams !== 'undefined' && value instanceof URLSearchParams;\n}\n/**\n * An outgoing HTTP request with an optional typed body.\n *\n * `HttpRequest` represents an outgoing request, including URL, method,\n * headers, body, and other request configuration options. Instances should be\n * assumed to be immutable. To modify a `HttpRequest`, the `clone`\n * method should be used.\n *\n * @publicApi\n */\nclass HttpRequest {\n constructor(method, url, third, fourth) {\n this.url = url;\n /**\n * The request body, or `null` if one isn't set.\n *\n * Bodies are not enforced to be immutable, as they can include a reference to any\n * user-defined data type. However, interceptors should take care to preserve\n * idempotence by treating them as such.\n */\n this.body = null;\n /**\n * Whether this request should be made in a way that exposes progress events.\n *\n * Progress events are expensive (change detection runs on each event) and so\n * they should only be requested if the consumer intends to monitor them.\n */\n this.reportProgress = false;\n /**\n * Whether this request should be sent with outgoing credentials (cookies).\n */\n this.withCredentials = false;\n /**\n * The expected response type of the server.\n *\n * This is used to parse the response appropriately before returning it to\n * the requestee.\n */\n this.responseType = 'json';\n this.method = method.toUpperCase();\n // Next, need to figure out which argument holds the HttpRequestInit\n // options, if any.\n let options;\n // Check whether a body argument is expected. The only valid way to omit\n // the body argument is to use a known no-body method like GET.\n if (mightHaveBody(this.method) || !!fourth) {\n // Body is the third argument, options are the fourth.\n this.body = (third !== undefined) ? third : null;\n options = fourth;\n }\n else {\n // No body required, options are the third argument. The body stays null.\n options = third;\n }\n // If options have been passed, interpret them.\n if (options) {\n // Normalize reportProgress and withCredentials.\n this.reportProgress = !!options.reportProgress;\n this.withCredentials = !!options.withCredentials;\n // Override default response type of 'json' if one is provided.\n if (!!options.responseType) {\n this.responseType = options.responseType;\n }\n // Override headers if they're provided.\n if (!!options.headers) {\n this.headers = options.headers;\n }\n if (!!options.context) {\n this.context = options.context;\n }\n if (!!options.params) {\n this.params = options.params;\n }\n }\n // If no headers have been passed in, construct a new HttpHeaders instance.\n if (!this.headers) {\n this.headers = new HttpHeaders();\n }\n // If no context have been passed in, construct a new HttpContext instance.\n if (!this.context) {\n this.context = new HttpContext();\n }\n // If no parameters have been passed in, construct a new HttpUrlEncodedParams instance.\n if (!this.params) {\n this.params = new HttpParams();\n this.urlWithParams = url;\n }\n else {\n // Encode the parameters to a string in preparation for inclusion in the URL.\n const params = this.params.toString();\n if (params.length === 0) {\n // No parameters, the visible URL is just the URL given at creation time.\n this.urlWithParams = url;\n }\n else {\n // Does the URL already have query parameters? Look for '?'.\n const qIdx = url.indexOf('?');\n // There are 3 cases to handle:\n // 1) No existing parameters -> append '?' followed by params.\n // 2) '?' exists and is followed by existing query string ->\n // append '&' followed by params.\n // 3) '?' exists at the end of the url -> append params directly.\n // This basically amounts to determining the character, if any, with\n // which to join the URL and parameters.\n const sep = qIdx === -1 ? '?' : (qIdx < url.length - 1 ? '&' : '');\n this.urlWithParams = url + sep + params;\n }\n }\n }\n /**\n * Transform the free-form body into a serialized format suitable for\n * transmission to the server.\n */\n serializeBody() {\n // If no body is present, no need to serialize it.\n if (this.body === null) {\n return null;\n }\n // Check whether the body is already in a serialized form. If so,\n // it can just be returned directly.\n if (isArrayBuffer(this.body) || isBlob(this.body) || isFormData(this.body) ||\n isUrlSearchParams(this.body) || typeof this.body === 'string') {\n return this.body;\n }\n // Check whether the body is an instance of HttpUrlEncodedParams.\n if (this.body instanceof HttpParams) {\n return this.body.toString();\n }\n // Check whether the body is an object or array, and serialize with JSON if so.\n if (typeof this.body === 'object' || typeof this.body === 'boolean' ||\n Array.isArray(this.body)) {\n return JSON.stringify(this.body);\n }\n // Fall back on toString() for everything else.\n return this.body.toString();\n }\n /**\n * Examine the body and attempt to infer an appropriate MIME type\n * for it.\n *\n * If no such type can be inferred, this method will return `null`.\n */\n detectContentTypeHeader() {\n // An empty body has no content type.\n if (this.body === null) {\n return null;\n }\n // FormData bodies rely on the browser's content type assignment.\n if (isFormData(this.body)) {\n return null;\n }\n // Blobs usually have their own content type. If it doesn't, then\n // no type can be inferred.\n if (isBlob(this.body)) {\n return this.body.type || null;\n }\n // Array buffers have unknown contents and thus no type can be inferred.\n if (isArrayBuffer(this.body)) {\n return null;\n }\n // Technically, strings could be a form of JSON data, but it's safe enough\n // to assume they're plain strings.\n if (typeof this.body === 'string') {\n return 'text/plain';\n }\n // `HttpUrlEncodedParams` has its own content-type.\n if (this.body instanceof HttpParams) {\n return 'application/x-www-form-urlencoded;charset=UTF-8';\n }\n // Arrays, objects, boolean and numbers will be encoded as JSON.\n if (typeof this.body === 'object' || typeof this.body === 'number' ||\n typeof this.body === 'boolean') {\n return 'application/json';\n }\n // No type could be inferred.\n return null;\n }\n clone(update = {}) {\n var _a;\n // For method, url, and responseType, take the current value unless\n // it is overridden in the update hash.\n const method = update.method || this.method;\n const url = update.url || this.url;\n const responseType = update.responseType || this.responseType;\n // The body is somewhat special - a `null` value in update.body means\n // whatever current body is present is being overridden with an empty\n // body, whereas an `undefined` value in update.body implies no\n // override.\n const body = (update.body !== undefined) ? update.body : this.body;\n // Carefully handle the boolean options to differentiate between\n // `false` and `undefined` in the update args.\n const withCredentials = (update.withCredentials !== undefined) ? update.withCredentials : this.withCredentials;\n const reportProgress = (update.reportProgress !== undefined) ? update.reportProgress : this.reportProgress;\n // Headers and params may be appended to if `setHeaders` or\n // `setParams` are used.\n let headers = update.headers || this.headers;\n let params = update.params || this.params;\n // Pass on context if needed\n const context = (_a = update.context) !== null && _a !== void 0 ? _a : this.context;\n // Check whether the caller has asked to add headers.\n if (update.setHeaders !== undefined) {\n // Set every requested header.\n headers =\n Object.keys(update.setHeaders)\n .reduce((headers, name) => headers.set(name, update.setHeaders[name]), headers);\n }\n // Check whether the caller has asked to set params.\n if (update.setParams) {\n // Set every requested param.\n params = Object.keys(update.setParams)\n .reduce((params, param) => params.set(param, update.setParams[param]), params);\n }\n // Finally, construct the new HttpRequest using the pieces from above.\n return new HttpRequest(method, url, body, {\n params,\n headers,\n context,\n reportProgress,\n responseType,\n withCredentials,\n });\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Type enumeration for the different kinds of `HttpEvent`.\n *\n * @publicApi\n */\nvar HttpEventType;\n(function (HttpEventType) {\n /**\n * The request was sent out over the wire.\n */\n HttpEventType[HttpEventType[\"Sent\"] = 0] = \"Sent\";\n /**\n * An upload progress event was received.\n */\n HttpEventType[HttpEventType[\"UploadProgress\"] = 1] = \"UploadProgress\";\n /**\n * The response status code and headers were received.\n */\n HttpEventType[HttpEventType[\"ResponseHeader\"] = 2] = \"ResponseHeader\";\n /**\n * A download progress event was received.\n */\n HttpEventType[HttpEventType[\"DownloadProgress\"] = 3] = \"DownloadProgress\";\n /**\n * The full response including the body was received.\n */\n HttpEventType[HttpEventType[\"Response\"] = 4] = \"Response\";\n /**\n * A custom event from an interceptor or a backend.\n */\n HttpEventType[HttpEventType[\"User\"] = 5] = \"User\";\n})(HttpEventType || (HttpEventType = {}));\n/**\n * Base class for both `HttpResponse` and `HttpHeaderResponse`.\n *\n * @publicApi\n */\nclass HttpResponseBase {\n /**\n * Super-constructor for all responses.\n *\n * The single parameter accepted is an initialization hash. Any properties\n * of the response passed there will override the default values.\n */\n constructor(init, defaultStatus = 200 /* Ok */, defaultStatusText = 'OK') {\n // If the hash has values passed, use them to initialize the response.\n // Otherwise use the default values.\n this.headers = init.headers || new HttpHeaders();\n this.status = init.status !== undefined ? init.status : defaultStatus;\n this.statusText = init.statusText || defaultStatusText;\n this.url = init.url || null;\n // Cache the ok value to avoid defining a getter.\n this.ok = this.status >= 200 && this.status < 300;\n }\n}\n/**\n * A partial HTTP response which only includes the status and header data,\n * but no response body.\n *\n * `HttpHeaderResponse` is a `HttpEvent` available on the response\n * event stream, only when progress events are requested.\n *\n * @publicApi\n */\nclass HttpHeaderResponse extends HttpResponseBase {\n /**\n * Create a new `HttpHeaderResponse` with the given parameters.\n */\n constructor(init = {}) {\n super(init);\n this.type = HttpEventType.ResponseHeader;\n }\n /**\n * Copy this `HttpHeaderResponse`, overriding its contents with the\n * given parameter hash.\n */\n clone(update = {}) {\n // Perform a straightforward initialization of the new HttpHeaderResponse,\n // overriding the current parameters with new ones if given.\n return new HttpHeaderResponse({\n headers: update.headers || this.headers,\n status: update.status !== undefined ? update.status : this.status,\n statusText: update.statusText || this.statusText,\n url: update.url || this.url || undefined,\n });\n }\n}\n/**\n * A full HTTP response, including a typed response body (which may be `null`\n * if one was not returned).\n *\n * `HttpResponse` is a `HttpEvent` available on the response event\n * stream.\n *\n * @publicApi\n */\nclass HttpResponse extends HttpResponseBase {\n /**\n * Construct a new `HttpResponse`.\n */\n constructor(init = {}) {\n super(init);\n this.type = HttpEventType.Response;\n this.body = init.body !== undefined ? init.body : null;\n }\n clone(update = {}) {\n return new HttpResponse({\n body: (update.body !== undefined) ? update.body : this.body,\n headers: update.headers || this.headers,\n status: (update.status !== undefined) ? update.status : this.status,\n statusText: update.statusText || this.statusText,\n url: update.url || this.url || undefined,\n });\n }\n}\n/**\n * A response that represents an error or failure, either from a\n * non-successful HTTP status, an error while executing the request,\n * or some other failure which occurred during the parsing of the response.\n *\n * Any error returned on the `Observable` response stream will be\n * wrapped in an `HttpErrorResponse` to provide additional context about\n * the state of the HTTP layer when the error occurred. The error property\n * will contain either a wrapped Error object or the error response returned\n * from the server.\n *\n * @publicApi\n */\nclass HttpErrorResponse extends HttpResponseBase {\n constructor(init) {\n // Initialize with a default status of 0 / Unknown Error.\n super(init, 0, 'Unknown Error');\n this.name = 'HttpErrorResponse';\n /**\n * Errors are never okay, even when the status code is in the 2xx success range.\n */\n this.ok = false;\n // If the response was successful, then this was a parse error. Otherwise, it was\n // a protocol-level failure of some sort. Either the request failed in transit\n // or the server returned an unsuccessful status code.\n if (this.status >= 200 && this.status < 300) {\n this.message = `Http failure during parsing for ${init.url || '(unknown url)'}`;\n }\n else {\n this.message = `Http failure response for ${init.url || '(unknown url)'}: ${init.status} ${init.statusText}`;\n }\n this.error = init.error || null;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Constructs an instance of `HttpRequestOptions` from a source `HttpMethodOptions` and\n * the given `body`. This function clones the object and adds the body.\n *\n * Note that the `responseType` *options* value is a String that identifies the\n * single data type of the response.\n * A single overload version of the method handles each response type.\n * The value of `responseType` cannot be a union, as the combined signature could imply.\n *\n */\nfunction addBody(options, body) {\n return {\n body,\n headers: options.headers,\n context: options.context,\n observe: options.observe,\n params: options.params,\n reportProgress: options.reportProgress,\n responseType: options.responseType,\n withCredentials: options.withCredentials,\n };\n}\n/**\n * Performs HTTP requests.\n * This service is available as an injectable class, with methods to perform HTTP requests.\n * Each request method has multiple signatures, and the return type varies based on\n * the signature that is called (mainly the values of `observe` and `responseType`).\n *\n * Note that the `responseType` *options* value is a String that identifies the\n * single data type of the response.\n * A single overload version of the method handles each response type.\n * The value of `responseType` cannot be a union, as the combined signature could imply.\n\n *\n * @usageNotes\n * Sample HTTP requests for the [Tour of Heroes](/tutorial/toh-pt0) application.\n *\n * ### HTTP Request Example\n *\n * ```\n * // GET heroes whose name contains search term\n * searchHeroes(term: string): observable{\n *\n * const params = new HttpParams({fromString: 'name=term'});\n * return this.httpClient.request('GET', this.heroesUrl, {responseType:'json', params});\n * }\n * ```\n *\n * Alternatively, the parameter string can be used without invoking HttpParams\n * by directly joining to the URL.\n * ```\n * this.httpClient.request('GET', this.heroesUrl + '?' + 'name=term', {responseType:'json'});\n * ```\n *\n *\n * ### JSONP Example\n * ```\n * requestJsonp(url, callback = 'callback') {\n * return this.httpClient.jsonp(this.heroesURL, callback);\n * }\n * ```\n *\n * ### PATCH Example\n * ```\n * // PATCH one of the heroes' name\n * patchHero (id: number, heroName: string): Observable<{}> {\n * const url = `${this.heroesUrl}/${id}`; // PATCH api/heroes/42\n * return this.httpClient.patch(url, {name: heroName}, httpOptions)\n * .pipe(catchError(this.handleError('patchHero')));\n * }\n * ```\n *\n * @see [HTTP Guide](guide/http)\n * @see [HTTP Request](api/common/http/HttpRequest)\n *\n * @publicApi\n */\nclass HttpClient {\n constructor(handler) {\n this.handler = handler;\n }\n /**\n * Constructs an observable for a generic HTTP request that, when subscribed,\n * fires the request through the chain of registered interceptors and on to the\n * server.\n *\n * You can pass an `HttpRequest` directly as the only parameter. In this case,\n * the call returns an observable of the raw `HttpEvent` stream.\n *\n * Alternatively you can pass an HTTP method as the first parameter,\n * a URL string as the second, and an options hash containing the request body as the third.\n * See `addBody()`. In this case, the specified `responseType` and `observe` options determine the\n * type of returned observable.\n * * The `responseType` value determines how a successful response body is parsed.\n * * If `responseType` is the default `json`, you can pass a type interface for the resulting\n * object as a type parameter to the call.\n *\n * The `observe` value determines the return type, according to what you are interested in\n * observing.\n * * An `observe` value of events returns an observable of the raw `HttpEvent` stream, including\n * progress events by default.\n * * An `observe` value of response returns an observable of `HttpResponse`,\n * where the `T` parameter depends on the `responseType` and any optionally provided type\n * parameter.\n * * An `observe` value of body returns an observable of `` with the same `T` body type.\n *\n */\n request(first, url, options = {}) {\n let req;\n // First, check whether the primary argument is an instance of `HttpRequest`.\n if (first instanceof HttpRequest) {\n // It is. The other arguments must be undefined (per the signatures) and can be\n // ignored.\n req = first;\n }\n else {\n // It's a string, so it represents a URL. Construct a request based on it,\n // and incorporate the remaining arguments (assuming `GET` unless a method is\n // provided.\n // Figure out the headers.\n let headers = undefined;\n if (options.headers instanceof HttpHeaders) {\n headers = options.headers;\n }\n else {\n headers = new HttpHeaders(options.headers);\n }\n // Sort out parameters.\n let params = undefined;\n if (!!options.params) {\n if (options.params instanceof HttpParams) {\n params = options.params;\n }\n else {\n params = new HttpParams({ fromObject: options.params });\n }\n }\n // Construct the request.\n req = new HttpRequest(first, url, (options.body !== undefined ? options.body : null), {\n headers,\n context: options.context,\n params,\n reportProgress: options.reportProgress,\n // By default, JSON is assumed to be returned for all calls.\n responseType: options.responseType || 'json',\n withCredentials: options.withCredentials,\n });\n }\n // Start with an Observable.of() the initial request, and run the handler (which\n // includes all interceptors) inside a concatMap(). This way, the handler runs\n // inside an Observable chain, which causes interceptors to be re-run on every\n // subscription (this also makes retries re-run the handler, including interceptors).\n const events$ = of(req).pipe(concatMap((req) => this.handler.handle(req)));\n // If coming via the API signature which accepts a previously constructed HttpRequest,\n // the only option is to get the event stream. Otherwise, return the event stream if\n // that is what was requested.\n if (first instanceof HttpRequest || options.observe === 'events') {\n return events$;\n }\n // The requested stream contains either the full response or the body. In either\n // case, the first step is to filter the event stream to extract a stream of\n // responses(s).\n const res$ = events$.pipe(filter((event) => event instanceof HttpResponse));\n // Decide which stream to return.\n switch (options.observe || 'body') {\n case 'body':\n // The requested stream is the body. Map the response stream to the response\n // body. This could be done more simply, but a misbehaving interceptor might\n // transform the response body into a different format and ignore the requested\n // responseType. Guard against this by validating that the response is of the\n // requested type.\n switch (req.responseType) {\n case 'arraybuffer':\n return res$.pipe(map((res) => {\n // Validate that the body is an ArrayBuffer.\n if (res.body !== null && !(res.body instanceof ArrayBuffer)) {\n throw new Error('Response is not an ArrayBuffer.');\n }\n return res.body;\n }));\n case 'blob':\n return res$.pipe(map((res) => {\n // Validate that the body is a Blob.\n if (res.body !== null && !(res.body instanceof Blob)) {\n throw new Error('Response is not a Blob.');\n }\n return res.body;\n }));\n case 'text':\n return res$.pipe(map((res) => {\n // Validate that the body is a string.\n if (res.body !== null && typeof res.body !== 'string') {\n throw new Error('Response is not a string.');\n }\n return res.body;\n }));\n case 'json':\n default:\n // No validation needed for JSON responses, as they can be of any type.\n return res$.pipe(map((res) => res.body));\n }\n case 'response':\n // The response stream was requested directly, so return it.\n return res$;\n default:\n // Guard against new future observe types being added.\n throw new Error(`Unreachable: unhandled observe type ${options.observe}}`);\n }\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `DELETE` request to execute on the server. See the individual overloads for\n * details on the return type.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n */\n delete(url, options = {}) {\n return this.request('DELETE', url, options);\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `GET` request to execute on the server. See the individual overloads for\n * details on the return type.\n */\n get(url, options = {}) {\n return this.request('GET', url, options);\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `HEAD` request to execute on the server. The `HEAD` method returns\n * meta information about the resource without transferring the\n * resource itself. See the individual overloads for\n * details on the return type.\n */\n head(url, options = {}) {\n return this.request('HEAD', url, options);\n }\n /**\n * Constructs an `Observable` that, when subscribed, causes a request with the special method\n * `JSONP` to be dispatched via the interceptor pipeline.\n * The [JSONP pattern](https://en.wikipedia.org/wiki/JSONP) works around limitations of certain\n * API endpoints that don't support newer,\n * and preferable [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) protocol.\n * JSONP treats the endpoint API as a JavaScript file and tricks the browser to process the\n * requests even if the API endpoint is not located on the same domain (origin) as the client-side\n * application making the request.\n * The endpoint API must support JSONP callback for JSONP requests to work.\n * The resource API returns the JSON response wrapped in a callback function.\n * You can pass the callback function name as one of the query parameters.\n * Note that JSONP requests can only be used with `GET` requests.\n *\n * @param url The resource URL.\n * @param callbackParam The callback function name.\n *\n */\n jsonp(url, callbackParam) {\n return this.request('JSONP', url, {\n params: new HttpParams().append(callbackParam, 'JSONP_CALLBACK'),\n observe: 'body',\n responseType: 'json',\n });\n }\n /**\n * Constructs an `Observable` that, when subscribed, causes the configured\n * `OPTIONS` request to execute on the server. This method allows the client\n * to determine the supported HTTP methods and other capabilities of an endpoint,\n * without implying a resource action. See the individual overloads for\n * details on the return type.\n */\n options(url, options = {}) {\n return this.request('OPTIONS', url, options);\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `PATCH` request to execute on the server. See the individual overloads for\n * details on the return type.\n */\n patch(url, body, options = {}) {\n return this.request('PATCH', url, addBody(options, body));\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `POST` request to execute on the server. The server responds with the location of\n * the replaced resource. See the individual overloads for\n * details on the return type.\n */\n post(url, body, options = {}) {\n return this.request('POST', url, addBody(options, body));\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `PUT` request to execute on the server. The `PUT` method replaces an existing resource\n * with a new set of values.\n * See the individual overloads for details on the return type.\n */\n put(url, body, options = {}) {\n return this.request('PUT', url, addBody(options, body));\n }\n}\nHttpClient.ɵfac = function HttpClient_Factory(t) { return new (t || HttpClient)(ɵngcc0.ɵɵinject(HttpHandler)); };\nHttpClient.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: HttpClient, factory: HttpClient.ɵfac });\nHttpClient.ctorParameters = () => [\n { type: HttpHandler }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(HttpClient, [{\n type: Injectable\n }], function () { return [{ type: HttpHandler }]; }, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * `HttpHandler` which applies an `HttpInterceptor` to an `HttpRequest`.\n *\n *\n */\nclass HttpInterceptorHandler {\n constructor(next, interceptor) {\n this.next = next;\n this.interceptor = interceptor;\n }\n handle(req) {\n return this.interceptor.intercept(req, this.next);\n }\n}\n/**\n * A multi-provider token that represents the array of registered\n * `HttpInterceptor` objects.\n *\n * @publicApi\n */\nconst HTTP_INTERCEPTORS = new InjectionToken('HTTP_INTERCEPTORS');\nclass NoopInterceptor {\n intercept(req, next) {\n return next.handle(req);\n }\n}\nNoopInterceptor.ɵfac = function NoopInterceptor_Factory(t) { return new (t || NoopInterceptor)(); };\nNoopInterceptor.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NoopInterceptor, factory: NoopInterceptor.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NoopInterceptor, [{\n type: Injectable\n }], null, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Every request made through JSONP needs a callback name that's unique across the\n// whole page. Each request is assigned an id and the callback name is constructed\n// from that. The next id to be assigned is tracked in a global variable here that\n// is shared among all applications on the page.\nlet nextRequestId = 0;\n// Error text given when a JSONP script is injected, but doesn't invoke the callback\n// passed in its URL.\nconst JSONP_ERR_NO_CALLBACK = 'JSONP injected script did not invoke callback.';\n// Error text given when a request is passed to the JsonpClientBackend that doesn't\n// have a request method JSONP.\nconst JSONP_ERR_WRONG_METHOD = 'JSONP requests must use JSONP request method.';\nconst JSONP_ERR_WRONG_RESPONSE_TYPE = 'JSONP requests must use Json response type.';\n/**\n * DI token/abstract type representing a map of JSONP callbacks.\n *\n * In the browser, this should always be the `window` object.\n *\n *\n */\nclass JsonpCallbackContext {\n}\n/**\n * Processes an `HttpRequest` with the JSONP method,\n * by performing JSONP style requests.\n * @see `HttpHandler`\n * @see `HttpXhrBackend`\n *\n * @publicApi\n */\nclass JsonpClientBackend {\n constructor(callbackMap, document) {\n this.callbackMap = callbackMap;\n this.document = document;\n /**\n * A resolved promise that can be used to schedule microtasks in the event handlers.\n */\n this.resolvedPromise = Promise.resolve();\n }\n /**\n * Get the name of the next callback method, by incrementing the global `nextRequestId`.\n */\n nextCallback() {\n return `ng_jsonp_callback_${nextRequestId++}`;\n }\n /**\n * Processes a JSONP request and returns an event stream of the results.\n * @param req The request object.\n * @returns An observable of the response events.\n *\n */\n handle(req) {\n // Firstly, check both the method and response type. If either doesn't match\n // then the request was improperly routed here and cannot be handled.\n if (req.method !== 'JSONP') {\n throw new Error(JSONP_ERR_WRONG_METHOD);\n }\n else if (req.responseType !== 'json') {\n throw new Error(JSONP_ERR_WRONG_RESPONSE_TYPE);\n }\n // Everything else happens inside the Observable boundary.\n return new Observable((observer) => {\n // The first step to make a request is to generate the callback name, and replace the\n // callback placeholder in the URL with the name. Care has to be taken here to ensure\n // a trailing &, if matched, gets inserted back into the URL in the correct place.\n const callback = this.nextCallback();\n const url = req.urlWithParams.replace(/=JSONP_CALLBACK(&|$)/, `=${callback}$1`);\n // Construct the \n if (val === '') return true;\n if (val === 'false') return false;\n if (val === 'true') return true;\n return val;\n}\n\nif (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {\n var attrs = [['data-family-prefix', 'familyPrefix'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']];\n attrs.forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n attr = _ref2[0],\n key = _ref2[1];\n\n var val = coerce(getAttrConfig(attr));\n\n if (val !== undefined && val !== null) {\n initial[key] = val;\n }\n });\n}\n\nvar _default = {\n familyPrefix: DEFAULT_FAMILY_PREFIX,\n replacementClass: DEFAULT_REPLACEMENT_CLASS,\n autoReplaceSvg: true,\n autoAddCss: true,\n autoA11y: true,\n searchPseudoElements: false,\n observeMutations: true,\n mutateApproach: 'async',\n keepOriginalSource: true,\n measurePerformance: false,\n showMissingIcons: true\n};\n\nvar _config = _objectSpread({}, _default, initial);\n\nif (!_config.autoReplaceSvg) _config.observeMutations = false;\n\nvar config = _objectSpread({}, _config);\n\nWINDOW.FontAwesomeConfig = config;\n\nvar w = WINDOW || {};\nif (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};\nif (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};\nif (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};\nif (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];\nvar namespace = w[NAMESPACE_IDENTIFIER];\n\nvar functions = [];\n\nvar listener = function listener() {\n DOCUMENT.removeEventListener('DOMContentLoaded', listener);\n loaded = 1;\n functions.map(function (fn) {\n return fn();\n });\n};\n\nvar loaded = false;\n\nif (IS_DOM) {\n loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);\n if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);\n}\n\nfunction domready (fn) {\n if (!IS_DOM) return;\n loaded ? setTimeout(fn, 0) : functions.push(fn);\n}\n\nvar PENDING = 'pending';\nvar SETTLED = 'settled';\nvar FULFILLED = 'fulfilled';\nvar REJECTED = 'rejected';\n\nvar NOOP = function NOOP() {};\n\nvar isNode = typeof global !== 'undefined' && typeof global.process !== 'undefined' && typeof global.process.emit === 'function';\nvar asyncSetTimer = typeof setImmediate === 'undefined' ? setTimeout : setImmediate;\nvar asyncQueue = [];\nvar asyncTimer;\n\nfunction asyncFlush() {\n // run promise callbacks\n for (var i = 0; i < asyncQueue.length; i++) {\n asyncQueue[i][0](asyncQueue[i][1]);\n } // reset async asyncQueue\n\n\n asyncQueue = [];\n asyncTimer = false;\n}\n\nfunction asyncCall(callback, arg) {\n asyncQueue.push([callback, arg]);\n\n if (!asyncTimer) {\n asyncTimer = true;\n asyncSetTimer(asyncFlush, 0);\n }\n}\n\nfunction invokeResolver(resolver, promise) {\n function resolvePromise(value) {\n resolve(promise, value);\n }\n\n function rejectPromise(reason) {\n reject(promise, reason);\n }\n\n try {\n resolver(resolvePromise, rejectPromise);\n } catch (e) {\n rejectPromise(e);\n }\n}\n\nfunction invokeCallback(subscriber) {\n var owner = subscriber.owner;\n var settled = owner._state;\n var value = owner._data;\n var callback = subscriber[settled];\n var promise = subscriber.then;\n\n if (typeof callback === 'function') {\n settled = FULFILLED;\n\n try {\n value = callback(value);\n } catch (e) {\n reject(promise, e);\n }\n }\n\n if (!handleThenable(promise, value)) {\n if (settled === FULFILLED) {\n resolve(promise, value);\n }\n\n if (settled === REJECTED) {\n reject(promise, value);\n }\n }\n}\n\nfunction handleThenable(promise, value) {\n var resolved;\n\n try {\n if (promise === value) {\n throw new TypeError('A promises callback cannot return that same promise.');\n }\n\n if (value && (typeof value === 'function' || _typeof(value) === 'object')) {\n // then should be retrieved only once\n var then = value.then;\n\n if (typeof then === 'function') {\n then.call(value, function (val) {\n if (!resolved) {\n resolved = true;\n\n if (value === val) {\n fulfill(promise, val);\n } else {\n resolve(promise, val);\n }\n }\n }, function (reason) {\n if (!resolved) {\n resolved = true;\n reject(promise, reason);\n }\n });\n return true;\n }\n }\n } catch (e) {\n if (!resolved) {\n reject(promise, e);\n }\n\n return true;\n }\n\n return false;\n}\n\nfunction resolve(promise, value) {\n if (promise === value || !handleThenable(promise, value)) {\n fulfill(promise, value);\n }\n}\n\nfunction fulfill(promise, value) {\n if (promise._state === PENDING) {\n promise._state = SETTLED;\n promise._data = value;\n asyncCall(publishFulfillment, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state === PENDING) {\n promise._state = SETTLED;\n promise._data = reason;\n asyncCall(publishRejection, promise);\n }\n}\n\nfunction publish(promise) {\n promise._then = promise._then.forEach(invokeCallback);\n}\n\nfunction publishFulfillment(promise) {\n promise._state = FULFILLED;\n publish(promise);\n}\n\nfunction publishRejection(promise) {\n promise._state = REJECTED;\n publish(promise);\n\n if (!promise._handled && isNode) {\n global.process.emit('unhandledRejection', promise._data, promise);\n }\n}\n\nfunction notifyRejectionHandled(promise) {\n global.process.emit('rejectionHandled', promise);\n}\n/**\n * @class\n */\n\n\nfunction P(resolver) {\n if (typeof resolver !== 'function') {\n throw new TypeError('Promise resolver ' + resolver + ' is not a function');\n }\n\n if (this instanceof P === false) {\n throw new TypeError('Failed to construct \\'Promise\\': Please use the \\'new\\' operator, this object constructor cannot be called as a function.');\n }\n\n this._then = [];\n invokeResolver(resolver, this);\n}\n\nP.prototype = {\n constructor: P,\n _state: PENDING,\n _then: null,\n _data: undefined,\n _handled: false,\n then: function then(onFulfillment, onRejection) {\n var subscriber = {\n owner: this,\n then: new this.constructor(NOOP),\n fulfilled: onFulfillment,\n rejected: onRejection\n };\n\n if ((onRejection || onFulfillment) && !this._handled) {\n this._handled = true;\n\n if (this._state === REJECTED && isNode) {\n asyncCall(notifyRejectionHandled, this);\n }\n }\n\n if (this._state === FULFILLED || this._state === REJECTED) {\n // already resolved, call callback async\n asyncCall(invokeCallback, subscriber);\n } else {\n // subscribe\n this._then.push(subscriber);\n }\n\n return subscriber.then;\n },\n catch: function _catch(onRejection) {\n return this.then(null, onRejection);\n }\n};\n\nP.all = function (promises) {\n if (!Array.isArray(promises)) {\n throw new TypeError('You must pass an array to Promise.all().');\n }\n\n return new P(function (resolve, reject) {\n var results = [];\n var remaining = 0;\n\n function resolver(index) {\n remaining++;\n return function (value) {\n results[index] = value;\n\n if (! --remaining) {\n resolve(results);\n }\n };\n }\n\n for (var i = 0, promise; i < promises.length; i++) {\n promise = promises[i];\n\n if (promise && typeof promise.then === 'function') {\n promise.then(resolver(i), reject);\n } else {\n results[i] = promise;\n }\n }\n\n if (!remaining) {\n resolve(results);\n }\n });\n};\n\nP.race = function (promises) {\n if (!Array.isArray(promises)) {\n throw new TypeError('You must pass an array to Promise.race().');\n }\n\n return new P(function (resolve, reject) {\n for (var i = 0, promise; i < promises.length; i++) {\n promise = promises[i];\n\n if (promise && typeof promise.then === 'function') {\n promise.then(resolve, reject);\n } else {\n resolve(promise);\n }\n }\n });\n};\n\nP.resolve = function (value) {\n if (value && _typeof(value) === 'object' && value.constructor === P) {\n return value;\n }\n\n return new P(function (resolve) {\n resolve(value);\n });\n};\n\nP.reject = function (reason) {\n return new P(function (resolve, reject) {\n reject(reason);\n });\n};\n\nvar picked = typeof Promise === 'function' ? Promise : P;\n\nvar d = UNITS_IN_GRID;\nvar meaninglessTransform = {\n size: 16,\n x: 0,\n y: 0,\n rotate: 0,\n flipX: false,\n flipY: false\n};\n\nfunction isReserved(name) {\n return ~RESERVED_CLASSES.indexOf(name);\n}\nfunction insertCss(css) {\n if (!css || !IS_DOM) {\n return;\n }\n\n var style = DOCUMENT.createElement('style');\n style.setAttribute('type', 'text/css');\n style.innerHTML = css;\n var headChildren = DOCUMENT.head.childNodes;\n var beforeChild = null;\n\n for (var i = headChildren.length - 1; i > -1; i--) {\n var child = headChildren[i];\n var tagName = (child.tagName || '').toUpperCase();\n\n if (['STYLE', 'LINK'].indexOf(tagName) > -1) {\n beforeChild = child;\n }\n }\n\n DOCUMENT.head.insertBefore(style, beforeChild);\n return css;\n}\nvar idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\nfunction nextUniqueId() {\n var size = 12;\n var id = '';\n\n while (size-- > 0) {\n id += idPool[Math.random() * 62 | 0];\n }\n\n return id;\n}\nfunction toArray(obj) {\n var array = [];\n\n for (var i = (obj || []).length >>> 0; i--;) {\n array[i] = obj[i];\n }\n\n return array;\n}\nfunction classArray(node) {\n if (node.classList) {\n return toArray(node.classList);\n } else {\n return (node.getAttribute('class') || '').split(' ').filter(function (i) {\n return i;\n });\n }\n}\nfunction getIconName(familyPrefix, cls) {\n var parts = cls.split('-');\n var prefix = parts[0];\n var iconName = parts.slice(1).join('-');\n\n if (prefix === familyPrefix && iconName !== '' && !isReserved(iconName)) {\n return iconName;\n } else {\n return null;\n }\n}\nfunction htmlEscape(str) {\n return \"\".concat(str).replace(/&/g, '&').replace(/\"/g, '"').replace(/'/g, ''').replace(//g, '>');\n}\nfunction joinAttributes(attributes) {\n return Object.keys(attributes || {}).reduce(function (acc, attributeName) {\n return acc + \"\".concat(attributeName, \"=\\\"\").concat(htmlEscape(attributes[attributeName]), \"\\\" \");\n }, '').trim();\n}\nfunction joinStyles(styles) {\n return Object.keys(styles || {}).reduce(function (acc, styleName) {\n return acc + \"\".concat(styleName, \": \").concat(styles[styleName], \";\");\n }, '');\n}\nfunction transformIsMeaningful(transform) {\n return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY;\n}\nfunction transformForSvg(_ref) {\n var transform = _ref.transform,\n containerWidth = _ref.containerWidth,\n iconWidth = _ref.iconWidth;\n var outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n var innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n var innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n var innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n var inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n var path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n return {\n outer: outer,\n inner: inner,\n path: path\n };\n}\nfunction transformForCss(_ref2) {\n var transform = _ref2.transform,\n _ref2$width = _ref2.width,\n width = _ref2$width === void 0 ? UNITS_IN_GRID : _ref2$width,\n _ref2$height = _ref2.height,\n height = _ref2$height === void 0 ? UNITS_IN_GRID : _ref2$height,\n _ref2$startCentered = _ref2.startCentered,\n startCentered = _ref2$startCentered === void 0 ? false : _ref2$startCentered;\n var val = '';\n\n if (startCentered && IS_IE) {\n val += \"translate(\".concat(transform.x / d - width / 2, \"em, \").concat(transform.y / d - height / 2, \"em) \");\n } else if (startCentered) {\n val += \"translate(calc(-50% + \".concat(transform.x / d, \"em), calc(-50% + \").concat(transform.y / d, \"em)) \");\n } else {\n val += \"translate(\".concat(transform.x / d, \"em, \").concat(transform.y / d, \"em) \");\n }\n\n val += \"scale(\".concat(transform.size / d * (transform.flipX ? -1 : 1), \", \").concat(transform.size / d * (transform.flipY ? -1 : 1), \") \");\n val += \"rotate(\".concat(transform.rotate, \"deg) \");\n return val;\n}\n\nvar ALL_SPACE = {\n x: 0,\n y: 0,\n width: '100%',\n height: '100%'\n};\n\nfunction fillBlack(abstract) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (abstract.attributes && (abstract.attributes.fill || force)) {\n abstract.attributes.fill = 'black';\n }\n\n return abstract;\n}\n\nfunction deGroup(abstract) {\n if (abstract.tag === 'g') {\n return abstract.children;\n } else {\n return [abstract];\n }\n}\n\nfunction makeIconMasking (_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n main = _ref.main,\n mask = _ref.mask,\n transform = _ref.transform;\n var mainWidth = main.width,\n mainPath = main.icon;\n var maskWidth = mask.width,\n maskPath = mask.icon;\n var trans = transformForSvg({\n transform: transform,\n containerWidth: maskWidth,\n iconWidth: mainWidth\n });\n var maskRect = {\n tag: 'rect',\n attributes: _objectSpread({}, ALL_SPACE, {\n fill: 'white'\n })\n };\n var maskInnerGroupChildrenMixin = mainPath.children ? {\n children: mainPath.children.map(fillBlack)\n } : {};\n var maskInnerGroup = {\n tag: 'g',\n attributes: _objectSpread({}, trans.inner),\n children: [fillBlack(_objectSpread({\n tag: mainPath.tag,\n attributes: _objectSpread({}, mainPath.attributes, trans.path)\n }, maskInnerGroupChildrenMixin))]\n };\n var maskOuterGroup = {\n tag: 'g',\n attributes: _objectSpread({}, trans.outer),\n children: [maskInnerGroup]\n };\n var maskId = \"mask-\".concat(nextUniqueId());\n var clipId = \"clip-\".concat(nextUniqueId());\n var maskTag = {\n tag: 'mask',\n attributes: _objectSpread({}, ALL_SPACE, {\n id: maskId,\n maskUnits: 'userSpaceOnUse',\n maskContentUnits: 'userSpaceOnUse'\n }),\n children: [maskRect, maskOuterGroup]\n };\n var defs = {\n tag: 'defs',\n children: [{\n tag: 'clipPath',\n attributes: {\n id: clipId\n },\n children: deGroup(maskPath)\n }, maskTag]\n };\n children.push(defs, {\n tag: 'rect',\n attributes: _objectSpread({\n fill: 'currentColor',\n 'clip-path': \"url(#\".concat(clipId, \")\"),\n mask: \"url(#\".concat(maskId, \")\")\n }, ALL_SPACE)\n });\n return {\n children: children,\n attributes: attributes\n };\n}\n\nfunction makeIconStandard (_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n main = _ref.main,\n transform = _ref.transform,\n styles = _ref.styles;\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n if (transformIsMeaningful(transform)) {\n var trans = transformForSvg({\n transform: transform,\n containerWidth: main.width,\n iconWidth: main.width\n });\n children.push({\n tag: 'g',\n attributes: _objectSpread({}, trans.outer),\n children: [{\n tag: 'g',\n attributes: _objectSpread({}, trans.inner),\n children: [{\n tag: main.icon.tag,\n children: main.icon.children,\n attributes: _objectSpread({}, main.icon.attributes, trans.path)\n }]\n }]\n });\n } else {\n children.push(main.icon);\n }\n\n return {\n children: children,\n attributes: attributes\n };\n}\n\nfunction asIcon (_ref) {\n var children = _ref.children,\n main = _ref.main,\n mask = _ref.mask,\n attributes = _ref.attributes,\n styles = _ref.styles,\n transform = _ref.transform;\n\n if (transformIsMeaningful(transform) && main.found && !mask.found) {\n var width = main.width,\n height = main.height;\n var offset = {\n x: width / height / 2,\n y: 0.5\n };\n attributes['style'] = joinStyles(_objectSpread({}, styles, {\n 'transform-origin': \"\".concat(offset.x + transform.x / 16, \"em \").concat(offset.y + transform.y / 16, \"em\")\n }));\n }\n\n return [{\n tag: 'svg',\n attributes: attributes,\n children: children\n }];\n}\n\nfunction asSymbol (_ref) {\n var prefix = _ref.prefix,\n iconName = _ref.iconName,\n children = _ref.children,\n attributes = _ref.attributes,\n symbol = _ref.symbol;\n var id = symbol === true ? \"\".concat(prefix, \"-\").concat(config.familyPrefix, \"-\").concat(iconName) : symbol;\n return [{\n tag: 'svg',\n attributes: {\n style: 'display: none;'\n },\n children: [{\n tag: 'symbol',\n attributes: _objectSpread({}, attributes, {\n id: id\n }),\n children: children\n }]\n }];\n}\n\nfunction makeInlineSvgAbstract(params) {\n var _params$icons = params.icons,\n main = _params$icons.main,\n mask = _params$icons.mask,\n prefix = params.prefix,\n iconName = params.iconName,\n transform = params.transform,\n symbol = params.symbol,\n title = params.title,\n extra = params.extra,\n _params$watchable = params.watchable,\n watchable = _params$watchable === void 0 ? false : _params$watchable;\n\n var _ref = mask.found ? mask : main,\n width = _ref.width,\n height = _ref.height;\n\n var widthClass = \"fa-w-\".concat(Math.ceil(width / height * 16));\n var attrClass = [config.replacementClass, iconName ? \"\".concat(config.familyPrefix, \"-\").concat(iconName) : '', widthClass].filter(function (c) {\n return extra.classes.indexOf(c) === -1;\n }).concat(extra.classes).join(' ');\n var content = {\n children: [],\n attributes: _objectSpread({}, extra.attributes, {\n 'data-prefix': prefix,\n 'data-icon': iconName,\n 'class': attrClass,\n 'role': extra.attributes.role || 'img',\n 'xmlns': 'http://www.w3.org/2000/svg',\n 'viewBox': \"0 0 \".concat(width, \" \").concat(height)\n })\n };\n\n if (watchable) {\n content.attributes[DATA_FA_I2SVG] = '';\n }\n\n if (title) content.children.push({\n tag: 'title',\n attributes: {\n id: content.attributes['aria-labelledby'] || \"title-\".concat(nextUniqueId())\n },\n children: [title]\n });\n\n var args = _objectSpread({}, content, {\n prefix: prefix,\n iconName: iconName,\n main: main,\n mask: mask,\n transform: transform,\n symbol: symbol,\n styles: extra.styles\n });\n\n var _ref2 = mask.found && main.found ? makeIconMasking(args) : makeIconStandard(args),\n children = _ref2.children,\n attributes = _ref2.attributes;\n\n args.children = children;\n args.attributes = attributes;\n\n if (symbol) {\n return asSymbol(args);\n } else {\n return asIcon(args);\n }\n}\nfunction makeLayersTextAbstract(params) {\n var content = params.content,\n width = params.width,\n height = params.height,\n transform = params.transform,\n title = params.title,\n extra = params.extra,\n _params$watchable2 = params.watchable,\n watchable = _params$watchable2 === void 0 ? false : _params$watchable2;\n\n var attributes = _objectSpread({}, extra.attributes, title ? {\n 'title': title\n } : {}, {\n 'class': extra.classes.join(' ')\n });\n\n if (watchable) {\n attributes[DATA_FA_I2SVG] = '';\n }\n\n var styles = _objectSpread({}, extra.styles);\n\n if (transformIsMeaningful(transform)) {\n styles['transform'] = transformForCss({\n transform: transform,\n startCentered: true,\n width: width,\n height: height\n });\n styles['-webkit-transform'] = styles['transform'];\n }\n\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\nfunction makeLayersCounterAbstract(params) {\n var content = params.content,\n title = params.title,\n extra = params.extra;\n\n var attributes = _objectSpread({}, extra.attributes, title ? {\n 'title': title\n } : {}, {\n 'class': extra.classes.join(' ')\n });\n\n var styleString = joinStyles(extra.styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\n\nvar noop$1 = function noop() {};\n\nvar p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : {\n mark: noop$1,\n measure: noop$1\n};\nvar preamble = \"FA \\\"5.12.1\\\"\";\n\nvar begin = function begin(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" begins\"));\n return function () {\n return end(name);\n };\n};\n\nvar end = function end(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" ends\"));\n p.measure(\"\".concat(preamble, \" \").concat(name), \"\".concat(preamble, \" \").concat(name, \" begins\"), \"\".concat(preamble, \" \").concat(name, \" ends\"));\n};\n\nvar perf = {\n begin: begin,\n end: end\n};\n\n/**\n * Internal helper to bind a function known to have 4 arguments\n * to a given context.\n */\n\nvar bindInternal4 = function bindInternal4(func, thisContext) {\n return function (a, b, c, d) {\n return func.call(thisContext, a, b, c, d);\n };\n};\n\n/**\n * # Reduce\n *\n * A fast object `.reduce()` implementation.\n *\n * @param {Object} subject The object to reduce over.\n * @param {Function} fn The reducer function.\n * @param {mixed} initialValue The initial value for the reducer, defaults to subject[0].\n * @param {Object} thisContext The context for the reducer.\n * @return {mixed} The final result.\n */\n\n\nvar reduce = function fastReduceObject(subject, fn, initialValue, thisContext) {\n var keys = Object.keys(subject),\n length = keys.length,\n iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn,\n i,\n key,\n result;\n\n if (initialValue === undefined) {\n i = 1;\n result = subject[keys[0]];\n } else {\n i = 0;\n result = initialValue;\n }\n\n for (; i < length; i++) {\n key = keys[i];\n result = iterator(result, subject[key], key, subject);\n }\n\n return result;\n};\n\nfunction toHex(unicode) {\n var result = '';\n\n for (var i = 0; i < unicode.length; i++) {\n var hex = unicode.charCodeAt(i).toString(16);\n result += ('000' + hex).slice(-4);\n }\n\n return result;\n}\n\nfunction defineIcons(prefix, icons) {\n var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var _params$skipHooks = params.skipHooks,\n skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;\n var normalized = Object.keys(icons).reduce(function (acc, iconName) {\n var icon = icons[iconName];\n var expanded = !!icon.icon;\n\n if (expanded) {\n acc[icon.iconName] = icon.icon;\n } else {\n acc[iconName] = icon;\n }\n\n return acc;\n }, {});\n\n if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {\n namespace.hooks.addPack(prefix, normalized);\n } else {\n namespace.styles[prefix] = _objectSpread({}, namespace.styles[prefix] || {}, normalized);\n }\n /**\n * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction\n * of new styles we needed to differentiate between them. Prefix `fa` is now an alias\n * for `fas` so we'll easy the upgrade process for our users by automatically defining\n * this as well.\n */\n\n\n if (prefix === 'fas') {\n defineIcons('fa', icons);\n }\n}\n\nvar styles = namespace.styles,\n shims = namespace.shims;\nvar _byUnicode = {};\nvar _byLigature = {};\nvar _byOldName = {};\nvar build = function build() {\n var lookup = function lookup(reducer) {\n return reduce(styles, function (o, style, prefix) {\n o[prefix] = reduce(style, reducer, {});\n return o;\n }, {});\n };\n\n _byUnicode = lookup(function (acc, icon, iconName) {\n if (icon[3]) {\n acc[icon[3]] = iconName;\n }\n\n return acc;\n });\n _byLigature = lookup(function (acc, icon, iconName) {\n var ligatures = icon[2];\n acc[iconName] = iconName;\n ligatures.forEach(function (ligature) {\n acc[ligature] = iconName;\n });\n return acc;\n });\n var hasRegular = 'far' in styles;\n _byOldName = reduce(shims, function (acc, shim) {\n var oldName = shim[0];\n var prefix = shim[1];\n var iconName = shim[2];\n\n if (prefix === 'far' && !hasRegular) {\n prefix = 'fas';\n }\n\n acc[oldName] = {\n prefix: prefix,\n iconName: iconName\n };\n return acc;\n }, {});\n};\nbuild();\nfunction byUnicode(prefix, unicode) {\n return (_byUnicode[prefix] || {})[unicode];\n}\nfunction byLigature(prefix, ligature) {\n return (_byLigature[prefix] || {})[ligature];\n}\nfunction byOldName(name) {\n return _byOldName[name] || {\n prefix: null,\n iconName: null\n };\n}\n\nvar styles$1 = namespace.styles;\nvar emptyCanonicalIcon = function emptyCanonicalIcon() {\n return {\n prefix: null,\n iconName: null,\n rest: []\n };\n};\nfunction getCanonicalIcon(values) {\n return values.reduce(function (acc, cls) {\n var iconName = getIconName(config.familyPrefix, cls);\n\n if (styles$1[cls]) {\n acc.prefix = cls;\n } else if (config.autoFetchSvg && ['fas', 'far', 'fal', 'fad', 'fab', 'fa'].indexOf(cls) > -1) {\n acc.prefix = cls;\n } else if (iconName) {\n var shim = acc.prefix === 'fa' ? byOldName(iconName) : {};\n acc.iconName = shim.iconName || iconName;\n acc.prefix = shim.prefix || acc.prefix;\n } else if (cls !== config.replacementClass && cls.indexOf('fa-w-') !== 0) {\n acc.rest.push(cls);\n }\n\n return acc;\n }, emptyCanonicalIcon());\n}\nfunction iconFromMapping(mapping, prefix, iconName) {\n if (mapping && mapping[prefix] && mapping[prefix][iconName]) {\n return {\n prefix: prefix,\n iconName: iconName,\n icon: mapping[prefix][iconName]\n };\n }\n}\n\nfunction toHtml(abstractNodes) {\n var tag = abstractNodes.tag,\n _abstractNodes$attrib = abstractNodes.attributes,\n attributes = _abstractNodes$attrib === void 0 ? {} : _abstractNodes$attrib,\n _abstractNodes$childr = abstractNodes.children,\n children = _abstractNodes$childr === void 0 ? [] : _abstractNodes$childr;\n\n if (typeof abstractNodes === 'string') {\n return htmlEscape(abstractNodes);\n } else {\n return \"<\".concat(tag, \" \").concat(joinAttributes(attributes), \">\").concat(children.map(toHtml).join(''), \"\");\n }\n}\n\nvar noop$2 = function noop() {};\n\nfunction isWatched(node) {\n var i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;\n return typeof i2svg === 'string';\n}\n\nfunction getMutator() {\n if (config.autoReplaceSvg === true) {\n return mutators.replace;\n }\n\n var mutator = mutators[config.autoReplaceSvg];\n return mutator || mutators.replace;\n}\n\nvar mutators = {\n replace: function replace(mutation) {\n var node = mutation[0];\n var abstract = mutation[1];\n var newOuterHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n\n if (node.parentNode && node.outerHTML) {\n node.outerHTML = newOuterHTML + (config.keepOriginalSource && node.tagName.toLowerCase() !== 'svg' ? \"\") : '');\n } else if (node.parentNode) {\n var newNode = document.createElement('span');\n node.parentNode.replaceChild(newNode, node);\n newNode.outerHTML = newOuterHTML;\n }\n },\n nest: function nest(mutation) {\n var node = mutation[0];\n var abstract = mutation[1]; // If we already have a replaced node we do not want to continue nesting within it.\n // Short-circuit to the standard replacement\n\n if (~classArray(node).indexOf(config.replacementClass)) {\n return mutators.replace(mutation);\n }\n\n var forSvg = new RegExp(\"\".concat(config.familyPrefix, \"-.*\"));\n delete abstract[0].attributes.style;\n delete abstract[0].attributes.id;\n var splitClasses = abstract[0].attributes.class.split(' ').reduce(function (acc, cls) {\n if (cls === config.replacementClass || cls.match(forSvg)) {\n acc.toSvg.push(cls);\n } else {\n acc.toNode.push(cls);\n }\n\n return acc;\n }, {\n toNode: [],\n toSvg: []\n });\n abstract[0].attributes.class = splitClasses.toSvg.join(' ');\n var newInnerHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.setAttribute('class', splitClasses.toNode.join(' '));\n node.setAttribute(DATA_FA_I2SVG, '');\n node.innerHTML = newInnerHTML;\n }\n};\n\nfunction performOperationSync(op) {\n op();\n}\n\nfunction perform(mutations, callback) {\n var callbackFunction = typeof callback === 'function' ? callback : noop$2;\n\n if (mutations.length === 0) {\n callbackFunction();\n } else {\n var frame = performOperationSync;\n\n if (config.mutateApproach === MUTATION_APPROACH_ASYNC) {\n frame = WINDOW.requestAnimationFrame || performOperationSync;\n }\n\n frame(function () {\n var mutator = getMutator();\n var mark = perf.begin('mutate');\n mutations.map(mutator);\n mark();\n callbackFunction();\n });\n }\n}\nvar disabled = false;\nfunction disableObservation() {\n disabled = true;\n}\nfunction enableObservation() {\n disabled = false;\n}\nvar mo = null;\nfunction observe(options) {\n if (!MUTATION_OBSERVER) {\n return;\n }\n\n if (!config.observeMutations) {\n return;\n }\n\n var treeCallback = options.treeCallback,\n nodeCallback = options.nodeCallback,\n pseudoElementsCallback = options.pseudoElementsCallback,\n _options$observeMutat = options.observeMutationsRoot,\n observeMutationsRoot = _options$observeMutat === void 0 ? DOCUMENT : _options$observeMutat;\n mo = new MUTATION_OBSERVER(function (objects) {\n if (disabled) return;\n toArray(objects).forEach(function (mutationRecord) {\n if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {\n if (config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target);\n }\n\n treeCallback(mutationRecord.target);\n }\n\n if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target.parentNode);\n }\n\n if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {\n if (mutationRecord.attributeName === 'class') {\n var _getCanonicalIcon = getCanonicalIcon(classArray(mutationRecord.target)),\n prefix = _getCanonicalIcon.prefix,\n iconName = _getCanonicalIcon.iconName;\n\n if (prefix) mutationRecord.target.setAttribute('data-prefix', prefix);\n if (iconName) mutationRecord.target.setAttribute('data-icon', iconName);\n } else {\n nodeCallback(mutationRecord.target);\n }\n }\n });\n });\n if (!IS_DOM) return;\n mo.observe(observeMutationsRoot, {\n childList: true,\n attributes: true,\n characterData: true,\n subtree: true\n });\n}\nfunction disconnect() {\n if (!mo) return;\n mo.disconnect();\n}\n\nfunction styleParser (node) {\n var style = node.getAttribute('style');\n var val = [];\n\n if (style) {\n val = style.split(';').reduce(function (acc, style) {\n var styles = style.split(':');\n var prop = styles[0];\n var value = styles.slice(1);\n\n if (prop && value.length > 0) {\n acc[prop] = value.join(':').trim();\n }\n\n return acc;\n }, {});\n }\n\n return val;\n}\n\nfunction classParser (node) {\n var existingPrefix = node.getAttribute('data-prefix');\n var existingIconName = node.getAttribute('data-icon');\n var innerText = node.innerText !== undefined ? node.innerText.trim() : '';\n var val = getCanonicalIcon(classArray(node));\n\n if (existingPrefix && existingIconName) {\n val.prefix = existingPrefix;\n val.iconName = existingIconName;\n }\n\n if (val.prefix && innerText.length > 1) {\n val.iconName = byLigature(val.prefix, node.innerText);\n } else if (val.prefix && innerText.length === 1) {\n val.iconName = byUnicode(val.prefix, toHex(node.innerText));\n }\n\n return val;\n}\n\nvar parseTransformString = function parseTransformString(transformString) {\n var transform = {\n size: 16,\n x: 0,\n y: 0,\n flipX: false,\n flipY: false,\n rotate: 0\n };\n\n if (!transformString) {\n return transform;\n } else {\n return transformString.toLowerCase().split(' ').reduce(function (acc, n) {\n var parts = n.toLowerCase().split('-');\n var first = parts[0];\n var rest = parts.slice(1).join('-');\n\n if (first && rest === 'h') {\n acc.flipX = true;\n return acc;\n }\n\n if (first && rest === 'v') {\n acc.flipY = true;\n return acc;\n }\n\n rest = parseFloat(rest);\n\n if (isNaN(rest)) {\n return acc;\n }\n\n switch (first) {\n case 'grow':\n acc.size = acc.size + rest;\n break;\n\n case 'shrink':\n acc.size = acc.size - rest;\n break;\n\n case 'left':\n acc.x = acc.x - rest;\n break;\n\n case 'right':\n acc.x = acc.x + rest;\n break;\n\n case 'up':\n acc.y = acc.y - rest;\n break;\n\n case 'down':\n acc.y = acc.y + rest;\n break;\n\n case 'rotate':\n acc.rotate = acc.rotate + rest;\n break;\n }\n\n return acc;\n }, transform);\n }\n};\nfunction transformParser (node) {\n return parseTransformString(node.getAttribute('data-fa-transform'));\n}\n\nfunction symbolParser (node) {\n var symbol = node.getAttribute('data-fa-symbol');\n return symbol === null ? false : symbol === '' ? true : symbol;\n}\n\nfunction attributesParser (node) {\n var extraAttributes = toArray(node.attributes).reduce(function (acc, attr) {\n if (acc.name !== 'class' && acc.name !== 'style') {\n acc[attr.name] = attr.value;\n }\n\n return acc;\n }, {});\n var title = node.getAttribute('title');\n\n if (config.autoA11y) {\n if (title) {\n extraAttributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(nextUniqueId());\n } else {\n extraAttributes['aria-hidden'] = 'true';\n extraAttributes['focusable'] = 'false';\n }\n }\n\n return extraAttributes;\n}\n\nfunction maskParser (node) {\n var mask = node.getAttribute('data-fa-mask');\n\n if (!mask) {\n return emptyCanonicalIcon();\n } else {\n return getCanonicalIcon(mask.split(' ').map(function (i) {\n return i.trim();\n }));\n }\n}\n\nfunction blankMeta() {\n return {\n iconName: null,\n title: null,\n prefix: null,\n transform: meaninglessTransform,\n symbol: false,\n mask: null,\n extra: {\n classes: [],\n styles: {},\n attributes: {}\n }\n };\n}\nfunction parseMeta(node) {\n var _classParser = classParser(node),\n iconName = _classParser.iconName,\n prefix = _classParser.prefix,\n extraClasses = _classParser.rest;\n\n var extraStyles = styleParser(node);\n var transform = transformParser(node);\n var symbol = symbolParser(node);\n var extraAttributes = attributesParser(node);\n var mask = maskParser(node);\n return {\n iconName: iconName,\n title: node.getAttribute('title'),\n prefix: prefix,\n transform: transform,\n symbol: symbol,\n mask: mask,\n extra: {\n classes: extraClasses,\n styles: extraStyles,\n attributes: extraAttributes\n }\n };\n}\n\nfunction MissingIcon(error) {\n this.name = 'MissingIcon';\n this.message = error || 'Icon unavailable';\n this.stack = new Error().stack;\n}\nMissingIcon.prototype = Object.create(Error.prototype);\nMissingIcon.prototype.constructor = MissingIcon;\n\nvar FILL = {\n fill: 'currentColor'\n};\nvar ANIMATION_BASE = {\n attributeType: 'XML',\n repeatCount: 'indefinite',\n dur: '2s'\n};\nvar RING = {\n tag: 'path',\n attributes: _objectSpread({}, FILL, {\n d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z'\n })\n};\n\nvar OPACITY_ANIMATE = _objectSpread({}, ANIMATION_BASE, {\n attributeName: 'opacity'\n});\n\nvar DOT = {\n tag: 'circle',\n attributes: _objectSpread({}, FILL, {\n cx: '256',\n cy: '364',\n r: '28'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread({}, ANIMATION_BASE, {\n attributeName: 'r',\n values: '28;14;28;28;14;28;'\n })\n }, {\n tag: 'animate',\n attributes: _objectSpread({}, OPACITY_ANIMATE, {\n values: '1;0;1;1;0;1;'\n })\n }]\n};\nvar QUESTION = {\n tag: 'path',\n attributes: _objectSpread({}, FILL, {\n opacity: '1',\n d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread({}, OPACITY_ANIMATE, {\n values: '1;0;0;0;0;1;'\n })\n }]\n};\nvar EXCLAMATION = {\n tag: 'path',\n attributes: _objectSpread({}, FILL, {\n opacity: '0',\n d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread({}, OPACITY_ANIMATE, {\n values: '0;0;1;1;0;0;'\n })\n }]\n};\nvar missing = {\n tag: 'g',\n children: [RING, DOT, QUESTION, EXCLAMATION]\n};\n\nvar styles$2 = namespace.styles;\nfunction asFoundIcon(icon) {\n var width = icon[0];\n var height = icon[1];\n\n var _icon$slice = icon.slice(4),\n _icon$slice2 = _slicedToArray(_icon$slice, 1),\n vectorData = _icon$slice2[0];\n\n var element = null;\n\n if (Array.isArray(vectorData)) {\n element = {\n tag: 'g',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.GROUP)\n },\n children: [{\n tag: 'path',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.SECONDARY),\n fill: 'currentColor',\n d: vectorData[0]\n }\n }, {\n tag: 'path',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.PRIMARY),\n fill: 'currentColor',\n d: vectorData[1]\n }\n }]\n };\n } else {\n element = {\n tag: 'path',\n attributes: {\n fill: 'currentColor',\n d: vectorData\n }\n };\n }\n\n return {\n found: true,\n width: width,\n height: height,\n icon: element\n };\n}\nfunction findIcon(iconName, prefix) {\n return new picked(function (resolve, reject) {\n var val = {\n found: false,\n width: 512,\n height: 512,\n icon: missing\n };\n\n if (iconName && prefix && styles$2[prefix] && styles$2[prefix][iconName]) {\n var icon = styles$2[prefix][iconName];\n return resolve(asFoundIcon(icon));\n }\n\n var headers = {};\n\n if (_typeof(WINDOW.FontAwesomeKitConfig) === 'object' && typeof window.FontAwesomeKitConfig.token === 'string') {\n headers['fa-kit-token'] = WINDOW.FontAwesomeKitConfig.token;\n }\n\n if (iconName && prefix && !config.showMissingIcons) {\n reject(new MissingIcon(\"Icon is missing for prefix \".concat(prefix, \" with icon name \").concat(iconName)));\n } else {\n resolve(val);\n }\n });\n}\n\nvar styles$3 = namespace.styles;\n\nfunction generateSvgReplacementMutation(node, nodeMeta) {\n var iconName = nodeMeta.iconName,\n title = nodeMeta.title,\n prefix = nodeMeta.prefix,\n transform = nodeMeta.transform,\n symbol = nodeMeta.symbol,\n mask = nodeMeta.mask,\n extra = nodeMeta.extra;\n return new picked(function (resolve, reject) {\n picked.all([findIcon(iconName, prefix), findIcon(mask.iconName, mask.prefix)]).then(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n main = _ref2[0],\n mask = _ref2[1];\n\n resolve([node, makeInlineSvgAbstract({\n icons: {\n main: main,\n mask: mask\n },\n prefix: prefix,\n iconName: iconName,\n transform: transform,\n symbol: symbol,\n mask: mask,\n title: title,\n extra: extra,\n watchable: true\n })]);\n });\n });\n}\n\nfunction generateLayersText(node, nodeMeta) {\n var title = nodeMeta.title,\n transform = nodeMeta.transform,\n extra = nodeMeta.extra;\n var width = null;\n var height = null;\n\n if (IS_IE) {\n var computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);\n var boundingClientRect = node.getBoundingClientRect();\n width = boundingClientRect.width / computedFontSize;\n height = boundingClientRect.height / computedFontSize;\n }\n\n if (config.autoA11y && !title) {\n extra.attributes['aria-hidden'] = 'true';\n }\n\n return picked.resolve([node, makeLayersTextAbstract({\n content: node.innerHTML,\n width: width,\n height: height,\n transform: transform,\n title: title,\n extra: extra,\n watchable: true\n })]);\n}\n\nfunction generateMutation(node) {\n var nodeMeta = parseMeta(node);\n\n if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {\n return generateLayersText(node, nodeMeta);\n } else {\n return generateSvgReplacementMutation(node, nodeMeta);\n }\n}\n\nfunction onTree(root) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n if (!IS_DOM) return;\n var htmlClassList = DOCUMENT.documentElement.classList;\n\n var hclAdd = function hclAdd(suffix) {\n return htmlClassList.add(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n\n var hclRemove = function hclRemove(suffix) {\n return htmlClassList.remove(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n\n var prefixes = config.autoFetchSvg ? Object.keys(PREFIX_TO_STYLE) : Object.keys(styles$3);\n var prefixesDomQuery = [\".\".concat(LAYERS_TEXT_CLASSNAME, \":not([\").concat(DATA_FA_I2SVG, \"])\")].concat(prefixes.map(function (p) {\n return \".\".concat(p, \":not([\").concat(DATA_FA_I2SVG, \"])\");\n })).join(', ');\n\n if (prefixesDomQuery.length === 0) {\n return;\n }\n\n var candidates = [];\n\n try {\n candidates = toArray(root.querySelectorAll(prefixesDomQuery));\n } catch (e) {// noop\n }\n\n if (candidates.length > 0) {\n hclAdd('pending');\n hclRemove('complete');\n } else {\n return;\n }\n\n var mark = perf.begin('onTree');\n var mutations = candidates.reduce(function (acc, node) {\n try {\n var mutation = generateMutation(node);\n\n if (mutation) {\n acc.push(mutation);\n }\n } catch (e) {\n if (!PRODUCTION) {\n if (e instanceof MissingIcon) {\n console.error(e);\n }\n }\n }\n\n return acc;\n }, []);\n return new picked(function (resolve, reject) {\n picked.all(mutations).then(function (resolvedMutations) {\n perform(resolvedMutations, function () {\n hclAdd('active');\n hclAdd('complete');\n hclRemove('pending');\n if (typeof callback === 'function') callback();\n mark();\n resolve();\n });\n }).catch(function () {\n mark();\n reject();\n });\n });\n}\nfunction onNode(node) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n generateMutation(node).then(function (mutation) {\n if (mutation) {\n perform([mutation], callback);\n }\n });\n}\n\nfunction replaceForPosition(node, position) {\n var pendingAttribute = \"\".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-'));\n return new picked(function (resolve, reject) {\n if (node.getAttribute(pendingAttribute) !== null) {\n // This node is already being processed\n return resolve();\n }\n\n var children = toArray(node.children);\n var alreadyProcessedPseudoElement = children.filter(function (c) {\n return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position;\n })[0];\n var styles = WINDOW.getComputedStyle(node, position);\n var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN);\n var fontWeight = styles.getPropertyValue('font-weight');\n var content = styles.getPropertyValue('content');\n\n if (alreadyProcessedPseudoElement && !fontFamily) {\n // If we've already processed it but the current computed style does not result in a font-family,\n // that probably means that a class name that was previously present to make the icon has been\n // removed. So we now should delete the icon.\n node.removeChild(alreadyProcessedPseudoElement);\n return resolve();\n } else if (fontFamily && content !== 'none' && content !== '') {\n var prefix = ~['Solid', 'Regular', 'Light', 'Duotone', 'Brands'].indexOf(fontFamily[1]) ? STYLE_TO_PREFIX[fontFamily[1].toLowerCase()] : FONT_WEIGHT_TO_PREFIX[fontWeight];\n var hexValue = toHex(content.length === 3 ? content.substr(1, 1) : content);\n var iconName = byUnicode(prefix, hexValue);\n var iconIdentifier = iconName; // Only convert the pseudo element in this :before/:after position into an icon if we haven't\n // already done so with the same prefix and iconName\n\n if (iconName && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) {\n node.setAttribute(pendingAttribute, iconIdentifier);\n\n if (alreadyProcessedPseudoElement) {\n // Delete the old one, since we're replacing it with a new one\n node.removeChild(alreadyProcessedPseudoElement);\n }\n\n var meta = blankMeta();\n var extra = meta.extra;\n extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;\n findIcon(iconName, prefix).then(function (main) {\n var abstract = makeInlineSvgAbstract(_objectSpread({}, meta, {\n icons: {\n main: main,\n mask: emptyCanonicalIcon()\n },\n prefix: prefix,\n iconName: iconIdentifier,\n extra: extra,\n watchable: true\n }));\n var element = DOCUMENT.createElement('svg');\n\n if (position === ':before') {\n node.insertBefore(element, node.firstChild);\n } else {\n node.appendChild(element);\n }\n\n element.outerHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.removeAttribute(pendingAttribute);\n resolve();\n }).catch(reject);\n } else {\n resolve();\n }\n } else {\n resolve();\n }\n });\n}\n\nfunction replace(node) {\n return picked.all([replaceForPosition(node, ':before'), replaceForPosition(node, ':after')]);\n}\n\nfunction processable(node) {\n return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg');\n}\n\nfunction searchPseudoElements (root) {\n if (!IS_DOM) return;\n return new picked(function (resolve, reject) {\n var operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace);\n var end = perf.begin('searchPseudoElements');\n disableObservation();\n picked.all(operations).then(function () {\n end();\n enableObservation();\n resolve();\n }).catch(function () {\n end();\n enableObservation();\n reject();\n });\n });\n}\n\nvar baseStyles = \"svg:not(:root).svg-inline--fa {\\n overflow: visible;\\n}\\n\\n.svg-inline--fa {\\n display: inline-block;\\n font-size: inherit;\\n height: 1em;\\n overflow: visible;\\n vertical-align: -0.125em;\\n}\\n.svg-inline--fa.fa-lg {\\n vertical-align: -0.225em;\\n}\\n.svg-inline--fa.fa-w-1 {\\n width: 0.0625em;\\n}\\n.svg-inline--fa.fa-w-2 {\\n width: 0.125em;\\n}\\n.svg-inline--fa.fa-w-3 {\\n width: 0.1875em;\\n}\\n.svg-inline--fa.fa-w-4 {\\n width: 0.25em;\\n}\\n.svg-inline--fa.fa-w-5 {\\n width: 0.3125em;\\n}\\n.svg-inline--fa.fa-w-6 {\\n width: 0.375em;\\n}\\n.svg-inline--fa.fa-w-7 {\\n width: 0.4375em;\\n}\\n.svg-inline--fa.fa-w-8 {\\n width: 0.5em;\\n}\\n.svg-inline--fa.fa-w-9 {\\n width: 0.5625em;\\n}\\n.svg-inline--fa.fa-w-10 {\\n width: 0.625em;\\n}\\n.svg-inline--fa.fa-w-11 {\\n width: 0.6875em;\\n}\\n.svg-inline--fa.fa-w-12 {\\n width: 0.75em;\\n}\\n.svg-inline--fa.fa-w-13 {\\n width: 0.8125em;\\n}\\n.svg-inline--fa.fa-w-14 {\\n width: 0.875em;\\n}\\n.svg-inline--fa.fa-w-15 {\\n width: 0.9375em;\\n}\\n.svg-inline--fa.fa-w-16 {\\n width: 1em;\\n}\\n.svg-inline--fa.fa-w-17 {\\n width: 1.0625em;\\n}\\n.svg-inline--fa.fa-w-18 {\\n width: 1.125em;\\n}\\n.svg-inline--fa.fa-w-19 {\\n width: 1.1875em;\\n}\\n.svg-inline--fa.fa-w-20 {\\n width: 1.25em;\\n}\\n.svg-inline--fa.fa-pull-left {\\n margin-right: 0.3em;\\n width: auto;\\n}\\n.svg-inline--fa.fa-pull-right {\\n margin-left: 0.3em;\\n width: auto;\\n}\\n.svg-inline--fa.fa-border {\\n height: 1.5em;\\n}\\n.svg-inline--fa.fa-li {\\n width: 2em;\\n}\\n.svg-inline--fa.fa-fw {\\n width: 1.25em;\\n}\\n\\n.fa-layers svg.svg-inline--fa {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n\\n.fa-layers {\\n display: inline-block;\\n height: 1em;\\n position: relative;\\n text-align: center;\\n vertical-align: -0.125em;\\n width: 1em;\\n}\\n.fa-layers svg.svg-inline--fa {\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-counter, .fa-layers-text {\\n display: inline-block;\\n position: absolute;\\n text-align: center;\\n}\\n\\n.fa-layers-text {\\n left: 50%;\\n top: 50%;\\n -webkit-transform: translate(-50%, -50%);\\n transform: translate(-50%, -50%);\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-counter {\\n background-color: #ff253a;\\n border-radius: 1em;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n color: #fff;\\n height: 1.5em;\\n line-height: 1;\\n max-width: 5em;\\n min-width: 1.5em;\\n overflow: hidden;\\n padding: 0.25em;\\n right: 0;\\n text-overflow: ellipsis;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-bottom-right {\\n bottom: 0;\\n right: 0;\\n top: auto;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: bottom right;\\n transform-origin: bottom right;\\n}\\n\\n.fa-layers-bottom-left {\\n bottom: 0;\\n left: 0;\\n right: auto;\\n top: auto;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: bottom left;\\n transform-origin: bottom left;\\n}\\n\\n.fa-layers-top-right {\\n right: 0;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-top-left {\\n left: 0;\\n right: auto;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top left;\\n transform-origin: top left;\\n}\\n\\n.fa-lg {\\n font-size: 1.3333333333em;\\n line-height: 0.75em;\\n vertical-align: -0.0667em;\\n}\\n\\n.fa-xs {\\n font-size: 0.75em;\\n}\\n\\n.fa-sm {\\n font-size: 0.875em;\\n}\\n\\n.fa-1x {\\n font-size: 1em;\\n}\\n\\n.fa-2x {\\n font-size: 2em;\\n}\\n\\n.fa-3x {\\n font-size: 3em;\\n}\\n\\n.fa-4x {\\n font-size: 4em;\\n}\\n\\n.fa-5x {\\n font-size: 5em;\\n}\\n\\n.fa-6x {\\n font-size: 6em;\\n}\\n\\n.fa-7x {\\n font-size: 7em;\\n}\\n\\n.fa-8x {\\n font-size: 8em;\\n}\\n\\n.fa-9x {\\n font-size: 9em;\\n}\\n\\n.fa-10x {\\n font-size: 10em;\\n}\\n\\n.fa-fw {\\n text-align: center;\\n width: 1.25em;\\n}\\n\\n.fa-ul {\\n list-style-type: none;\\n margin-left: 2.5em;\\n padding-left: 0;\\n}\\n.fa-ul > li {\\n position: relative;\\n}\\n\\n.fa-li {\\n left: -2em;\\n position: absolute;\\n text-align: center;\\n width: 2em;\\n line-height: inherit;\\n}\\n\\n.fa-border {\\n border: solid 0.08em #eee;\\n border-radius: 0.1em;\\n padding: 0.2em 0.25em 0.15em;\\n}\\n\\n.fa-pull-left {\\n float: left;\\n}\\n\\n.fa-pull-right {\\n float: right;\\n}\\n\\n.fa.fa-pull-left,\\n.fas.fa-pull-left,\\n.far.fa-pull-left,\\n.fal.fa-pull-left,\\n.fab.fa-pull-left {\\n margin-right: 0.3em;\\n}\\n.fa.fa-pull-right,\\n.fas.fa-pull-right,\\n.far.fa-pull-right,\\n.fal.fa-pull-right,\\n.fab.fa-pull-right {\\n margin-left: 0.3em;\\n}\\n\\n.fa-spin {\\n -webkit-animation: fa-spin 2s infinite linear;\\n animation: fa-spin 2s infinite linear;\\n}\\n\\n.fa-pulse {\\n -webkit-animation: fa-spin 1s infinite steps(8);\\n animation: fa-spin 1s infinite steps(8);\\n}\\n\\n@-webkit-keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n\\n@keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n.fa-rotate-90 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\\\";\\n -webkit-transform: rotate(90deg);\\n transform: rotate(90deg);\\n}\\n\\n.fa-rotate-180 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\\\";\\n -webkit-transform: rotate(180deg);\\n transform: rotate(180deg);\\n}\\n\\n.fa-rotate-270 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\\\";\\n -webkit-transform: rotate(270deg);\\n transform: rotate(270deg);\\n}\\n\\n.fa-flip-horizontal {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\\\";\\n -webkit-transform: scale(-1, 1);\\n transform: scale(-1, 1);\\n}\\n\\n.fa-flip-vertical {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\\\";\\n -webkit-transform: scale(1, -1);\\n transform: scale(1, -1);\\n}\\n\\n.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\\\";\\n -webkit-transform: scale(-1, -1);\\n transform: scale(-1, -1);\\n}\\n\\n:root .fa-rotate-90,\\n:root .fa-rotate-180,\\n:root .fa-rotate-270,\\n:root .fa-flip-horizontal,\\n:root .fa-flip-vertical,\\n:root .fa-flip-both {\\n -webkit-filter: none;\\n filter: none;\\n}\\n\\n.fa-stack {\\n display: inline-block;\\n height: 2em;\\n position: relative;\\n width: 2.5em;\\n}\\n\\n.fa-stack-1x,\\n.fa-stack-2x {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n\\n.svg-inline--fa.fa-stack-1x {\\n height: 1em;\\n width: 1.25em;\\n}\\n.svg-inline--fa.fa-stack-2x {\\n height: 2em;\\n width: 2.5em;\\n}\\n\\n.fa-inverse {\\n color: #fff;\\n}\\n\\n.sr-only {\\n border: 0;\\n clip: rect(0, 0, 0, 0);\\n height: 1px;\\n margin: -1px;\\n overflow: hidden;\\n padding: 0;\\n position: absolute;\\n width: 1px;\\n}\\n\\n.sr-only-focusable:active, .sr-only-focusable:focus {\\n clip: auto;\\n height: auto;\\n margin: 0;\\n overflow: visible;\\n position: static;\\n width: auto;\\n}\\n\\n.svg-inline--fa .fa-primary {\\n fill: var(--fa-primary-color, currentColor);\\n opacity: 1;\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa .fa-secondary {\\n fill: var(--fa-secondary-color, currentColor);\\n opacity: 0.4;\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-primary {\\n opacity: 0.4;\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\\n opacity: 1;\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa mask .fa-primary,\\n.svg-inline--fa mask .fa-secondary {\\n fill: black;\\n}\\n\\n.fad.fa-inverse {\\n color: #fff;\\n}\";\n\nfunction css () {\n var dfp = DEFAULT_FAMILY_PREFIX;\n var drc = DEFAULT_REPLACEMENT_CLASS;\n var fp = config.familyPrefix;\n var rc = config.replacementClass;\n var s = baseStyles;\n\n if (fp !== dfp || rc !== drc) {\n var dPatt = new RegExp(\"\\\\.\".concat(dfp, \"\\\\-\"), 'g');\n var customPropPatt = new RegExp(\"\\\\--\".concat(dfp, \"\\\\-\"), 'g');\n var rPatt = new RegExp(\"\\\\.\".concat(drc), 'g');\n s = s.replace(dPatt, \".\".concat(fp, \"-\")).replace(customPropPatt, \"--\".concat(fp, \"-\")).replace(rPatt, \".\".concat(rc));\n }\n\n return s;\n}\n\nvar Library =\n/*#__PURE__*/\nfunction () {\n function Library() {\n _classCallCheck(this, Library);\n\n this.definitions = {};\n }\n\n _createClass(Library, [{\n key: \"add\",\n value: function add() {\n var _this = this;\n\n for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) {\n definitions[_key] = arguments[_key];\n }\n\n var additions = definitions.reduce(this._pullDefinitions, {});\n Object.keys(additions).forEach(function (key) {\n _this.definitions[key] = _objectSpread({}, _this.definitions[key] || {}, additions[key]);\n defineIcons(key, additions[key]);\n build();\n });\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.definitions = {};\n }\n }, {\n key: \"_pullDefinitions\",\n value: function _pullDefinitions(additions, definition) {\n var normalized = definition.prefix && definition.iconName && definition.icon ? {\n 0: definition\n } : definition;\n Object.keys(normalized).map(function (key) {\n var _normalized$key = normalized[key],\n prefix = _normalized$key.prefix,\n iconName = _normalized$key.iconName,\n icon = _normalized$key.icon;\n if (!additions[prefix]) additions[prefix] = {};\n additions[prefix][iconName] = icon;\n });\n return additions;\n }\n }]);\n\n return Library;\n}();\n\nfunction ensureCss() {\n if (config.autoAddCss && !_cssInserted) {\n insertCss(css());\n\n _cssInserted = true;\n }\n}\n\nfunction apiObject(val, abstractCreator) {\n Object.defineProperty(val, 'abstract', {\n get: abstractCreator\n });\n Object.defineProperty(val, 'html', {\n get: function get() {\n return val.abstract.map(function (a) {\n return toHtml(a);\n });\n }\n });\n Object.defineProperty(val, 'node', {\n get: function get() {\n if (!IS_DOM) return;\n var container = DOCUMENT.createElement('div');\n container.innerHTML = val.html;\n return container.children;\n }\n });\n return val;\n}\n\nfunction findIconDefinition(iconLookup) {\n var _iconLookup$prefix = iconLookup.prefix,\n prefix = _iconLookup$prefix === void 0 ? 'fa' : _iconLookup$prefix,\n iconName = iconLookup.iconName;\n if (!iconName) return;\n return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);\n}\n\nfunction resolveIcons(next) {\n return function (maybeIconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});\n var mask = params.mask;\n\n if (mask) {\n mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});\n }\n\n return next(iconDefinition, _objectSpread({}, params, {\n mask: mask\n }));\n };\n}\n\nvar library = new Library();\nvar noAuto = function noAuto() {\n config.autoReplaceSvg = false;\n config.observeMutations = false;\n disconnect();\n};\nvar _cssInserted = false;\nvar dom = {\n i2svg: function i2svg() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (IS_DOM) {\n ensureCss();\n var _params$node = params.node,\n node = _params$node === void 0 ? DOCUMENT : _params$node,\n _params$callback = params.callback,\n callback = _params$callback === void 0 ? function () {} : _params$callback;\n\n if (config.searchPseudoElements) {\n searchPseudoElements(node);\n }\n\n return onTree(node, callback);\n } else {\n return picked.reject('Operation requires a DOM of some kind.');\n }\n },\n css: css,\n insertCss: function insertCss$$1() {\n if (!_cssInserted) {\n insertCss(css());\n\n _cssInserted = true;\n }\n },\n watch: function watch() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var autoReplaceSvgRoot = params.autoReplaceSvgRoot,\n observeMutationsRoot = params.observeMutationsRoot;\n\n if (config.autoReplaceSvg === false) {\n config.autoReplaceSvg = true;\n }\n\n config.observeMutations = true;\n domready(function () {\n autoReplace({\n autoReplaceSvgRoot: autoReplaceSvgRoot\n });\n observe({\n treeCallback: onTree,\n nodeCallback: onNode,\n pseudoElementsCallback: searchPseudoElements,\n observeMutationsRoot: observeMutationsRoot\n });\n });\n }\n};\nvar parse = {\n transform: function transform(transformString) {\n return parseTransformString(transformString);\n }\n};\nvar icon = resolveIcons(function (iconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform = params.transform,\n transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,\n _params$symbol = params.symbol,\n symbol = _params$symbol === void 0 ? false : _params$symbol,\n _params$mask = params.mask,\n mask = _params$mask === void 0 ? null : _params$mask,\n _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n if (!iconDefinition) return;\n var prefix = iconDefinition.prefix,\n iconName = iconDefinition.iconName,\n icon = iconDefinition.icon;\n return apiObject(_objectSpread({\n type: 'icon'\n }, iconDefinition), function () {\n ensureCss();\n\n if (config.autoA11y) {\n if (title) {\n attributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(nextUniqueId());\n } else {\n attributes['aria-hidden'] = 'true';\n attributes['focusable'] = 'false';\n }\n }\n\n return makeInlineSvgAbstract({\n icons: {\n main: asFoundIcon(icon),\n mask: mask ? asFoundIcon(mask.icon) : {\n found: false,\n width: null,\n height: null,\n icon: {}\n }\n },\n prefix: prefix,\n iconName: iconName,\n transform: _objectSpread({}, meaninglessTransform, transform),\n symbol: symbol,\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: classes\n }\n });\n });\n});\nvar text = function text(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform2 = params.transform,\n transform = _params$transform2 === void 0 ? meaninglessTransform : _params$transform2,\n _params$title2 = params.title,\n title = _params$title2 === void 0 ? null : _params$title2,\n _params$classes2 = params.classes,\n classes = _params$classes2 === void 0 ? [] : _params$classes2,\n _params$attributes2 = params.attributes,\n attributes = _params$attributes2 === void 0 ? {} : _params$attributes2,\n _params$styles2 = params.styles,\n styles = _params$styles2 === void 0 ? {} : _params$styles2;\n return apiObject({\n type: 'text',\n content: content\n }, function () {\n ensureCss();\n return makeLayersTextAbstract({\n content: content,\n transform: _objectSpread({}, meaninglessTransform, transform),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.familyPrefix, \"-layers-text\")].concat(_toConsumableArray(classes))\n }\n });\n });\n};\nvar counter = function counter(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$title3 = params.title,\n title = _params$title3 === void 0 ? null : _params$title3,\n _params$classes3 = params.classes,\n classes = _params$classes3 === void 0 ? [] : _params$classes3,\n _params$attributes3 = params.attributes,\n attributes = _params$attributes3 === void 0 ? {} : _params$attributes3,\n _params$styles3 = params.styles,\n styles = _params$styles3 === void 0 ? {} : _params$styles3;\n return apiObject({\n type: 'counter',\n content: content\n }, function () {\n ensureCss();\n return makeLayersCounterAbstract({\n content: content.toString(),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.familyPrefix, \"-layers-counter\")].concat(_toConsumableArray(classes))\n }\n });\n });\n};\nvar layer = function layer(assembler) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$classes4 = params.classes,\n classes = _params$classes4 === void 0 ? [] : _params$classes4;\n return apiObject({\n type: 'layer'\n }, function () {\n ensureCss();\n var children = [];\n assembler(function (args) {\n Array.isArray(args) ? args.map(function (a) {\n children = children.concat(a.abstract);\n }) : children = children.concat(args.abstract);\n });\n return [{\n tag: 'span',\n attributes: {\n class: [\"\".concat(config.familyPrefix, \"-layers\")].concat(_toConsumableArray(classes)).join(' ')\n },\n children: children\n }];\n });\n};\nvar api = {\n noAuto: noAuto,\n config: config,\n dom: dom,\n library: library,\n parse: parse,\n findIconDefinition: findIconDefinition,\n icon: icon,\n text: text,\n counter: counter,\n layer: layer,\n toHtml: toHtml\n};\n\nvar autoReplace = function autoReplace() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _params$autoReplaceSv = params.autoReplaceSvgRoot,\n autoReplaceSvgRoot = _params$autoReplaceSv === void 0 ? DOCUMENT : _params$autoReplaceSv;\n if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({\n node: autoReplaceSvgRoot\n });\n};\n\nexport { icon, noAuto, config, toHtml, layer, text, counter, library, dom, parse, findIconDefinition };\n","import { ɵɵdefineInjectable, Injectable, Directive, Input, Component, Renderer2, ElementRef, Optional, HostBinding, NgModule } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { findIconDefinition, parse, icon, counter, text } from '@fortawesome/fontawesome-svg-core';\n\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/platform-browser';\n\nconst _c0 = [\"*\"];\nclass FaConfig {\n constructor() {\n /**\n * Default prefix to use, when one is not provided with the icon name.\n *\n * @default 'fas'\n */\n this.defaultPrefix = 'fas';\n /**\n * Provides a fallback icon to use whilst main icon is being loaded asynchronously.\n * When value is null, then fa-icon component will throw an error if icon input is missing.\n * When value is not null, then the provided icon will be used as a fallback icon if icon input is missing.\n *\n * @default null\n */\n this.fallbackIcon = null;\n /**\n * Whether components should lookup icon definitions in the global icon\n * library (the one available from\n * `import { library } from '@fortawesome/fontawesome-svg-core')`.\n *\n * See https://github.com/FortAwesome/angular-fontawesome/blob/master/docs/usage/icon-library.md\n * for detailed description of library modes.\n *\n * - 'unset' - Components should lookup icon definitions in the global library\n * and emit warning if they find a definition there. This option is a default\n * to assist existing applications with a migration. Applications are expected\n * to switch to using {@link FaIconLibrary}.\n * - true - Components should lookup icon definitions in the global library.\n * Note that global icon library is deprecated and support for it will be\n * removed. This option can be used to temporarily suppress warnings.\n * - false - Components should not lookup icon definitions in the global\n * library. Library will throw an error if missing icon is found in the global\n * library.\n *\n * @deprecated This option is deprecated since 0.5.0. In 0.6.0 default will\n * be changed to false. In 0.8.0 the option will be removed together with the\n * support for the global icon library.\n *\n * @default false\n */\n this.globalLibrary = false;\n }\n}\nFaConfig.ɵfac = function FaConfig_Factory(t) { return new (t || FaConfig)(); };\nFaConfig.ɵprov = ɵɵdefineInjectable({ factory: function FaConfig_Factory() { return new FaConfig(); }, token: FaConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FaConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n\nclass FaIconLibrary {\n constructor() {\n this.definitions = {};\n }\n addIcons(...icons) {\n for (const icon of icons) {\n if (!(icon.prefix in this.definitions)) {\n this.definitions[icon.prefix] = {};\n }\n this.definitions[icon.prefix][icon.iconName] = icon;\n }\n }\n addIconPacks(...packs) {\n for (const pack of packs) {\n const icons = Object.keys(pack).map((key) => pack[key]);\n this.addIcons(...icons);\n }\n }\n getIconDefinition(prefix, name) {\n if (prefix in this.definitions && name in this.definitions[prefix]) {\n return this.definitions[prefix][name];\n }\n return null;\n }\n}\nFaIconLibrary.ɵfac = function FaIconLibrary_Factory(t) { return new (t || FaIconLibrary)(); };\nFaIconLibrary.ɵprov = ɵɵdefineInjectable({ factory: function FaIconLibrary_Factory() { return new FaIconLibrary(); }, token: FaIconLibrary, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FaIconLibrary, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n\nconst faWarnIfIconDefinitionMissing = (iconSpec) => {\n throw new Error(`Could not find icon with iconName=${iconSpec.iconName} and prefix=${iconSpec.prefix} in the icon library.`);\n};\n\nconst faWarnIfIconSpecMissing = () => {\n throw new Error('Property `icon` is required for `fa-icon`/`fa-duotone-icon` components.');\n};\n\n/**\n * Fontawesome class list.\n * Returns classes array by props.\n */\nconst faClassList = (props) => {\n const classes = {\n 'fa-spin': props.spin,\n 'fa-pulse': props.pulse,\n 'fa-fw': props.fixedWidth,\n 'fa-border': props.border,\n 'fa-inverse': props.inverse,\n 'fa-layers-counter': props.counter,\n 'fa-flip-horizontal': props.flip === 'horizontal' || props.flip === 'both',\n 'fa-flip-vertical': props.flip === 'vertical' || props.flip === 'both',\n [`fa-${props.size}`]: props.size !== null,\n [`fa-rotate-${props.rotate}`]: props.rotate !== null,\n [`fa-pull-${props.pull}`]: props.pull !== null,\n [`fa-stack-${props.stackItemSize}`]: props.stackItemSize != null,\n };\n return Object.keys(classes)\n .map((key) => (classes[key] ? key : null))\n .filter((key) => key);\n};\n\n/**\n * Returns if is IconLookup or not.\n */\nconst isIconLookup = (i) => {\n return i.prefix !== undefined && i.iconName !== undefined;\n};\n\n/**\n * Normalizing icon spec.\n */\nconst faNormalizeIconSpec = (iconSpec, defaultPrefix) => {\n if (isIconLookup(iconSpec)) {\n return iconSpec;\n }\n if (Array.isArray(iconSpec) && iconSpec.length === 2) {\n return { prefix: iconSpec[0], iconName: iconSpec[1] };\n }\n if (typeof iconSpec === 'string') {\n return { prefix: defaultPrefix, iconName: iconSpec };\n }\n};\n\nclass FaStackItemSizeDirective {\n constructor() {\n /**\n * Specify whether icon inside {@link FaStackComponent} should be rendered in\n * regular size (1x) or as a larger icon (2x).\n */\n this.stackItemSize = '1x';\n }\n ngOnChanges(changes) {\n if ('size' in changes) {\n throw new Error('fa-icon is not allowed to customize size when used inside fa-stack. ' +\n 'Set size on the enclosing fa-stack instead: ....');\n }\n }\n}\nFaStackItemSizeDirective.ɵfac = function FaStackItemSizeDirective_Factory(t) { return new (t || FaStackItemSizeDirective)(); };\nFaStackItemSizeDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: FaStackItemSizeDirective, selectors: [[\"fa-icon\", \"stackItemSize\", \"\"], [\"fa-duotone-icon\", \"stackItemSize\", \"\"]], inputs: { stackItemSize: \"stackItemSize\", size: \"size\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\nFaStackItemSizeDirective.propDecorators = {\n stackItemSize: [{ type: Input }],\n size: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FaStackItemSizeDirective, [{\n type: Directive,\n args: [{\n // tslint:disable-next-line:directive-selector\n selector: 'fa-icon[stackItemSize],fa-duotone-icon[stackItemSize]'\n }]\n }], function () { return []; }, { stackItemSize: [{\n type: Input\n }], size: [{\n type: Input\n }] }); })();\n\nclass FaStackComponent {\n constructor(renderer, elementRef) {\n this.renderer = renderer;\n this.elementRef = elementRef;\n }\n ngOnInit() {\n this.renderer.addClass(this.elementRef.nativeElement, 'fa-stack');\n }\n ngOnChanges(changes) {\n if ('size' in changes) {\n if (changes.size.currentValue != null) {\n this.renderer.addClass(this.elementRef.nativeElement, `fa-${changes.size.currentValue}`);\n }\n if (changes.size.previousValue != null) {\n this.renderer.removeClass(this.elementRef.nativeElement, `fa-${changes.size.previousValue}`);\n }\n }\n }\n}\nFaStackComponent.ɵfac = function FaStackComponent_Factory(t) { return new (t || FaStackComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nFaStackComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: FaStackComponent, selectors: [[\"fa-stack\"]], inputs: { size: \"size\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function FaStackComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵprojection(0);\n } }, encapsulation: 2 });\nFaStackComponent.ctorParameters = () => [\n { type: Renderer2 },\n { type: ElementRef }\n];\nFaStackComponent.propDecorators = {\n size: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FaStackComponent, [{\n type: Component,\n args: [{\n selector: 'fa-stack',\n template: ``\n }]\n }], function () { return [{ type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }]; }, { size: [{\n type: Input\n }] }); })();\n\nclass FaIconComponent {\n constructor(sanitizer, config, iconLibrary, stackItem, stack) {\n this.sanitizer = sanitizer;\n this.config = config;\n this.iconLibrary = iconLibrary;\n this.stackItem = stackItem;\n this.classes = [];\n if (stack != null && stackItem == null) {\n console.error('FontAwesome: fa-icon and fa-duotone-icon elements must specify stackItemSize attribute when wrapped into ' +\n 'fa-stack. Example: .');\n }\n }\n ngOnChanges(changes) {\n if (this.icon == null && this.config.fallbackIcon == null) {\n return faWarnIfIconSpecMissing();\n }\n let iconToBeRendered = null;\n if (this.icon == null) {\n iconToBeRendered = this.config.fallbackIcon;\n }\n else {\n iconToBeRendered = this.icon;\n }\n if (changes) {\n const iconDefinition = this.findIconDefinition(iconToBeRendered);\n if (iconDefinition != null) {\n const params = this.buildParams();\n this.renderIcon(iconDefinition, params);\n }\n }\n }\n /**\n * Programmatically trigger rendering of the icon.\n *\n * This method is useful, when creating {@link FaIconComponent} dynamically or\n * changing its inputs programmatically as in these cases icon won't be\n * re-rendered automatically.\n */\n render() {\n this.ngOnChanges({});\n }\n findIconDefinition(i) {\n const lookup = faNormalizeIconSpec(i, this.config.defaultPrefix);\n if ('icon' in lookup) {\n return lookup;\n }\n const definition = this.iconLibrary.getIconDefinition(lookup.prefix, lookup.iconName);\n if (definition != null) {\n return definition;\n }\n const globalDefinition = findIconDefinition(lookup);\n if (globalDefinition != null) {\n const message = 'Global icon library is deprecated. ' +\n 'Consult https://github.com/FortAwesome/angular-fontawesome/blob/master/UPGRADING.md ' +\n 'for the migration instructions.';\n if (this.config.globalLibrary === 'unset') {\n console.error('FontAwesome: ' + message);\n }\n else if (!this.config.globalLibrary) {\n throw new Error(message);\n }\n return globalDefinition;\n }\n faWarnIfIconDefinitionMissing(lookup);\n return null;\n }\n buildParams() {\n const classOpts = {\n flip: this.flip,\n spin: this.spin,\n pulse: this.pulse,\n border: this.border,\n inverse: this.inverse,\n size: this.size || null,\n pull: this.pull || null,\n rotate: this.rotate || null,\n fixedWidth: typeof this.fixedWidth === 'boolean' ? this.fixedWidth : this.config.fixedWidth,\n stackItemSize: this.stackItem != null ? this.stackItem.stackItemSize : null,\n };\n const parsedTransform = typeof this.transform === 'string' ? parse.transform(this.transform) : this.transform;\n return {\n title: this.title,\n transform: parsedTransform,\n classes: [...faClassList(classOpts), ...this.classes],\n mask: this.mask != null ? this.findIconDefinition(this.mask) : null,\n styles: this.styles != null ? this.styles : {},\n symbol: this.symbol,\n attributes: {\n role: this.a11yRole,\n },\n };\n }\n renderIcon(definition, params) {\n const renderedIcon = icon(definition, params);\n this.renderedIconHTML = this.sanitizer.bypassSecurityTrustHtml(renderedIcon.html.join('\\n'));\n }\n}\nFaIconComponent.ɵfac = function FaIconComponent_Factory(t) { return new (t || FaIconComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.DomSanitizer), ɵngcc0.ɵɵdirectiveInject(FaConfig), ɵngcc0.ɵɵdirectiveInject(FaIconLibrary), ɵngcc0.ɵɵdirectiveInject(FaStackItemSizeDirective, 8), ɵngcc0.ɵɵdirectiveInject(FaStackComponent, 8)); };\nFaIconComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: FaIconComponent, selectors: [[\"fa-icon\"]], hostAttrs: [1, \"ng-fa-icon\"], hostVars: 2, hostBindings: function FaIconComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"innerHTML\", ctx.renderedIconHTML, ɵngcc0.ɵɵsanitizeHtml);\n ɵngcc0.ɵɵattribute(\"title\", ctx.title);\n } }, inputs: { classes: \"classes\", icon: \"icon\", title: \"title\", spin: \"spin\", pulse: \"pulse\", mask: \"mask\", styles: \"styles\", flip: \"flip\", size: \"size\", pull: \"pull\", border: \"border\", inverse: \"inverse\", symbol: \"symbol\", rotate: \"rotate\", fixedWidth: \"fixedWidth\", transform: \"transform\", a11yRole: \"a11yRole\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 0, vars: 0, template: function FaIconComponent_Template(rf, ctx) { }, encapsulation: 2 });\nFaIconComponent.ctorParameters = () => [\n { type: DomSanitizer },\n { type: FaConfig },\n { type: FaIconLibrary },\n { type: FaStackItemSizeDirective, decorators: [{ type: Optional }] },\n { type: FaStackComponent, decorators: [{ type: Optional }] }\n];\nFaIconComponent.propDecorators = {\n icon: [{ type: Input }],\n title: [{ type: Input }],\n spin: [{ type: Input }],\n pulse: [{ type: Input }],\n mask: [{ type: Input }],\n styles: [{ type: Input }],\n flip: [{ type: Input }],\n size: [{ type: Input }],\n pull: [{ type: Input }],\n border: [{ type: Input }],\n inverse: [{ type: Input }],\n symbol: [{ type: Input }],\n rotate: [{ type: Input }],\n fixedWidth: [{ type: Input }],\n classes: [{ type: Input }],\n transform: [{ type: Input }],\n a11yRole: [{ type: Input }],\n renderedIconHTML: [{ type: HostBinding, args: ['innerHTML',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FaIconComponent, [{\n type: Component,\n args: [{\n selector: 'fa-icon',\n template: ``,\n host: {\n class: 'ng-fa-icon',\n '[attr.title]': 'title'\n }\n }]\n }], function () { return [{ type: ɵngcc1.DomSanitizer }, { type: FaConfig }, { type: FaIconLibrary }, { type: FaStackItemSizeDirective, decorators: [{\n type: Optional\n }] }, { type: FaStackComponent, decorators: [{\n type: Optional\n }] }]; }, { classes: [{\n type: Input\n }], renderedIconHTML: [{\n type: HostBinding,\n args: ['innerHTML']\n }], icon: [{\n type: Input\n }], title: [{\n type: Input\n }], spin: [{\n type: Input\n }], pulse: [{\n type: Input\n }], mask: [{\n type: Input\n }], styles: [{\n type: Input\n }], flip: [{\n type: Input\n }], size: [{\n type: Input\n }], pull: [{\n type: Input\n }], border: [{\n type: Input\n }], inverse: [{\n type: Input\n }], symbol: [{\n type: Input\n }], rotate: [{\n type: Input\n }], fixedWidth: [{\n type: Input\n }], transform: [{\n type: Input\n }], a11yRole: [{\n type: Input\n }] }); })();\n\nclass FaDuotoneIconComponent extends FaIconComponent {\n findIconDefinition(i) {\n const definition = super.findIconDefinition(i);\n if (definition != null && !Array.isArray(definition.icon[4])) {\n throw new Error('The specified icon does not appear to be a Duotone icon. ' +\n 'Check that you specified the correct style: ' +\n ` ` +\n `or use: instead.`);\n }\n return definition;\n }\n buildParams() {\n const params = super.buildParams();\n if (this.swapOpacity === true || this.swapOpacity === 'true') {\n params.classes.push('fa-swap-opacity');\n }\n if (this.primaryOpacity != null) {\n params.styles['--fa-primary-opacity'] = this.primaryOpacity.toString();\n }\n if (this.secondaryOpacity != null) {\n params.styles['--fa-secondary-opacity'] = this.secondaryOpacity.toString();\n }\n if (this.primaryColor != null) {\n params.styles['--fa-primary-color'] = this.primaryColor;\n }\n if (this.secondaryColor != null) {\n params.styles['--fa-secondary-color'] = this.secondaryColor;\n }\n return params;\n }\n}\nFaDuotoneIconComponent.ɵfac = /*@__PURE__*/ function () { let ɵFaDuotoneIconComponent_BaseFactory; return function FaDuotoneIconComponent_Factory(t) { return (ɵFaDuotoneIconComponent_BaseFactory || (ɵFaDuotoneIconComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(FaDuotoneIconComponent)))(t || FaDuotoneIconComponent); }; }();\nFaDuotoneIconComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: FaDuotoneIconComponent, selectors: [[\"fa-duotone-icon\"]], inputs: { swapOpacity: \"swapOpacity\", primaryOpacity: \"primaryOpacity\", secondaryOpacity: \"secondaryOpacity\", primaryColor: \"primaryColor\", secondaryColor: \"secondaryColor\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function FaDuotoneIconComponent_Template(rf, ctx) { }, encapsulation: 2 });\nFaDuotoneIconComponent.propDecorators = {\n swapOpacity: [{ type: Input }],\n primaryOpacity: [{ type: Input }],\n secondaryOpacity: [{ type: Input }],\n primaryColor: [{ type: Input }],\n secondaryColor: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FaDuotoneIconComponent, [{\n type: Component,\n args: [{\n selector: 'fa-duotone-icon',\n template: ``\n }]\n }], null, { swapOpacity: [{\n type: Input\n }], primaryOpacity: [{\n type: Input\n }], secondaryOpacity: [{\n type: Input\n }], primaryColor: [{\n type: Input\n }], secondaryColor: [{\n type: Input\n }] }); })();\n\n/**\n * Warns if parent component not existing.\n */\nconst faWarnIfParentNotExist = (parent, parentName, childName) => {\n if (!parent) {\n throw new Error(`${childName} should be used as child of ${parentName} only.`);\n }\n};\n\n/**\n * Fontawesome layers.\n */\nclass FaLayersComponent {\n constructor(renderer, elementRef, config) {\n this.renderer = renderer;\n this.elementRef = elementRef;\n this.config = config;\n }\n ngOnInit() {\n this.renderer.addClass(this.elementRef.nativeElement, 'fa-layers');\n this.fixedWidth = typeof this.fixedWidth === 'boolean' ? this.fixedWidth : this.config.fixedWidth;\n }\n ngOnChanges(changes) {\n if ('size' in changes) {\n if (changes.size.currentValue != null) {\n this.renderer.addClass(this.elementRef.nativeElement, `fa-${changes.size.currentValue}`);\n }\n if (changes.size.previousValue != null) {\n this.renderer.removeClass(this.elementRef.nativeElement, `fa-${changes.size.previousValue}`);\n }\n }\n }\n}\nFaLayersComponent.ɵfac = function FaLayersComponent_Factory(t) { return new (t || FaLayersComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(FaConfig)); };\nFaLayersComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: FaLayersComponent, selectors: [[\"fa-layers\"]], hostVars: 2, hostBindings: function FaLayersComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"fa-fw\", ctx.fixedWidth);\n } }, inputs: { fixedWidth: \"fixedWidth\", size: \"size\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function FaLayersComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵprojection(0);\n } }, encapsulation: 2 });\nFaLayersComponent.ctorParameters = () => [\n { type: Renderer2 },\n { type: ElementRef },\n { type: FaConfig }\n];\nFaLayersComponent.propDecorators = {\n size: [{ type: Input }],\n fixedWidth: [{ type: Input }, { type: HostBinding, args: ['class.fa-fw',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FaLayersComponent, [{\n type: Component,\n args: [{\n selector: 'fa-layers',\n template: ``\n }]\n }], function () { return [{ type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: FaConfig }]; }, { fixedWidth: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['class.fa-fw']\n }], size: [{\n type: Input\n }] }); })();\n\nclass FaLayersCounterComponent {\n constructor(parent, sanitizer) {\n this.parent = parent;\n this.sanitizer = sanitizer;\n this.classes = [];\n faWarnIfParentNotExist(this.parent, 'FaLayersComponent', this.constructor.name);\n }\n ngOnChanges(changes) {\n if (changes) {\n const params = this.buildParams();\n this.updateContent(params);\n }\n }\n buildParams() {\n return {\n title: this.title,\n classes: this.classes,\n styles: this.styles,\n };\n }\n updateContent(params) {\n this.renderedHTML = this.sanitizer.bypassSecurityTrustHtml(counter(this.content || '', params).html.join(''));\n }\n}\nFaLayersCounterComponent.ɵfac = function FaLayersCounterComponent_Factory(t) { return new (t || FaLayersCounterComponent)(ɵngcc0.ɵɵdirectiveInject(FaLayersComponent, 8), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.DomSanitizer)); };\nFaLayersCounterComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: FaLayersCounterComponent, selectors: [[\"fa-layers-counter\"]], hostAttrs: [1, \"ng-fa-layers-counter\"], hostVars: 1, hostBindings: function FaLayersCounterComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"innerHTML\", ctx.renderedHTML, ɵngcc0.ɵɵsanitizeHtml);\n } }, inputs: { classes: \"classes\", content: \"content\", title: \"title\", styles: \"styles\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 0, vars: 0, template: function FaLayersCounterComponent_Template(rf, ctx) { }, encapsulation: 2 });\nFaLayersCounterComponent.ctorParameters = () => [\n { type: FaLayersComponent, decorators: [{ type: Optional }] },\n { type: DomSanitizer }\n];\nFaLayersCounterComponent.propDecorators = {\n content: [{ type: Input }],\n title: [{ type: Input }],\n styles: [{ type: Input }],\n classes: [{ type: Input }],\n renderedHTML: [{ type: HostBinding, args: ['innerHTML',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FaLayersCounterComponent, [{\n type: Component,\n args: [{\n selector: 'fa-layers-counter',\n template: '',\n host: {\n class: 'ng-fa-layers-counter'\n }\n }]\n }], function () { return [{ type: FaLayersComponent, decorators: [{\n type: Optional\n }] }, { type: ɵngcc1.DomSanitizer }]; }, { classes: [{\n type: Input\n }], renderedHTML: [{\n type: HostBinding,\n args: ['innerHTML']\n }], content: [{\n type: Input\n }], title: [{\n type: Input\n }], styles: [{\n type: Input\n }] }); })();\n\nclass FaLayersTextComponent {\n constructor(parent, sanitizer) {\n this.parent = parent;\n this.sanitizer = sanitizer;\n this.classes = [];\n faWarnIfParentNotExist(this.parent, 'FaLayersComponent', this.constructor.name);\n }\n ngOnChanges(changes) {\n if (changes) {\n const params = this.buildParams();\n this.updateContent(params);\n }\n }\n /**\n * Updating params by component props.\n */\n buildParams() {\n const classOpts = {\n flip: this.flip,\n spin: this.spin,\n pulse: this.pulse,\n border: this.border,\n inverse: this.inverse,\n size: this.size || null,\n pull: this.pull || null,\n rotate: this.rotate || null,\n fixedWidth: this.fixedWidth,\n };\n const parsedTransform = typeof this.transform === 'string' ? parse.transform(this.transform) : this.transform;\n return {\n transform: parsedTransform,\n classes: [...faClassList(classOpts), ...this.classes],\n title: this.title,\n styles: this.styles,\n };\n }\n updateContent(params) {\n this.renderedHTML = this.sanitizer.bypassSecurityTrustHtml(text(this.content || '', params).html.join('\\n'));\n }\n}\nFaLayersTextComponent.ɵfac = function FaLayersTextComponent_Factory(t) { return new (t || FaLayersTextComponent)(ɵngcc0.ɵɵdirectiveInject(FaLayersComponent, 8), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.DomSanitizer)); };\nFaLayersTextComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: FaLayersTextComponent, selectors: [[\"fa-layers-text\"]], hostAttrs: [1, \"ng-fa-layers-text\"], hostVars: 1, hostBindings: function FaLayersTextComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"innerHTML\", ctx.renderedHTML, ɵngcc0.ɵɵsanitizeHtml);\n } }, inputs: { classes: \"classes\", content: \"content\", title: \"title\", styles: \"styles\", spin: \"spin\", pulse: \"pulse\", flip: \"flip\", size: \"size\", pull: \"pull\", border: \"border\", inverse: \"inverse\", rotate: \"rotate\", fixedWidth: \"fixedWidth\", transform: \"transform\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 0, vars: 0, template: function FaLayersTextComponent_Template(rf, ctx) { }, encapsulation: 2 });\nFaLayersTextComponent.ctorParameters = () => [\n { type: FaLayersComponent, decorators: [{ type: Optional }] },\n { type: DomSanitizer }\n];\nFaLayersTextComponent.propDecorators = {\n content: [{ type: Input }],\n title: [{ type: Input }],\n styles: [{ type: Input }],\n classes: [{ type: Input }],\n spin: [{ type: Input }],\n pulse: [{ type: Input }],\n flip: [{ type: Input }],\n size: [{ type: Input }],\n pull: [{ type: Input }],\n border: [{ type: Input }],\n inverse: [{ type: Input }],\n rotate: [{ type: Input }],\n fixedWidth: [{ type: Input }],\n transform: [{ type: Input }],\n renderedHTML: [{ type: HostBinding, args: ['innerHTML',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FaLayersTextComponent, [{\n type: Component,\n args: [{\n selector: 'fa-layers-text',\n template: '',\n host: {\n class: 'ng-fa-layers-text'\n }\n }]\n }], function () { return [{ type: FaLayersComponent, decorators: [{\n type: Optional\n }] }, { type: ɵngcc1.DomSanitizer }]; }, { classes: [{\n type: Input\n }], renderedHTML: [{\n type: HostBinding,\n args: ['innerHTML']\n }], content: [{\n type: Input\n }], title: [{\n type: Input\n }], styles: [{\n type: Input\n }], spin: [{\n type: Input\n }], pulse: [{\n type: Input\n }], flip: [{\n type: Input\n }], size: [{\n type: Input\n }], pull: [{\n type: Input\n }], border: [{\n type: Input\n }], inverse: [{\n type: Input\n }], rotate: [{\n type: Input\n }], fixedWidth: [{\n type: Input\n }], transform: [{\n type: Input\n }] }); })();\n\nclass FontAwesomeModule {\n}\nFontAwesomeModule.ɵfac = function FontAwesomeModule_Factory(t) { return new (t || FontAwesomeModule)(); };\nFontAwesomeModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: FontAwesomeModule });\nFontAwesomeModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FontAwesomeModule, [{\n type: NgModule,\n args: [{\n declarations: [\n FaIconComponent,\n FaDuotoneIconComponent,\n FaLayersComponent,\n FaLayersTextComponent,\n FaLayersCounterComponent,\n FaStackComponent,\n FaStackItemSizeDirective,\n ],\n exports: [\n FaIconComponent,\n FaDuotoneIconComponent,\n FaLayersComponent,\n FaLayersTextComponent,\n FaLayersCounterComponent,\n FaStackComponent,\n FaStackItemSizeDirective,\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(FontAwesomeModule, { declarations: [FaIconComponent, FaDuotoneIconComponent, FaLayersComponent, FaLayersTextComponent, FaLayersCounterComponent, FaStackComponent, FaStackItemSizeDirective], exports: [FaIconComponent, FaDuotoneIconComponent, FaLayersComponent, FaLayersTextComponent, FaLayersCounterComponent, FaStackComponent, FaStackItemSizeDirective] }); })();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { FaConfig, FaDuotoneIconComponent, FaIconComponent, FaIconLibrary, FaLayersComponent, FaLayersCounterComponent, FaLayersTextComponent, FaStackComponent, FaStackItemSizeDirective, FontAwesomeModule };\n\n","export default function _taggedTemplateLiteral(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\n}","import { Observable } from '../Observable';\nimport { isArray } from '../util/isArray';\nimport { isFunction } from '../util/isFunction';\nimport { map } from '../operators/map';\nconst toString = (() => Object.prototype.toString)();\nexport function fromEvent(target, eventName, options, resultSelector) {\n if (isFunction(options)) {\n resultSelector = options;\n options = undefined;\n }\n if (resultSelector) {\n return fromEvent(target, eventName, options).pipe(map(args => isArray(args) ? resultSelector(...args) : resultSelector(args)));\n }\n return new Observable(subscriber => {\n function handler(e) {\n if (arguments.length > 1) {\n subscriber.next(Array.prototype.slice.call(arguments));\n }\n else {\n subscriber.next(e);\n }\n }\n setupSubscription(target, eventName, handler, subscriber, options);\n });\n}\nfunction setupSubscription(sourceObj, eventName, handler, subscriber, options) {\n let unsubscribe;\n if (isEventTarget(sourceObj)) {\n const source = sourceObj;\n sourceObj.addEventListener(eventName, handler, options);\n unsubscribe = () => source.removeEventListener(eventName, handler, options);\n }\n else if (isJQueryStyleEventEmitter(sourceObj)) {\n const source = sourceObj;\n sourceObj.on(eventName, handler);\n unsubscribe = () => source.off(eventName, handler);\n }\n else if (isNodeStyleEventEmitter(sourceObj)) {\n const source = sourceObj;\n sourceObj.addListener(eventName, handler);\n unsubscribe = () => source.removeListener(eventName, handler);\n }\n else if (sourceObj && sourceObj.length) {\n for (let i = 0, len = sourceObj.length; i < len; i++) {\n setupSubscription(sourceObj[i], eventName, handler, subscriber, options);\n }\n }\n else {\n throw new TypeError('Invalid event target');\n }\n subscriber.add(unsubscribe);\n}\nfunction isNodeStyleEventEmitter(sourceObj) {\n return sourceObj && typeof sourceObj.addListener === 'function' && typeof sourceObj.removeListener === 'function';\n}\nfunction isJQueryStyleEventEmitter(sourceObj) {\n return sourceObj && typeof sourceObj.on === 'function' && typeof sourceObj.off === 'function';\n}\nfunction isEventTarget(sourceObj) {\n return sourceObj && typeof sourceObj.addEventListener === 'function' && typeof sourceObj.removeEventListener === 'function';\n}\n","import { isArray } from './isArray';\nexport function isNumeric(val) {\n return !isArray(val) && (val - parseFloat(val) + 1) >= 0;\n}\n","import { Observable } from '../Observable';\nimport { async } from '../scheduler/async';\nimport { isNumeric } from '../util/isNumeric';\nimport { isScheduler } from '../util/isScheduler';\nexport function timer(dueTime = 0, periodOrScheduler, scheduler) {\n let period = -1;\n if (isNumeric(periodOrScheduler)) {\n period = Number(periodOrScheduler) < 1 && 1 || Number(periodOrScheduler);\n }\n else if (isScheduler(periodOrScheduler)) {\n scheduler = periodOrScheduler;\n }\n if (!isScheduler(scheduler)) {\n scheduler = async;\n }\n return new Observable(subscriber => {\n const due = isNumeric(dueTime)\n ? dueTime\n : (+dueTime - scheduler.now());\n return scheduler.schedule(dispatch, due, {\n index: 0, period, subscriber\n });\n });\n}\nfunction dispatch(state) {\n const { index, period, subscriber } = state;\n subscriber.next(index);\n if (subscriber.closed) {\n return;\n }\n else if (period === -1) {\n return subscriber.complete();\n }\n state.index = index + 1;\n this.schedule(state, period);\n}\n","import { isArray } from '../util/isArray';\nimport { fromArray } from './fromArray';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function race(...observables) {\n if (observables.length === 1) {\n if (isArray(observables[0])) {\n observables = observables[0];\n }\n else {\n return observables[0];\n }\n }\n return fromArray(observables, undefined).lift(new RaceOperator());\n}\nexport class RaceOperator {\n call(subscriber, source) {\n return source.subscribe(new RaceSubscriber(subscriber));\n }\n}\nexport class RaceSubscriber extends OuterSubscriber {\n constructor(destination) {\n super(destination);\n this.hasFirst = false;\n this.observables = [];\n this.subscriptions = [];\n }\n _next(observable) {\n this.observables.push(observable);\n }\n _complete() {\n const observables = this.observables;\n const len = observables.length;\n if (len === 0) {\n this.destination.complete();\n }\n else {\n for (let i = 0; i < len && !this.hasFirst; i++) {\n const observable = observables[i];\n const subscription = subscribeToResult(this, observable, undefined, i);\n if (this.subscriptions) {\n this.subscriptions.push(subscription);\n }\n this.add(subscription);\n }\n this.observables = null;\n }\n }\n notifyNext(_outerValue, innerValue, outerIndex) {\n if (!this.hasFirst) {\n this.hasFirst = true;\n for (let i = 0; i < this.subscriptions.length; i++) {\n if (i !== outerIndex) {\n let subscription = this.subscriptions[i];\n subscription.unsubscribe();\n this.remove(subscription);\n }\n }\n this.subscriptions = null;\n }\n this.destination.next(innerValue);\n }\n}\n","import { fromArray } from './fromArray';\nimport { isArray } from '../util/isArray';\nimport { Subscriber } from '../Subscriber';\nimport { iterator as Symbol_iterator } from '../../internal/symbol/iterator';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\nexport function zip(...observables) {\n const resultSelector = observables[observables.length - 1];\n if (typeof resultSelector === 'function') {\n observables.pop();\n }\n return fromArray(observables, undefined).lift(new ZipOperator(resultSelector));\n}\nexport class ZipOperator {\n constructor(resultSelector) {\n this.resultSelector = resultSelector;\n }\n call(subscriber, source) {\n return source.subscribe(new ZipSubscriber(subscriber, this.resultSelector));\n }\n}\nexport class ZipSubscriber extends Subscriber {\n constructor(destination, resultSelector, values = Object.create(null)) {\n super(destination);\n this.resultSelector = resultSelector;\n this.iterators = [];\n this.active = 0;\n this.resultSelector = (typeof resultSelector === 'function') ? resultSelector : undefined;\n }\n _next(value) {\n const iterators = this.iterators;\n if (isArray(value)) {\n iterators.push(new StaticArrayIterator(value));\n }\n else if (typeof value[Symbol_iterator] === 'function') {\n iterators.push(new StaticIterator(value[Symbol_iterator]()));\n }\n else {\n iterators.push(new ZipBufferIterator(this.destination, this, value));\n }\n }\n _complete() {\n const iterators = this.iterators;\n const len = iterators.length;\n this.unsubscribe();\n if (len === 0) {\n this.destination.complete();\n return;\n }\n this.active = len;\n for (let i = 0; i < len; i++) {\n let iterator = iterators[i];\n if (iterator.stillUnsubscribed) {\n const destination = this.destination;\n destination.add(iterator.subscribe());\n }\n else {\n this.active--;\n }\n }\n }\n notifyInactive() {\n this.active--;\n if (this.active === 0) {\n this.destination.complete();\n }\n }\n checkIterators() {\n const iterators = this.iterators;\n const len = iterators.length;\n const destination = this.destination;\n for (let i = 0; i < len; i++) {\n let iterator = iterators[i];\n if (typeof iterator.hasValue === 'function' && !iterator.hasValue()) {\n return;\n }\n }\n let shouldComplete = false;\n const args = [];\n for (let i = 0; i < len; i++) {\n let iterator = iterators[i];\n let result = iterator.next();\n if (iterator.hasCompleted()) {\n shouldComplete = true;\n }\n if (result.done) {\n destination.complete();\n return;\n }\n args.push(result.value);\n }\n if (this.resultSelector) {\n this._tryresultSelector(args);\n }\n else {\n destination.next(args);\n }\n if (shouldComplete) {\n destination.complete();\n }\n }\n _tryresultSelector(args) {\n let result;\n try {\n result = this.resultSelector.apply(this, args);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n }\n}\nclass StaticIterator {\n constructor(iterator) {\n this.iterator = iterator;\n this.nextResult = iterator.next();\n }\n hasValue() {\n return true;\n }\n next() {\n const result = this.nextResult;\n this.nextResult = this.iterator.next();\n return result;\n }\n hasCompleted() {\n const nextResult = this.nextResult;\n return Boolean(nextResult && nextResult.done);\n }\n}\nclass StaticArrayIterator {\n constructor(array) {\n this.array = array;\n this.index = 0;\n this.length = 0;\n this.length = array.length;\n }\n [Symbol_iterator]() {\n return this;\n }\n next(value) {\n const i = this.index++;\n const array = this.array;\n return i < this.length ? { value: array[i], done: false } : { value: null, done: true };\n }\n hasValue() {\n return this.array.length > this.index;\n }\n hasCompleted() {\n return this.array.length === this.index;\n }\n}\nclass ZipBufferIterator extends SimpleOuterSubscriber {\n constructor(destination, parent, observable) {\n super(destination);\n this.parent = parent;\n this.observable = observable;\n this.stillUnsubscribed = true;\n this.buffer = [];\n this.isComplete = false;\n }\n [Symbol_iterator]() {\n return this;\n }\n next() {\n const buffer = this.buffer;\n if (buffer.length === 0 && this.isComplete) {\n return { value: null, done: true };\n }\n else {\n return { value: buffer.shift(), done: false };\n }\n }\n hasValue() {\n return this.buffer.length > 0;\n }\n hasCompleted() {\n return this.buffer.length === 0 && this.isComplete;\n }\n notifyComplete() {\n if (this.buffer.length > 0) {\n this.isComplete = true;\n this.parent.notifyInactive();\n }\n else {\n this.destination.complete();\n }\n }\n notifyNext(innerValue) {\n this.buffer.push(innerValue);\n this.parent.checkIterators();\n }\n subscribe() {\n return innerSubscribe(this.observable, new SimpleInnerSubscriber(this));\n }\n}\n","import { innerSubscribe, SimpleInnerSubscriber, SimpleOuterSubscriber } from '../innerSubscribe';\nexport function takeUntil(notifier) {\n return (source) => source.lift(new TakeUntilOperator(notifier));\n}\nclass TakeUntilOperator {\n constructor(notifier) {\n this.notifier = notifier;\n }\n call(subscriber, source) {\n const takeUntilSubscriber = new TakeUntilSubscriber(subscriber);\n const notifierSubscription = innerSubscribe(this.notifier, new SimpleInnerSubscriber(takeUntilSubscriber));\n if (notifierSubscription && !takeUntilSubscriber.seenValue) {\n takeUntilSubscriber.add(notifierSubscription);\n return source.subscribe(takeUntilSubscriber);\n }\n return takeUntilSubscriber;\n }\n}\nclass TakeUntilSubscriber extends SimpleOuterSubscriber {\n constructor(destination) {\n super(destination);\n this.seenValue = false;\n }\n notifyNext() {\n this.seenValue = true;\n this.complete();\n }\n notifyComplete() {\n }\n}\n","import { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function withLatestFrom(...args) {\n return (source) => {\n let project;\n if (typeof args[args.length - 1] === 'function') {\n project = args.pop();\n }\n const observables = args;\n return source.lift(new WithLatestFromOperator(observables, project));\n };\n}\nclass WithLatestFromOperator {\n constructor(observables, project) {\n this.observables = observables;\n this.project = project;\n }\n call(subscriber, source) {\n return source.subscribe(new WithLatestFromSubscriber(subscriber, this.observables, this.project));\n }\n}\nclass WithLatestFromSubscriber extends OuterSubscriber {\n constructor(destination, observables, project) {\n super(destination);\n this.observables = observables;\n this.project = project;\n this.toRespond = [];\n const len = observables.length;\n this.values = new Array(len);\n for (let i = 0; i < len; i++) {\n this.toRespond.push(i);\n }\n for (let i = 0; i < len; i++) {\n let observable = observables[i];\n this.add(subscribeToResult(this, observable, undefined, i));\n }\n }\n notifyNext(_outerValue, innerValue, outerIndex) {\n this.values[outerIndex] = innerValue;\n const toRespond = this.toRespond;\n if (toRespond.length > 0) {\n const found = toRespond.indexOf(outerIndex);\n if (found !== -1) {\n toRespond.splice(found, 1);\n }\n }\n }\n notifyComplete() {\n }\n _next(value) {\n if (this.toRespond.length === 0) {\n const args = [value, ...this.values];\n if (this.project) {\n this._tryProject(args);\n }\n else {\n this.destination.next(args);\n }\n }\n }\n _tryProject(args) {\n let result;\n try {\n result = this.project.apply(this, args);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n }\n}\n","export function isDate(value) {\n return value instanceof Date && !isNaN(+value);\n}\n","import { async } from '../scheduler/async';\nimport { isDate } from '../util/isDate';\nimport { Subscriber } from '../Subscriber';\nimport { Notification } from '../Notification';\nexport function delay(delay, scheduler = async) {\n const absoluteDelay = isDate(delay);\n const delayFor = absoluteDelay ? (+delay - scheduler.now()) : Math.abs(delay);\n return (source) => source.lift(new DelayOperator(delayFor, scheduler));\n}\nclass DelayOperator {\n constructor(delay, scheduler) {\n this.delay = delay;\n this.scheduler = scheduler;\n }\n call(subscriber, source) {\n return source.subscribe(new DelaySubscriber(subscriber, this.delay, this.scheduler));\n }\n}\nclass DelaySubscriber extends Subscriber {\n constructor(destination, delay, scheduler) {\n super(destination);\n this.delay = delay;\n this.scheduler = scheduler;\n this.queue = [];\n this.active = false;\n this.errored = false;\n }\n static dispatch(state) {\n const source = state.source;\n const queue = source.queue;\n const scheduler = state.scheduler;\n const destination = state.destination;\n while (queue.length > 0 && (queue[0].time - scheduler.now()) <= 0) {\n queue.shift().notification.observe(destination);\n }\n if (queue.length > 0) {\n const delay = Math.max(0, queue[0].time - scheduler.now());\n this.schedule(state, delay);\n }\n else {\n this.unsubscribe();\n source.active = false;\n }\n }\n _schedule(scheduler) {\n this.active = true;\n const destination = this.destination;\n destination.add(scheduler.schedule(DelaySubscriber.dispatch, this.delay, {\n source: this, destination: this.destination, scheduler: scheduler\n }));\n }\n scheduleNotification(notification) {\n if (this.errored === true) {\n return;\n }\n const scheduler = this.scheduler;\n const message = new DelayMessage(scheduler.now() + this.delay, notification);\n this.queue.push(message);\n if (this.active === false) {\n this._schedule(scheduler);\n }\n }\n _next(value) {\n this.scheduleNotification(Notification.createNext(value));\n }\n _error(err) {\n this.errored = true;\n this.queue = [];\n this.destination.error(err);\n this.unsubscribe();\n }\n _complete() {\n this.scheduleNotification(Notification.createComplete());\n this.unsubscribe();\n }\n}\nclass DelayMessage {\n constructor(time, notification) {\n this.time = time;\n this.notification = notification;\n }\n}\n","import { Subscriber } from '../Subscriber';\nexport function skip(count) {\n return (source) => source.lift(new SkipOperator(count));\n}\nclass SkipOperator {\n constructor(total) {\n this.total = total;\n }\n call(subscriber, source) {\n return source.subscribe(new SkipSubscriber(subscriber, this.total));\n }\n}\nclass SkipSubscriber extends Subscriber {\n constructor(destination, total) {\n super(destination);\n this.total = total;\n this.count = 0;\n }\n _next(x) {\n if (++this.count > this.total) {\n this.destination.next(x);\n }\n }\n}\n","import { ɵɵdefineInjectable, Injectable, ɵɵinject, Directive, TemplateRef, EventEmitter, Input, Output, ContentChildren, Component, ViewEncapsulation, ElementRef, NgZone, ChangeDetectorRef, Optional, Host, NgModule, ChangeDetectionStrategy, Renderer2, forwardRef, Inject, PLATFORM_ID, LOCALE_ID, ViewChild, ContentChild, ViewContainerRef, ComponentFactoryResolver, Injector, ApplicationRef, INJECTOR, RendererFactory2, Attribute, ViewChildren, HostBinding, InjectionToken } from '@angular/core';\nimport { CommonModule, isPlatformBrowser, getLocaleMonthNames, FormStyle, TranslationWidth, getLocaleDayNames, formatDate, DOCUMENT, getLocaleDayPeriods } from '@angular/common';\nimport { Observable, EMPTY, of, Subject, fromEvent, timer, race, BehaviorSubject, combineLatest, NEVER, zip, merge } from 'rxjs';\nimport { endWith, takeUntil, filter, take, map, startWith, distinctUntilChanged, switchMap, tap, withLatestFrom, delay, mergeMap, skip, share } from 'rxjs/operators';\nimport { NG_VALUE_ACCESSOR, NG_VALIDATORS, FormsModule } from '@angular/forms';\n\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/common';\nimport * as ɵngcc2 from '@angular/forms';\n\nfunction NgbAccordion_ng_template_0_ng_template_2_Template(rf, ctx) { }\nfunction NgbAccordion_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"button\", 3);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵtemplate(2, NgbAccordion_ng_template_0_ng_template_2_Template, 0, 0, \"ng-template\", 4);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const panel_r3 = ctx.$implicit;\n ɵngcc0.ɵɵproperty(\"ngbPanelToggle\", panel_r3);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", panel_r3.title, \"\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", panel_r3.titleTpl == null ? null : panel_r3.titleTpl.templateRef);\n} }\nfunction NgbAccordion_ng_template_2_ng_template_2_Template(rf, ctx) { }\nfunction NgbAccordion_ng_template_2_div_3_ng_template_2_Template(rf, ctx) { }\nfunction NgbAccordion_ng_template_2_div_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 8);\n ɵngcc0.ɵɵelementStart(1, \"div\", 9);\n ɵngcc0.ɵɵtemplate(2, NgbAccordion_ng_template_2_div_3_ng_template_2_Template, 0, 0, \"ng-template\", 4);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const panel_r5 = ɵngcc0.ɵɵnextContext().$implicit;\n ɵngcc0.ɵɵpropertyInterpolate(\"id\", panel_r5.id);\n ɵngcc0.ɵɵattribute(\"aria-labelledby\", panel_r5.id + \"-header\");\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (panel_r5.contentTpl == null ? null : panel_r5.contentTpl.templateRef) || null);\n} }\nconst _c0 = function (a0, a1) { return { $implicit: a0, opened: a1 }; };\nfunction NgbAccordion_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\");\n ɵngcc0.ɵɵelementStart(1, \"div\", 5);\n ɵngcc0.ɵɵtemplate(2, NgbAccordion_ng_template_2_ng_template_2_Template, 0, 0, \"ng-template\", 6);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(3, NgbAccordion_ng_template_2_div_3_Template, 3, 3, \"div\", 7);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const panel_r5 = ctx.$implicit;\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵclassMap(\"card \" + (panel_r5.cardClass || \"\"));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassMap(\"card-header \" + (panel_r5.type ? \"bg-\" + panel_r5.type : ctx_r2.type ? \"bg-\" + ctx_r2.type : \"\"));\n ɵngcc0.ɵɵpropertyInterpolate1(\"id\", \"\", panel_r5.id, \"-header\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (panel_r5.headerTpl == null ? null : panel_r5.headerTpl.templateRef) || _r0)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction2(8, _c0, panel_r5, panel_r5.isOpen));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r2.destroyOnHide || panel_r5.isOpen || panel_r5.transitionRunning);\n} }\nfunction NgbAlert_button_1_Template(rf, ctx) { if (rf & 1) {\n const _r2 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 1);\n ɵngcc0.ɵɵlistener(\"click\", function NgbAlert_button_1_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r2); const ctx_r1 = ɵngcc0.ɵɵnextContext(); return ctx_r1.close(); });\n ɵngcc0.ɵɵelementStart(1, \"span\", 2);\n ɵngcc0.ɵɵtext(2, \"\\u00D7\");\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} }\nconst _c3 = [\"*\"];\nfunction NgbCarousel_li_1_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"li\", 6);\n ɵngcc0.ɵɵlistener(\"click\", function NgbCarousel_li_1_Template_li_click_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r6); const slide_r4 = restoredCtx.$implicit; const ctx_r5 = ɵngcc0.ɵɵnextContext(); ctx_r5.focus(); return ctx_r5.select(slide_r4.id, ctx_r5.NgbSlideEventSource.INDICATOR); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const slide_r4 = ctx.$implicit;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"active\", slide_r4.id === ctx_r0.activeId);\n ɵngcc0.ɵɵattribute(\"aria-labelledby\", \"slide-\" + slide_r4.id)(\"aria-controls\", \"slide-\" + slide_r4.id)(\"aria-selected\", slide_r4.id === ctx_r0.activeId);\n} }\nfunction NgbCarousel_div_3_ng_template_3_Template(rf, ctx) { }\nfunction NgbCarousel_div_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 7);\n ɵngcc0.ɵɵelementStart(1, \"span\", 8);\n ɵngcc0.ɵɵi18n(2, 9);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(3, NgbCarousel_div_3_ng_template_3_Template, 0, 0, \"ng-template\", 10);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const slide_r7 = ctx.$implicit;\n const i_r8 = ctx.index;\n const c_r9 = ctx.count;\n ɵngcc0.ɵɵproperty(\"id\", \"slide-\" + slide_r7.id);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵi18nExp(i_r8 + 1)(c_r9);\n ɵngcc0.ɵɵi18nApply(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", slide_r7.tplRef);\n} }\nfunction NgbCarousel_a_4_Template(rf, ctx) { if (rf & 1) {\n const _r12 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"a\", 11);\n ɵngcc0.ɵɵlistener(\"click\", function NgbCarousel_a_4_Template_a_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r12); const ctx_r11 = ɵngcc0.ɵɵnextContext(); return ctx_r11.arrowLeft(); });\n ɵngcc0.ɵɵelement(1, \"span\", 12);\n ɵngcc0.ɵɵelementStart(2, \"span\", 8);\n ɵngcc0.ɵɵi18n(3, 13);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction NgbCarousel_a_5_Template(rf, ctx) { if (rf & 1) {\n const _r14 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"a\", 14);\n ɵngcc0.ɵɵlistener(\"click\", function NgbCarousel_a_5_Template_a_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r14); const ctx_r13 = ɵngcc0.ɵɵnextContext(); return ctx_r13.arrowRight(); });\n ɵngcc0.ɵɵelement(1, \"span\", 15);\n ɵngcc0.ɵɵelementStart(2, \"span\", 8);\n ɵngcc0.ɵɵi18n(3, 16);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} }\nconst _c10 = [\"defaultDayTemplate\"];\nconst _c11 = [\"content\"];\nfunction NgbDatepicker_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 7);\n} if (rf & 2) {\n const date_r8 = ctx.date;\n const currentMonth_r9 = ctx.currentMonth;\n const selected_r10 = ctx.selected;\n const disabled_r11 = ctx.disabled;\n const focused_r12 = ctx.focused;\n ɵngcc0.ɵɵproperty(\"date\", date_r8)(\"currentMonth\", currentMonth_r9)(\"selected\", selected_r10)(\"disabled\", disabled_r11)(\"focused\", focused_r12);\n} }\nfunction NgbDatepicker_ng_template_2_div_0_div_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 12);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const month_r14 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r16 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r16.i18n.getMonthLabel(month_r14.firstDate), \" \");\n} }\nfunction NgbDatepicker_ng_template_2_div_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 9);\n ɵngcc0.ɵɵtemplate(1, NgbDatepicker_ng_template_2_div_0_div_1_Template, 2, 1, \"div\", 10);\n ɵngcc0.ɵɵelement(2, \"ngb-datepicker-month\", 11);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const month_r14 = ctx.$implicit;\n const ctx_r13 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r13.navigation === \"none\" || ctx_r13.displayMonths > 1 && ctx_r13.navigation === \"select\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"month\", month_r14.firstDate);\n} }\nfunction NgbDatepicker_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbDatepicker_ng_template_2_div_0_Template, 3, 2, \"div\", 8);\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r3.model.months);\n} }\nfunction NgbDatepicker_ngb_datepicker_navigation_5_Template(rf, ctx) { if (rf & 1) {\n const _r19 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"ngb-datepicker-navigation\", 13);\n ɵngcc0.ɵɵlistener(\"navigate\", function NgbDatepicker_ngb_datepicker_navigation_5_Template_ngb_datepicker_navigation_navigate_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r19); const ctx_r18 = ɵngcc0.ɵɵnextContext(); return ctx_r18.onNavigateEvent($event); })(\"select\", function NgbDatepicker_ngb_datepicker_navigation_5_Template_ngb_datepicker_navigation_select_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r19); const ctx_r20 = ɵngcc0.ɵɵnextContext(); return ctx_r20.onNavigateDateSelect($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"date\", ctx_r4.model.firstDate)(\"months\", ctx_r4.model.months)(\"disabled\", ctx_r4.model.disabled)(\"showSelect\", ctx_r4.model.navigation === \"select\")(\"prevDisabled\", ctx_r4.model.prevDisabled)(\"nextDisabled\", ctx_r4.model.nextDisabled)(\"selectBoxes\", ctx_r4.model.selectBoxes);\n} }\nfunction NgbDatepicker_ng_template_8_Template(rf, ctx) { }\nfunction NgbDatepicker_ng_template_9_Template(rf, ctx) { }\nfunction NgbDatepickerMonth_div_0_div_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 5);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r2.i18n.getWeekLabel());\n} }\nfunction NgbDatepickerMonth_div_0_div_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 6);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const weekday_r4 = ctx.$implicit;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(weekday_r4);\n} }\nfunction NgbDatepickerMonth_div_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 2);\n ɵngcc0.ɵɵtemplate(1, NgbDatepickerMonth_div_0_div_1_Template, 2, 1, \"div\", 3);\n ɵngcc0.ɵɵtemplate(2, NgbDatepickerMonth_div_0_div_2_Template, 2, 1, \"div\", 4);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.datepicker.showWeekNumbers);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r0.viewModel.weekdays);\n} }\nfunction NgbDatepickerMonth_ng_template_1_div_0_div_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 11);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const week_r5 = ɵngcc0.ɵɵnextContext(2).$implicit;\n const ctx_r7 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r7.i18n.getWeekNumerals(week_r5.number));\n} }\nfunction NgbDatepickerMonth_ng_template_1_div_0_div_2_ng_template_1_ng_template_0_Template(rf, ctx) { }\nfunction NgbDatepickerMonth_ng_template_1_div_0_div_2_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbDatepickerMonth_ng_template_1_div_0_div_2_ng_template_1_ng_template_0_Template, 0, 0, \"ng-template\", 14);\n} if (rf & 2) {\n const day_r10 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r11 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r11.datepicker.dayTemplate)(\"ngTemplateOutletContext\", day_r10.context);\n} }\nfunction NgbDatepickerMonth_ng_template_1_div_0_div_2_Template(rf, ctx) { if (rf & 1) {\n const _r15 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 12);\n ɵngcc0.ɵɵlistener(\"click\", function NgbDatepickerMonth_ng_template_1_div_0_div_2_Template_div_click_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r15); const day_r10 = restoredCtx.$implicit; const ctx_r14 = ɵngcc0.ɵɵnextContext(3); ctx_r14.doSelect(day_r10); return $event.preventDefault(); });\n ɵngcc0.ɵɵtemplate(1, NgbDatepickerMonth_ng_template_1_div_0_div_2_ng_template_1_Template, 1, 2, \"ng-template\", 13);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const day_r10 = ctx.$implicit;\n ɵngcc0.ɵɵclassProp(\"disabled\", day_r10.context.disabled)(\"hidden\", day_r10.hidden)(\"ngb-dp-today\", day_r10.context.today);\n ɵngcc0.ɵɵproperty(\"tabindex\", day_r10.tabindex);\n ɵngcc0.ɵɵattribute(\"aria-label\", day_r10.ariaLabel);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !day_r10.hidden);\n} }\nfunction NgbDatepickerMonth_ng_template_1_div_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 8);\n ɵngcc0.ɵɵtemplate(1, NgbDatepickerMonth_ng_template_1_div_0_div_1_Template, 2, 1, \"div\", 9);\n ɵngcc0.ɵɵtemplate(2, NgbDatepickerMonth_ng_template_1_div_0_div_2_Template, 2, 9, \"div\", 10);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const week_r5 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r6 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r6.datepicker.showWeekNumbers);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", week_r5.days);\n} }\nfunction NgbDatepickerMonth_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbDatepickerMonth_ng_template_1_div_0_Template, 3, 2, \"div\", 7);\n} if (rf & 2) {\n const week_r5 = ctx.$implicit;\n ɵngcc0.ɵɵproperty(\"ngIf\", !week_r5.collapsed);\n} }\nfunction NgbDatepickerNavigation_ngb_datepicker_navigation_select_3_Template(rf, ctx) { if (rf & 1) {\n const _r3 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"ngb-datepicker-navigation-select\", 7);\n ɵngcc0.ɵɵlistener(\"select\", function NgbDatepickerNavigation_ngb_datepicker_navigation_select_3_Template_ngb_datepicker_navigation_select_select_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r2 = ɵngcc0.ɵɵnextContext(); return ctx_r2.select.emit($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"date\", ctx_r0.date)(\"disabled\", ctx_r0.disabled)(\"months\", ctx_r0.selectBoxes.months)(\"years\", ctx_r0.selectBoxes.years);\n} }\nfunction NgbDatepickerNavigation_4_ng_template_0_div_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 0);\n} }\nfunction NgbDatepickerNavigation_4_ng_template_0_div_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 0);\n} }\nfunction NgbDatepickerNavigation_4_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbDatepickerNavigation_4_ng_template_0_div_0_Template, 1, 0, \"div\", 9);\n ɵngcc0.ɵɵelementStart(1, \"div\", 10);\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(3, NgbDatepickerNavigation_4_ng_template_0_div_3_Template, 1, 0, \"div\", 9);\n} if (rf & 2) {\n const month_r5 = ctx.$implicit;\n const i_r6 = ctx.index;\n const ctx_r4 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", i_r6 > 0);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r4.i18n.getMonthLabel(month_r5.firstDate), \" \");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", i_r6 !== ctx_r4.months.length - 1);\n} }\nfunction NgbDatepickerNavigation_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbDatepickerNavigation_4_ng_template_0_Template, 4, 3, \"ng-template\", 8);\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r1.months);\n} }\nconst _c20 = [\"ngbDatepickerDayView\", \"\"];\nconst _c21 = [\"month\"];\nconst _c22 = [\"year\"];\nfunction NgbDatepickerNavigationSelect_option_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"option\", 5);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const m_r4 = ctx.$implicit;\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"value\", m_r4);\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx_r1.i18n.getMonthFullName(m_r4, ctx_r1.date == null ? null : ctx_r1.date.year));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r1.i18n.getMonthShortName(m_r4, ctx_r1.date == null ? null : ctx_r1.date.year));\n} }\nfunction NgbDatepickerNavigationSelect_option_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"option\", 5);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const y_r5 = ctx.$implicit;\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"value\", y_r5);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r3.i18n.getYearNumerals(y_r5));\n} }\nconst _c31 = [\"dialog\"];\nconst _c32 = [\"ngbNavOutlet\", \"\"];\nfunction NgbNavOutlet_ng_template_0_div_0_ng_template_1_Template(rf, ctx) { }\nconst _c33 = function (a0) { return { $implicit: a0 }; };\nfunction NgbNavOutlet_ng_template_0_div_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 2);\n ɵngcc0.ɵɵtemplate(1, NgbNavOutlet_ng_template_0_div_0_ng_template_1_Template, 0, 0, \"ng-template\", 3);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const item_r1 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"item\", item_r1)(\"nav\", ctx_r2.nav)(\"role\", ctx_r2.paneRole);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (item_r1.contentTpl == null ? null : item_r1.contentTpl.templateRef) || null)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction1(5, _c33, item_r1.active || ctx_r2.isPanelTransitioning(item_r1)));\n} }\nfunction NgbNavOutlet_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbNavOutlet_ng_template_0_div_0_Template, 2, 7, \"div\", 1);\n} if (rf & 2) {\n const item_r1 = ctx.$implicit;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngIf\", item_r1.isPanelInDom() || ctx_r0.isPanelTransitioning(item_r1));\n} }\nfunction NgbPagination_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 9);\n ɵngcc0.ɵɵi18n(1, 10);\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction NgbPagination_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 9);\n ɵngcc0.ɵɵi18n(1, 11);\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction NgbPagination_ng_template_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 9);\n ɵngcc0.ɵɵi18n(1, 12);\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction NgbPagination_ng_template_6_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 9);\n ɵngcc0.ɵɵi18n(1, 13);\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction NgbPagination_ng_template_8_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0, \"...\");\n} }\nfunction NgbPagination_ng_template_10_span_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 15);\n ɵngcc0.ɵɵtext(1, \"(current)\");\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction NgbPagination_ng_template_10_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n ɵngcc0.ɵɵtemplate(1, NgbPagination_ng_template_10_span_1_Template, 2, 0, \"span\", 14);\n} if (rf & 2) {\n const page_r19 = ctx.$implicit;\n const currentPage_r20 = ctx.currentPage;\n ɵngcc0.ɵɵtextInterpolate1(\" \", page_r19, \" \");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", page_r19 === currentPage_r20);\n} }\nfunction NgbPagination_ng_template_12_li_0_a_1_ng_template_1_Template(rf, ctx) { }\nconst _c42 = function (a1) { return { disabled: true, currentPage: a1 }; };\nfunction NgbPagination_ng_template_12_li_0_a_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"a\", 20);\n ɵngcc0.ɵɵtemplate(1, NgbPagination_ng_template_12_li_0_a_1_ng_template_1_Template, 0, 0, \"ng-template\", 8);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const page_r22 = ɵngcc0.ɵɵnextContext(2).$implicit;\n const ctx_r27 = ɵngcc0.ɵɵnextContext();\n const _r8 = ɵngcc0.ɵɵreference(9);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (ctx_r27.tplEllipsis == null ? null : ctx_r27.tplEllipsis.templateRef) || _r8)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction1(2, _c42, page_r22));\n} }\nfunction NgbPagination_ng_template_12_li_0_a_2_ng_template_1_Template(rf, ctx) { }\nconst _c43 = function (a0, a1, a2) { return { disabled: a0, $implicit: a1, currentPage: a2 }; };\nfunction NgbPagination_ng_template_12_li_0_a_2_Template(rf, ctx) { if (rf & 1) {\n const _r34 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"a\", 21);\n ɵngcc0.ɵɵlistener(\"click\", function NgbPagination_ng_template_12_li_0_a_2_Template_a_click_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r34); const pageNumber_r26 = ɵngcc0.ɵɵnextContext().$implicit; const ctx_r32 = ɵngcc0.ɵɵnextContext(2); ctx_r32.selectPage(pageNumber_r26); return $event.preventDefault(); });\n ɵngcc0.ɵɵtemplate(1, NgbPagination_ng_template_12_li_0_a_2_ng_template_1_Template, 0, 0, \"ng-template\", 8);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const pageNumber_r26 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r35 = ɵngcc0.ɵɵnextContext();\n const disabled_r24 = ctx_r35.disabled;\n const page_r22 = ctx_r35.$implicit;\n const ctx_r28 = ɵngcc0.ɵɵnextContext();\n const _r10 = ɵngcc0.ɵɵreference(11);\n ɵngcc0.ɵɵattribute(\"tabindex\", disabled_r24 ? \"-1\" : null)(\"aria-disabled\", disabled_r24 ? \"true\" : null);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (ctx_r28.tplNumber == null ? null : ctx_r28.tplNumber.templateRef) || _r10)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction3(4, _c43, disabled_r24, pageNumber_r26, page_r22));\n} }\nfunction NgbPagination_ng_template_12_li_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"li\", 17);\n ɵngcc0.ɵɵtemplate(1, NgbPagination_ng_template_12_li_0_a_1_Template, 2, 4, \"a\", 18);\n ɵngcc0.ɵɵtemplate(2, NgbPagination_ng_template_12_li_0_a_2_Template, 2, 8, \"a\", 19);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const pageNumber_r26 = ctx.$implicit;\n const ctx_r37 = ɵngcc0.ɵɵnextContext();\n const page_r22 = ctx_r37.$implicit;\n const disabled_r24 = ctx_r37.disabled;\n const ctx_r25 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"active\", pageNumber_r26 === page_r22)(\"disabled\", ctx_r25.isEllipsis(pageNumber_r26) || disabled_r24);\n ɵngcc0.ɵɵattribute(\"aria-current\", pageNumber_r26 === page_r22 ? \"page\" : null);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r25.isEllipsis(pageNumber_r26));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r25.isEllipsis(pageNumber_r26));\n} }\nfunction NgbPagination_ng_template_12_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbPagination_ng_template_12_li_0_Template, 3, 7, \"li\", 16);\n} if (rf & 2) {\n const pages_r23 = ctx.pages;\n ɵngcc0.ɵɵproperty(\"ngForOf\", pages_r23);\n} }\nfunction NgbPagination_li_15_ng_template_2_Template(rf, ctx) { }\nconst _c46 = function (a0, a1) { return { disabled: a0, currentPage: a1 }; };\nfunction NgbPagination_li_15_Template(rf, ctx) { if (rf & 1) {\n const _r40 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"li\", 17);\n ɵngcc0.ɵɵelementStart(1, \"a\", 22);\n ɵngcc0.ɵɵlistener(\"click\", function NgbPagination_li_15_Template_a_click_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r40); const ctx_r39 = ɵngcc0.ɵɵnextContext(); ctx_r39.selectPage(1); return $event.preventDefault(); });\n ɵngcc0.ɵɵtemplate(2, NgbPagination_li_15_ng_template_2_Template, 0, 0, \"ng-template\", 8);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r14 = ɵngcc0.ɵɵnextContext();\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵclassProp(\"disabled\", ctx_r14.previousDisabled());\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"tabindex\", ctx_r14.previousDisabled() ? \"-1\" : null)(\"aria-disabled\", ctx_r14.previousDisabled() ? \"true\" : null);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (ctx_r14.tplFirst == null ? null : ctx_r14.tplFirst.templateRef) || _r0)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction2(6, _c46, ctx_r14.previousDisabled(), ctx_r14.page));\n} }\nfunction NgbPagination_li_16_ng_template_2_Template(rf, ctx) { }\nconst _c49 = function (a0) { return { disabled: a0 }; };\nfunction NgbPagination_li_16_Template(rf, ctx) { if (rf & 1) {\n const _r43 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"li\", 17);\n ɵngcc0.ɵɵelementStart(1, \"a\", 23);\n ɵngcc0.ɵɵlistener(\"click\", function NgbPagination_li_16_Template_a_click_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r43); const ctx_r42 = ɵngcc0.ɵɵnextContext(); ctx_r42.selectPage(ctx_r42.page - 1); return $event.preventDefault(); });\n ɵngcc0.ɵɵtemplate(2, NgbPagination_li_16_ng_template_2_Template, 0, 0, \"ng-template\", 8);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r15 = ɵngcc0.ɵɵnextContext();\n const _r2 = ɵngcc0.ɵɵreference(3);\n ɵngcc0.ɵɵclassProp(\"disabled\", ctx_r15.previousDisabled());\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"tabindex\", ctx_r15.previousDisabled() ? \"-1\" : null)(\"aria-disabled\", ctx_r15.previousDisabled() ? \"true\" : null);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (ctx_r15.tplPrevious == null ? null : ctx_r15.tplPrevious.templateRef) || _r2)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction1(6, _c49, ctx_r15.previousDisabled()));\n} }\nfunction NgbPagination_ng_template_17_Template(rf, ctx) { }\nfunction NgbPagination_li_18_ng_template_2_Template(rf, ctx) { }\nfunction NgbPagination_li_18_Template(rf, ctx) { if (rf & 1) {\n const _r46 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"li\", 17);\n ɵngcc0.ɵɵelementStart(1, \"a\", 24);\n ɵngcc0.ɵɵlistener(\"click\", function NgbPagination_li_18_Template_a_click_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r46); const ctx_r45 = ɵngcc0.ɵɵnextContext(); ctx_r45.selectPage(ctx_r45.page + 1); return $event.preventDefault(); });\n ɵngcc0.ɵɵtemplate(2, NgbPagination_li_18_ng_template_2_Template, 0, 0, \"ng-template\", 8);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r17 = ɵngcc0.ɵɵnextContext();\n const _r4 = ɵngcc0.ɵɵreference(5);\n ɵngcc0.ɵɵclassProp(\"disabled\", ctx_r17.nextDisabled());\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"tabindex\", ctx_r17.nextDisabled() ? \"-1\" : null)(\"aria-disabled\", ctx_r17.nextDisabled() ? \"true\" : null);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (ctx_r17.tplNext == null ? null : ctx_r17.tplNext.templateRef) || _r4)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction2(6, _c46, ctx_r17.nextDisabled(), ctx_r17.page));\n} }\nfunction NgbPagination_li_19_ng_template_2_Template(rf, ctx) { }\nfunction NgbPagination_li_19_Template(rf, ctx) { if (rf & 1) {\n const _r49 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"li\", 17);\n ɵngcc0.ɵɵelementStart(1, \"a\", 25);\n ɵngcc0.ɵɵlistener(\"click\", function NgbPagination_li_19_Template_a_click_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r49); const ctx_r48 = ɵngcc0.ɵɵnextContext(); ctx_r48.selectPage(ctx_r48.pageCount); return $event.preventDefault(); });\n ɵngcc0.ɵɵtemplate(2, NgbPagination_li_19_ng_template_2_Template, 0, 0, \"ng-template\", 8);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r18 = ɵngcc0.ɵɵnextContext();\n const _r6 = ɵngcc0.ɵɵreference(7);\n ɵngcc0.ɵɵclassProp(\"disabled\", ctx_r18.nextDisabled());\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"tabindex\", ctx_r18.nextDisabled() ? \"-1\" : null)(\"aria-disabled\", ctx_r18.nextDisabled() ? \"true\" : null);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (ctx_r18.tplLast == null ? null : ctx_r18.tplLast.templateRef) || _r6)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction2(6, _c46, ctx_r18.nextDisabled(), ctx_r18.page));\n} }\nconst _c54 = function (a0, a1, a2) { return { $implicit: a0, pages: a1, disabled: a2 }; };\nfunction NgbPopoverWindow_h3_1_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵtextInterpolate(ctx_r2.title);\n} }\nfunction NgbPopoverWindow_h3_1_ng_template_3_Template(rf, ctx) { }\nfunction NgbPopoverWindow_h3_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"h3\", 3);\n ɵngcc0.ɵɵtemplate(1, NgbPopoverWindow_h3_1_ng_template_1_Template, 1, 1, \"ng-template\", null, 4, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(3, NgbPopoverWindow_h3_1_ng_template_3_Template, 0, 0, \"ng-template\", 5);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const _r1 = ɵngcc0.ɵɵreference(2);\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.isTitleTemplate() ? ctx_r0.title : _r1)(\"ngTemplateOutletContext\", ctx_r0.context);\n} }\nfunction NgbProgressbar_span_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\");\n ɵngcc0.ɵɵi18n(1, 2);\n ɵngcc0.ɵɵpipe(2, \"percent\");\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵi18nExp(ɵngcc0.ɵɵpipeBind1(2, 1, ctx_r0.getValue() / ctx_r0.max));\n ɵngcc0.ɵɵi18nApply(1);\n} }\nfunction NgbRating_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n} if (rf & 2) {\n const fill_r3 = ctx.fill;\n ɵngcc0.ɵɵtextInterpolate(fill_r3 === 100 ? \"\\u2605\" : \"\\u2606\");\n} }\nfunction NgbRating_ng_template_2_ng_template_3_Template(rf, ctx) { }\nfunction NgbRating_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n const _r7 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"span\", 2);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(2, \"span\", 3);\n ɵngcc0.ɵɵlistener(\"mouseenter\", function NgbRating_ng_template_2_Template_span_mouseenter_2_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r7); const index_r4 = restoredCtx.index; const ctx_r6 = ɵngcc0.ɵɵnextContext(); return ctx_r6.enter(index_r4 + 1); })(\"click\", function NgbRating_ng_template_2_Template_span_click_2_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r7); const index_r4 = restoredCtx.index; const ctx_r8 = ɵngcc0.ɵɵnextContext(); return ctx_r8.handleClick(index_r4 + 1); });\n ɵngcc0.ɵɵtemplate(3, NgbRating_ng_template_2_ng_template_3_Template, 0, 0, \"ng-template\", 4);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const index_r4 = ctx.index;\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\"(\", index_r4 < ctx_r2.nextRate ? \"*\" : \" \", \")\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"cursor\", ctx_r2.isInteractive() ? \"pointer\" : \"default\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r2.starTemplate || ctx_r2.starTemplateFromContent || _r0)(\"ngTemplateOutletContext\", ctx_r2.contexts[index_r4]);\n} }\nfunction NgbTimepicker_button_3_Template(rf, ctx) { if (rf & 1) {\n const _r9 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 11);\n ɵngcc0.ɵɵlistener(\"click\", function NgbTimepicker_button_3_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r8 = ɵngcc0.ɵɵnextContext(); return ctx_r8.changeHour(ctx_r8.hourStep); });\n ɵngcc0.ɵɵelement(1, \"span\", 12);\n ɵngcc0.ɵɵelementStart(2, \"span\", 13);\n ɵngcc0.ɵɵi18n(3, 14);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"btn-sm\", ctx_r0.isSmallSize)(\"btn-lg\", ctx_r0.isLargeSize)(\"disabled\", ctx_r0.disabled);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r0.disabled);\n} }\nfunction NgbTimepicker_button_5_Template(rf, ctx) { if (rf & 1) {\n const _r11 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 11);\n ɵngcc0.ɵɵlistener(\"click\", function NgbTimepicker_button_5_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r11); const ctx_r10 = ɵngcc0.ɵɵnextContext(); return ctx_r10.changeHour(-ctx_r10.hourStep); });\n ɵngcc0.ɵɵelement(1, \"span\", 15);\n ɵngcc0.ɵɵelementStart(2, \"span\", 13);\n ɵngcc0.ɵɵi18n(3, 16);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"btn-sm\", ctx_r1.isSmallSize)(\"btn-lg\", ctx_r1.isLargeSize)(\"disabled\", ctx_r1.disabled);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r1.disabled);\n} }\nfunction NgbTimepicker_button_9_Template(rf, ctx) { if (rf & 1) {\n const _r13 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 11);\n ɵngcc0.ɵɵlistener(\"click\", function NgbTimepicker_button_9_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r12 = ɵngcc0.ɵɵnextContext(); return ctx_r12.changeMinute(ctx_r12.minuteStep); });\n ɵngcc0.ɵɵelement(1, \"span\", 12);\n ɵngcc0.ɵɵelementStart(2, \"span\", 13);\n ɵngcc0.ɵɵi18n(3, 17);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"btn-sm\", ctx_r2.isSmallSize)(\"btn-lg\", ctx_r2.isLargeSize)(\"disabled\", ctx_r2.disabled);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r2.disabled);\n} }\nfunction NgbTimepicker_button_11_Template(rf, ctx) { if (rf & 1) {\n const _r15 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 11);\n ɵngcc0.ɵɵlistener(\"click\", function NgbTimepicker_button_11_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r15); const ctx_r14 = ɵngcc0.ɵɵnextContext(); return ctx_r14.changeMinute(-ctx_r14.minuteStep); });\n ɵngcc0.ɵɵelement(1, \"span\", 15);\n ɵngcc0.ɵɵelementStart(2, \"span\", 13);\n ɵngcc0.ɵɵi18n(3, 18);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"btn-sm\", ctx_r3.isSmallSize)(\"btn-lg\", ctx_r3.isLargeSize)(\"disabled\", ctx_r3.disabled);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r3.disabled);\n} }\nfunction NgbTimepicker_div_12_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 5);\n ɵngcc0.ɵɵtext(1, \":\");\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction NgbTimepicker_div_13_button_1_Template(rf, ctx) { if (rf & 1) {\n const _r19 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 11);\n ɵngcc0.ɵɵlistener(\"click\", function NgbTimepicker_div_13_button_1_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r19); const ctx_r18 = ɵngcc0.ɵɵnextContext(2); return ctx_r18.changeSecond(ctx_r18.secondStep); });\n ɵngcc0.ɵɵelement(1, \"span\", 12);\n ɵngcc0.ɵɵelementStart(2, \"span\", 13);\n ɵngcc0.ɵɵi18n(3, 21);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r16 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵclassProp(\"btn-sm\", ctx_r16.isSmallSize)(\"btn-lg\", ctx_r16.isLargeSize)(\"disabled\", ctx_r16.disabled);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r16.disabled);\n} }\nfunction NgbTimepicker_div_13_button_3_Template(rf, ctx) { if (rf & 1) {\n const _r21 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 11);\n ɵngcc0.ɵɵlistener(\"click\", function NgbTimepicker_div_13_button_3_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r21); const ctx_r20 = ɵngcc0.ɵɵnextContext(2); return ctx_r20.changeSecond(-ctx_r20.secondStep); });\n ɵngcc0.ɵɵelement(1, \"span\", 15);\n ɵngcc0.ɵɵelementStart(2, \"span\", 13);\n ɵngcc0.ɵɵi18n(3, 22);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r17 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵclassProp(\"btn-sm\", ctx_r17.isSmallSize)(\"btn-lg\", ctx_r17.isLargeSize)(\"disabled\", ctx_r17.disabled);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r17.disabled);\n} }\nfunction NgbTimepicker_div_13_Template(rf, ctx) { if (rf & 1) {\n const _r23 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 19);\n ɵngcc0.ɵɵtemplate(1, NgbTimepicker_div_13_button_1_Template, 4, 7, \"button\", 3);\n ɵngcc0.ɵɵelementStart(2, \"input\", 20);\n ɵngcc0.ɵɵlistener(\"change\", function NgbTimepicker_div_13_Template_input_change_2_listener($event) { ɵngcc0.ɵɵrestoreView(_r23); const ctx_r22 = ɵngcc0.ɵɵnextContext(); return ctx_r22.updateSecond($event.target.value); })(\"blur\", function NgbTimepicker_div_13_Template_input_blur_2_listener() { ɵngcc0.ɵɵrestoreView(_r23); const ctx_r24 = ɵngcc0.ɵɵnextContext(); return ctx_r24.handleBlur(); })(\"input\", function NgbTimepicker_div_13_Template_input_input_2_listener($event) { ɵngcc0.ɵɵrestoreView(_r23); const ctx_r25 = ɵngcc0.ɵɵnextContext(); return ctx_r25.formatInput($event.target); })(\"keydown.ArrowUp\", function NgbTimepicker_div_13_Template_input_keydown_ArrowUp_2_listener($event) { ɵngcc0.ɵɵrestoreView(_r23); const ctx_r26 = ɵngcc0.ɵɵnextContext(); ctx_r26.changeSecond(ctx_r26.secondStep); return $event.preventDefault(); })(\"keydown.ArrowDown\", function NgbTimepicker_div_13_Template_input_keydown_ArrowDown_2_listener($event) { ɵngcc0.ɵɵrestoreView(_r23); const ctx_r27 = ɵngcc0.ɵɵnextContext(); ctx_r27.changeSecond(-ctx_r27.secondStep); return $event.preventDefault(); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(3, NgbTimepicker_div_13_button_3_Template, 4, 7, \"button\", 3);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r5 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.spinners);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"form-control-sm\", ctx_r5.isSmallSize)(\"form-control-lg\", ctx_r5.isLargeSize);\n ɵngcc0.ɵɵproperty(\"value\", ctx_r5.formatMinSec(ctx_r5.model == null ? null : ctx_r5.model.second))(\"readOnly\", ctx_r5.readonlyInputs)(\"disabled\", ctx_r5.disabled);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.spinners);\n} }\nfunction NgbTimepicker_div_14_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 5);\n} }\nfunction NgbTimepicker_div_15_ng_container_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵi18n(1, 27);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r28 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵi18nExp(ctx_r28.i18n.getAfternoonPeriod());\n ɵngcc0.ɵɵi18nApply(1);\n} }\nfunction NgbTimepicker_div_15_ng_template_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵi18n(0, 28);\n} if (rf & 2) {\n const ctx_r30 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵi18nExp(ctx_r30.i18n.getMorningPeriod());\n ɵngcc0.ɵɵi18nApply(0);\n} }\nfunction NgbTimepicker_div_15_Template(rf, ctx) { if (rf & 1) {\n const _r32 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 23);\n ɵngcc0.ɵɵelementStart(1, \"button\", 24);\n ɵngcc0.ɵɵlistener(\"click\", function NgbTimepicker_div_15_Template_button_click_1_listener() { ɵngcc0.ɵɵrestoreView(_r32); const ctx_r31 = ɵngcc0.ɵɵnextContext(); return ctx_r31.toggleMeridian(); });\n ɵngcc0.ɵɵtemplate(2, NgbTimepicker_div_15_ng_container_2_Template, 2, 1, \"ng-container\", 25);\n ɵngcc0.ɵɵtemplate(3, NgbTimepicker_div_15_ng_template_3_Template, 1, 1, \"ng-template\", null, 26, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const _r29 = ɵngcc0.ɵɵreference(4);\n const ctx_r7 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"btn-sm\", ctx_r7.isSmallSize)(\"btn-lg\", ctx_r7.isLargeSize)(\"disabled\", ctx_r7.disabled);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r7.disabled);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r7.model && ctx_r7.model.hour >= 12)(\"ngIfElse\", _r29);\n} }\nfunction NgbToast_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"strong\", 3);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r1.header);\n} }\nfunction NgbToast_ng_template_2_ng_template_1_Template(rf, ctx) { }\nfunction NgbToast_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n const _r5 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 4);\n ɵngcc0.ɵɵtemplate(1, NgbToast_ng_template_2_ng_template_1_Template, 0, 0, \"ng-template\", 5);\n ɵngcc0.ɵɵelementStart(2, \"button\", 6);\n ɵngcc0.ɵɵlistener(\"click\", function NgbToast_ng_template_2_Template_button_click_2_listener() { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r4 = ɵngcc0.ɵɵnextContext(); return ctx_r4.hide(); });\n ɵngcc0.ɵɵelementStart(3, \"span\", 7);\n ɵngcc0.ɵɵtext(4, \"\\u00D7\");\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r2.contentHeaderTpl || _r0);\n} }\nfunction NgbHighlight_ng_template_0_span_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\");\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const part_r1 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassMap(ctx_r3.highlightClass);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(part_r1);\n} }\nfunction NgbHighlight_ng_template_0_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n} if (rf & 2) {\n const part_r1 = ɵngcc0.ɵɵnextContext().$implicit;\n ɵngcc0.ɵɵtextInterpolate(part_r1);\n} }\nfunction NgbHighlight_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbHighlight_ng_template_0_span_0_Template, 2, 3, \"span\", 1);\n ɵngcc0.ɵɵtemplate(1, NgbHighlight_ng_template_0_ng_template_1_Template, 1, 1, \"ng-template\", null, 2, ɵngcc0.ɵɵtemplateRefExtractor);\n} if (rf & 2) {\n const isOdd_r2 = ctx.odd;\n const _r4 = ɵngcc0.ɵɵreference(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", isOdd_r2)(\"ngIfElse\", _r4);\n} }\nfunction NgbTypeaheadWindow_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"ngb-highlight\", 2);\n} if (rf & 2) {\n const result_r3 = ctx.result;\n const term_r4 = ctx.term;\n const formatter_r5 = ctx.formatter;\n ɵngcc0.ɵɵproperty(\"result\", formatter_r5(result_r3))(\"term\", term_r4);\n} }\nfunction NgbTypeaheadWindow_ng_template_2_ng_template_1_Template(rf, ctx) { }\nconst _c87 = function (a0, a1, a2) { return { result: a0, term: a1, formatter: a2 }; };\nfunction NgbTypeaheadWindow_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n const _r10 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 3);\n ɵngcc0.ɵɵlistener(\"mouseenter\", function NgbTypeaheadWindow_ng_template_2_Template_button_mouseenter_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r10); const idx_r7 = restoredCtx.index; const ctx_r9 = ɵngcc0.ɵɵnextContext(); return ctx_r9.markActive(idx_r7); })(\"click\", function NgbTypeaheadWindow_ng_template_2_Template_button_click_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r10); const result_r6 = restoredCtx.$implicit; const ctx_r11 = ɵngcc0.ɵɵnextContext(); return ctx_r11.select(result_r6); });\n ɵngcc0.ɵɵtemplate(1, NgbTypeaheadWindow_ng_template_2_ng_template_1_Template, 0, 0, \"ng-template\", 4);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const result_r6 = ctx.$implicit;\n const idx_r7 = ctx.index;\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵclassProp(\"active\", idx_r7 === ctx_r2.activeIdx);\n ɵngcc0.ɵɵproperty(\"id\", ctx_r2.id + \"-\" + idx_r7);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r2.resultTemplate || _r0)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction3(5, _c87, result_r6, ctx_r2.term, ctx_r2.formatter));\n} }\nfunction toInteger(value) {\r\n return parseInt(`${value}`, 10);\r\n}\r\nfunction toString(value) {\r\n return (value !== undefined && value !== null) ? `${value}` : '';\r\n}\r\nfunction getValueInRange(value, max, min = 0) {\r\n return Math.max(Math.min(value, max), min);\r\n}\r\nfunction isString(value) {\r\n return typeof value === 'string';\r\n}\r\nfunction isNumber(value) {\r\n return !isNaN(toInteger(value));\r\n}\r\nfunction isInteger(value) {\r\n return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\r\n}\r\nfunction isDefined(value) {\r\n return value !== undefined && value !== null;\r\n}\r\nfunction padNumber(value) {\r\n if (isNumber(value)) {\r\n return `0${value}`.slice(-2);\r\n }\r\n else {\r\n return '';\r\n }\r\n}\r\nfunction regExpEscape(text) {\r\n return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\r\n}\r\nfunction hasClassName(element, className) {\r\n return element && element.className && element.className.split &&\r\n element.className.split(/\\s+/).indexOf(className) >= 0;\r\n}\r\nif (typeof Element !== 'undefined' && !Element.prototype.closest) {\r\n // Polyfill for ie10+\r\n if (!Element.prototype.matches) {\r\n // IE uses the non-standard name: msMatchesSelector\r\n Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\r\n }\r\n Element.prototype.closest = function (s) {\r\n let el = this;\r\n if (!document.documentElement.contains(el)) {\r\n return null;\r\n }\r\n do {\r\n if (el.matches(s)) {\r\n return el;\r\n }\r\n el = el.parentElement || el.parentNode;\r\n } while (el !== null && el.nodeType === 1);\r\n return null;\r\n };\r\n}\r\nfunction closest(element, selector) {\r\n if (!selector) {\r\n return null;\r\n }\r\n /*\r\n * In certain browsers (e.g. Edge 44.18362.449.0) HTMLDocument does\r\n * not support `Element.prototype.closest`. To emulate the correct behaviour\r\n * we return null when the method is missing.\r\n *\r\n * Note that in evergreen browsers `closest(document.documentElement, 'html')`\r\n * will return the document element whilst in Edge null will be returned. This\r\n * compromise was deemed good enough.\r\n */\r\n if (typeof element.closest === 'undefined') {\r\n return null;\r\n }\r\n return element.closest(selector);\r\n}\r\n/**\r\n * Force a browser reflow\r\n * @param element element where to apply the reflow\r\n */\r\nfunction reflow(element) {\r\n return (element || document.body).getBoundingClientRect();\r\n}\r\n/**\r\n * Creates an observable where all callbacks are executed inside a given zone\r\n *\r\n * @param zone\r\n */\r\nfunction runInZone(zone) {\r\n return (source) => {\r\n return new Observable(observer => {\r\n const onNext = (value) => zone.run(() => observer.next(value));\r\n const onError = (e) => zone.run(() => observer.error(e));\r\n const onComplete = () => zone.run(() => observer.complete());\r\n return source.subscribe(onNext, onError, onComplete);\r\n });\r\n };\r\n}\r\nfunction removeAccents(str) {\r\n return str.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\r\n}\n\nconst environment = {\r\n animation: true,\r\n transitionTimerDelayMs: 5,\r\n};\n\n/**\r\n * Global ng-bootstrap config\r\n *\r\n * @since 8.0.0\r\n */\r\nclass NgbConfig {\r\n constructor() {\r\n this.animation = environment.animation;\r\n }\r\n}\nNgbConfig.ɵfac = function NgbConfig_Factory(t) { return new (t || NgbConfig)(); };\r\nNgbConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgbConfig_Factory() { return new NgbConfig(); }, token: NgbConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n\n/**\r\n * A configuration service for the [NgbAccordion](#/components/accordion/api#NgbAccordion) component.\r\n *\r\n * You can inject this service, typically in your root component, and customize its properties\r\n * to provide default values for all accordions used in the application.\r\n */\r\nclass NgbAccordionConfig {\r\n constructor(_ngbConfig) {\r\n this._ngbConfig = _ngbConfig;\r\n this.closeOthers = false;\r\n }\r\n get animation() { return (this._animation === undefined) ? this._ngbConfig.animation : this._animation; }\r\n set animation(animation) { this._animation = animation; }\r\n}\nNgbAccordionConfig.ɵfac = function NgbAccordionConfig_Factory(t) { return new (t || NgbAccordionConfig)(ɵngcc0.ɵɵinject(NgbConfig)); };\r\nNgbAccordionConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgbAccordionConfig_Factory() { return new NgbAccordionConfig(ɵɵinject(NgbConfig)); }, token: NgbAccordionConfig, providedIn: \"root\" });\r\nNgbAccordionConfig.ctorParameters = () => [\r\n { type: NgbConfig }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbAccordionConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: NgbConfig }]; }, null); })();\n\nfunction getTransitionDurationMs(element) {\r\n const { transitionDelay, transitionDuration } = window.getComputedStyle(element);\r\n const transitionDelaySec = parseFloat(transitionDelay);\r\n const transitionDurationSec = parseFloat(transitionDuration);\r\n return (transitionDelaySec + transitionDurationSec) * 1000;\r\n}\n\nconst noopFn = () => { };\r\nconst ɵ0 = noopFn;\r\nconst { transitionTimerDelayMs } = environment;\r\nconst runningTransitions = new Map();\r\nconst ngbRunTransition = (zone, element, startFn, options) => {\r\n // Getting initial context from options\r\n let context = options.context || {};\r\n // Checking if there are already running transitions on the given element.\r\n const running = runningTransitions.get(element);\r\n if (running) {\r\n switch (options.runningTransition) {\r\n // If there is one running and we want for it to 'continue' to run, we have to cancel the new one.\r\n // We're not emitting any values, but simply completing the observable (EMPTY).\r\n case 'continue':\r\n return EMPTY;\r\n // If there is one running and we want for it to 'stop', we have to complete the running one.\r\n // We're simply completing the running one and not emitting any values and merging newly provided context\r\n // with the one coming from currently running transition.\r\n case 'stop':\r\n zone.run(() => running.transition$.complete());\r\n context = Object.assign(running.context, context);\r\n runningTransitions.delete(element);\r\n }\r\n }\r\n // Running the start function\r\n const endFn = startFn(element, options.animation, context) || noopFn;\r\n // If 'prefer-reduced-motion' is enabled, the 'transition' will be set to 'none'.\r\n // If animations are disabled, we have to emit a value and complete the observable\r\n // In this case we have to call the end function, but can finish immediately by emitting a value,\r\n // completing the observable and executing end functions synchronously.\r\n if (!options.animation || window.getComputedStyle(element).transitionProperty === 'none') {\r\n zone.run(() => endFn());\r\n return of(undefined).pipe(runInZone(zone));\r\n }\r\n // Starting a new transition\r\n const transition$ = new Subject();\r\n const finishTransition$ = new Subject();\r\n const stop$ = transition$.pipe(endWith(true));\r\n runningTransitions.set(element, {\r\n transition$,\r\n complete: () => {\r\n finishTransition$.next();\r\n finishTransition$.complete();\r\n },\r\n context\r\n });\r\n const transitionDurationMs = getTransitionDurationMs(element);\r\n // 1. We have to both listen for the 'transitionend' event and have a 'just-in-case' timer,\r\n // because 'transitionend' event might not be fired in some browsers, if the transitioning\r\n // element becomes invisible (ex. when scrolling, making browser tab inactive, etc.). The timer\r\n // guarantees, that we'll release the DOM element and complete 'ngbRunTransition'.\r\n // 2. We need to filter transition end events, because they might bubble from shorter transitions\r\n // on inner DOM elements. We're only interested in the transition on the 'element' itself.\r\n zone.runOutsideAngular(() => {\r\n const transitionEnd$ = fromEvent(element, 'transitionend').pipe(takeUntil(stop$), filter(({ target }) => target === element));\r\n const timer$ = timer(transitionDurationMs + transitionTimerDelayMs).pipe(takeUntil(stop$));\r\n race(timer$, transitionEnd$, finishTransition$).pipe(takeUntil(stop$)).subscribe(() => {\r\n runningTransitions.delete(element);\r\n zone.run(() => {\r\n endFn();\r\n transition$.next();\r\n transition$.complete();\r\n });\r\n });\r\n });\r\n return transition$.asObservable();\r\n};\r\nconst ngbCompleteTransition = (element) => {\r\n var _a;\r\n (_a = runningTransitions.get(element)) === null || _a === void 0 ? void 0 : _a.complete();\r\n};\n\nfunction measureCollapsingElementHeightPx(element) {\r\n // SSR fix for without injecting the PlatformId\r\n if (typeof navigator === 'undefined') {\r\n return '0px';\r\n }\r\n const { classList } = element;\r\n const hasShownClass = classList.contains('show');\r\n if (!hasShownClass) {\r\n classList.add('show');\r\n }\r\n element.style.height = '';\r\n const height = element.getBoundingClientRect().height + 'px';\r\n if (!hasShownClass) {\r\n classList.remove('show');\r\n }\r\n return height;\r\n}\r\nconst ngbCollapsingTransition = (element, animation, context) => {\r\n let { direction, maxHeight } = context;\r\n const { classList } = element;\r\n function setInitialClasses() {\r\n classList.add('collapse');\r\n if (direction === 'show') {\r\n classList.add('show');\r\n }\r\n else {\r\n classList.remove('show');\r\n }\r\n }\r\n // without animations we just need to set initial classes\r\n if (!animation) {\r\n setInitialClasses();\r\n return;\r\n }\r\n // No maxHeight -> running the transition for the first time\r\n if (!maxHeight) {\r\n maxHeight = measureCollapsingElementHeightPx(element);\r\n context.maxHeight = maxHeight;\r\n // Fix the height before starting the animation\r\n element.style.height = direction !== 'show' ? maxHeight : '0px';\r\n classList.remove('collapse');\r\n classList.remove('collapsing');\r\n classList.remove('show');\r\n reflow(element);\r\n // Start the animation\r\n classList.add('collapsing');\r\n }\r\n // Start or revert the animation\r\n element.style.height = direction === 'show' ? maxHeight : '0px';\r\n return () => {\r\n setInitialClasses();\r\n classList.remove('collapsing');\r\n element.style.height = '';\r\n };\r\n};\n\nlet nextId = 0;\r\n/**\r\n * A directive that wraps an accordion panel header with any HTML markup and a toggling button\r\n * marked with [`NgbPanelToggle`](#/components/accordion/api#NgbPanelToggle).\r\n * See the [header customization demo](#/components/accordion/examples#header) for more details.\r\n *\r\n * You can also use [`NgbPanelTitle`](#/components/accordion/api#NgbPanelTitle) to customize only the panel title.\r\n *\r\n * @since 4.1.0\r\n */\r\nclass NgbPanelHeader {\r\n constructor(templateRef) {\r\n this.templateRef = templateRef;\r\n }\r\n}\nNgbPanelHeader.ɵfac = function NgbPanelHeader_Factory(t) { return new (t || NgbPanelHeader)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbPanelHeader.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbPanelHeader, selectors: [[\"ng-template\", \"ngbPanelHeader\", \"\"]] });\r\nNgbPanelHeader.ctorParameters = () => [\r\n { type: TemplateRef }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPanelHeader, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPanelHeader]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\r\n/**\r\n * A directive that wraps only the panel title with HTML markup inside.\r\n *\r\n * You can also use [`NgbPanelHeader`](#/components/accordion/api#NgbPanelHeader) to customize the full panel header.\r\n */\r\nclass NgbPanelTitle {\r\n constructor(templateRef) {\r\n this.templateRef = templateRef;\r\n }\r\n}\nNgbPanelTitle.ɵfac = function NgbPanelTitle_Factory(t) { return new (t || NgbPanelTitle)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbPanelTitle.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbPanelTitle, selectors: [[\"ng-template\", \"ngbPanelTitle\", \"\"]] });\r\nNgbPanelTitle.ctorParameters = () => [\r\n { type: TemplateRef }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPanelTitle, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPanelTitle]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\r\n/**\r\n * A directive that wraps the accordion panel content.\r\n */\r\nclass NgbPanelContent {\r\n constructor(templateRef) {\r\n this.templateRef = templateRef;\r\n }\r\n}\nNgbPanelContent.ɵfac = function NgbPanelContent_Factory(t) { return new (t || NgbPanelContent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbPanelContent.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbPanelContent, selectors: [[\"ng-template\", \"ngbPanelContent\", \"\"]] });\r\nNgbPanelContent.ctorParameters = () => [\r\n { type: TemplateRef }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPanelContent, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPanelContent]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\r\n/**\r\n * A directive that wraps an individual accordion panel with title and collapsible content.\r\n */\r\nclass NgbPanel {\r\n constructor() {\r\n /**\r\n * If `true`, the panel is disabled an can't be toggled.\r\n */\r\n this.disabled = false;\r\n /**\r\n * An optional id for the panel that must be unique on the page.\r\n *\r\n * If not provided, it will be auto-generated in the `ngb-panel-xxx` format.\r\n */\r\n this.id = `ngb-panel-${nextId++}`;\r\n this.isOpen = false;\r\n /* A flag to specified that the transition panel classes have been initialized */\r\n this.initClassDone = false;\r\n /* A flag to specified if the panel is currently being animated, to ensure its presence in the dom */\r\n this.transitionRunning = false;\r\n /**\r\n * An event emitted when the panel is shown, after the transition. It has no payload.\r\n *\r\n * @since 8.0.0\r\n */\r\n this.shown = new EventEmitter();\r\n /**\r\n * An event emitted when the panel is hidden, after the transition. It has no payload.\r\n *\r\n * @since 8.0.0\r\n */\r\n this.hidden = new EventEmitter();\r\n }\r\n ngAfterContentChecked() {\r\n // We are using @ContentChildren instead of @ContentChild as in the Angular version being used\r\n // only @ContentChildren allows us to specify the {descendants: false} option.\r\n // Without {descendants: false} we are hitting bugs described in:\r\n // https://github.com/ng-bootstrap/ng-bootstrap/issues/2240\r\n this.titleTpl = this.titleTpls.first;\r\n this.headerTpl = this.headerTpls.first;\r\n this.contentTpl = this.contentTpls.first;\r\n }\r\n}\nNgbPanel.ɵfac = function NgbPanel_Factory(t) { return new (t || NgbPanel)(); };\nNgbPanel.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbPanel, selectors: [[\"ngb-panel\"]], contentQueries: function NgbPanel_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPanelTitle, 4);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPanelHeader, 4);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPanelContent, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.titleTpls = _t);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.headerTpls = _t);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.contentTpls = _t);\n } }, inputs: { disabled: \"disabled\", id: \"id\", title: \"title\", type: \"type\", cardClass: \"cardClass\" }, outputs: { shown: \"shown\", hidden: \"hidden\" } });\r\nNgbPanel.propDecorators = {\r\n disabled: [{ type: Input }],\r\n id: [{ type: Input }],\r\n title: [{ type: Input }],\r\n type: [{ type: Input }],\r\n cardClass: [{ type: Input }],\r\n shown: [{ type: Output }],\r\n hidden: [{ type: Output }],\r\n titleTpls: [{ type: ContentChildren, args: [NgbPanelTitle, { descendants: false },] }],\r\n headerTpls: [{ type: ContentChildren, args: [NgbPanelHeader, { descendants: false },] }],\r\n contentTpls: [{ type: ContentChildren, args: [NgbPanelContent, { descendants: false },] }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPanel, [{\n type: Directive,\n args: [{ selector: 'ngb-panel' }]\n }], function () { return []; }, { disabled: [{\n type: Input\n }], id: [{\n type: Input\n }], shown: [{\n type: Output\n }], hidden: [{\n type: Output\n }], title: [{\n type: Input\n }], type: [{\n type: Input\n }], cardClass: [{\n type: Input\n }], titleTpls: [{\n type: ContentChildren,\n args: [NgbPanelTitle, { descendants: false }]\n }], headerTpls: [{\n type: ContentChildren,\n args: [NgbPanelHeader, { descendants: false }]\n }], contentTpls: [{\n type: ContentChildren,\n args: [NgbPanelContent, { descendants: false }]\n }] }); })();\r\n/**\r\n * Accordion is a collection of collapsible panels (bootstrap cards).\r\n *\r\n * It can ensure only one panel is opened at a time and allows to customize panel\r\n * headers.\r\n */\r\nclass NgbAccordion {\r\n constructor(config, _element, _ngZone, _changeDetector) {\r\n this._element = _element;\r\n this._ngZone = _ngZone;\r\n this._changeDetector = _changeDetector;\r\n /**\r\n * An array or comma separated strings of panel ids that should be opened **initially**.\r\n *\r\n * For subsequent changes use methods like `expand()`, `collapse()`, etc. and\r\n * the `(panelChange)` event.\r\n */\r\n this.activeIds = [];\r\n /**\r\n * If `true`, panel content will be detached from DOM and not simply hidden when the panel is collapsed.\r\n */\r\n this.destroyOnHide = true;\r\n /**\r\n * Event emitted right before the panel toggle happens.\r\n *\r\n * See [NgbPanelChangeEvent](#/components/accordion/api#NgbPanelChangeEvent) for payload details.\r\n */\r\n this.panelChange = new EventEmitter();\r\n /**\r\n * An event emitted when the expanding animation is finished on the panel. The payload is the panel id.\r\n *\r\n * @since 8.0.0\r\n */\r\n this.shown = new EventEmitter();\r\n /**\r\n * An event emitted when the collapsing animation is finished on the panel, and before the panel element is removed.\r\n * The payload is the panel id.\r\n *\r\n * @since 8.0.0\r\n */\r\n this.hidden = new EventEmitter();\r\n this.animation = config.animation;\r\n this.type = config.type;\r\n this.closeOtherPanels = config.closeOthers;\r\n }\r\n /**\r\n * Checks if a panel with a given id is expanded.\r\n */\r\n isExpanded(panelId) { return this.activeIds.indexOf(panelId) > -1; }\r\n /**\r\n * Expands a panel with a given id.\r\n *\r\n * Has no effect if the panel is already expanded or disabled.\r\n */\r\n expand(panelId) { this._changeOpenState(this._findPanelById(panelId), true); }\r\n /**\r\n * Expands all panels, if `[closeOthers]` is `false`.\r\n *\r\n * If `[closeOthers]` is `true`, it will expand the first panel, unless there is already a panel opened.\r\n */\r\n expandAll() {\r\n if (this.closeOtherPanels) {\r\n if (this.activeIds.length === 0 && this.panels.length) {\r\n this._changeOpenState(this.panels.first, true);\r\n }\r\n }\r\n else {\r\n this.panels.forEach(panel => this._changeOpenState(panel, true));\r\n }\r\n }\r\n /**\r\n * Collapses a panel with the given id.\r\n *\r\n * Has no effect if the panel is already collapsed or disabled.\r\n */\r\n collapse(panelId) { this._changeOpenState(this._findPanelById(panelId), false); }\r\n /**\r\n * Collapses all opened panels.\r\n */\r\n collapseAll() {\r\n this.panels.forEach((panel) => { this._changeOpenState(panel, false); });\r\n }\r\n /**\r\n * Toggles a panel with the given id.\r\n *\r\n * Has no effect if the panel is disabled.\r\n */\r\n toggle(panelId) {\r\n const panel = this._findPanelById(panelId);\r\n if (panel) {\r\n this._changeOpenState(panel, !panel.isOpen);\r\n }\r\n }\r\n ngAfterContentChecked() {\r\n // active id updates\r\n if (isString(this.activeIds)) {\r\n this.activeIds = this.activeIds.split(/\\s*,\\s*/);\r\n }\r\n // update panels open states\r\n this.panels.forEach(panel => { panel.isOpen = !panel.disabled && this.activeIds.indexOf(panel.id) > -1; });\r\n // closeOthers updates\r\n if (this.activeIds.length > 1 && this.closeOtherPanels) {\r\n this._closeOthers(this.activeIds[0], false);\r\n this._updateActiveIds();\r\n }\r\n // Setup the initial classes here\r\n this._ngZone.onStable.pipe(take(1)).subscribe(() => {\r\n this.panels.forEach(panel => {\r\n const panelElement = this._getPanelElement(panel.id);\r\n if (panelElement) {\r\n if (!panel.initClassDone) {\r\n panel.initClassDone = true;\r\n ngbRunTransition(this._ngZone, panelElement, ngbCollapsingTransition, {\r\n animation: false,\r\n runningTransition: 'continue',\r\n context: { direction: panel.isOpen ? 'show' : 'hide' }\r\n });\r\n }\r\n }\r\n else {\r\n // Classes must be initialized next time it will be in the dom\r\n panel.initClassDone = false;\r\n }\r\n });\r\n });\r\n }\r\n _changeOpenState(panel, nextState) {\r\n if (panel != null && !panel.disabled && panel.isOpen !== nextState) {\r\n let defaultPrevented = false;\r\n this.panelChange.emit({ panelId: panel.id, nextState: nextState, preventDefault: () => { defaultPrevented = true; } });\r\n if (!defaultPrevented) {\r\n panel.isOpen = nextState;\r\n panel.transitionRunning = true;\r\n if (nextState && this.closeOtherPanels) {\r\n this._closeOthers(panel.id);\r\n }\r\n this._updateActiveIds();\r\n this._runTransitions(this.animation);\r\n }\r\n }\r\n }\r\n _closeOthers(panelId, enableTransition = true) {\r\n this.panels.forEach(panel => {\r\n if (panel.id !== panelId && panel.isOpen) {\r\n panel.isOpen = false;\r\n panel.transitionRunning = enableTransition;\r\n }\r\n });\r\n }\r\n _findPanelById(panelId) { return this.panels.find(p => p.id === panelId) || null; }\r\n _updateActiveIds() {\r\n this.activeIds = this.panels.filter(panel => panel.isOpen && !panel.disabled).map(panel => panel.id);\r\n }\r\n _runTransitions(animation) {\r\n // detectChanges is performed to ensure that all panels are in the dom (via transitionRunning = true)\r\n // before starting the animation\r\n this._changeDetector.detectChanges();\r\n this.panels.forEach(panel => {\r\n // When panel.transitionRunning is true, the transition needs to be started OR reversed,\r\n // The direction (show or hide) is choosen by each panel.isOpen state\r\n if (panel.transitionRunning) {\r\n const panelElement = this._getPanelElement(panel.id);\r\n ngbRunTransition(this._ngZone, panelElement, ngbCollapsingTransition, {\r\n animation,\r\n runningTransition: 'stop',\r\n context: { direction: panel.isOpen ? 'show' : 'hide' }\r\n }).subscribe(() => {\r\n panel.transitionRunning = false;\r\n const { id } = panel;\r\n if (panel.isOpen) {\r\n panel.shown.emit();\r\n this.shown.emit(id);\r\n }\r\n else {\r\n panel.hidden.emit();\r\n this.hidden.emit(id);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n _getPanelElement(panelId) {\r\n return this._element.nativeElement.querySelector('#' + panelId);\r\n }\r\n}\nNgbAccordion.ɵfac = function NgbAccordion_Factory(t) { return new (t || NgbAccordion)(ɵngcc0.ɵɵdirectiveInject(NgbAccordionConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nNgbAccordion.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbAccordion, selectors: [[\"ngb-accordion\"]], contentQueries: function NgbAccordion_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPanel, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.panels = _t);\n } }, hostAttrs: [\"role\", \"tablist\", 1, \"accordion\"], hostVars: 1, hostBindings: function NgbAccordion_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"aria-multiselectable\", !ctx.closeOtherPanels);\n } }, inputs: { activeIds: \"activeIds\", destroyOnHide: \"destroyOnHide\", animation: \"animation\", type: \"type\", closeOtherPanels: [\"closeOthers\", \"closeOtherPanels\"] }, outputs: { panelChange: \"panelChange\", shown: \"shown\", hidden: \"hidden\" }, exportAs: [\"ngbAccordion\"], decls: 3, vars: 1, consts: [[\"ngbPanelHeader\", \"\"], [\"t\", \"\"], [\"ngFor\", \"\", 3, \"ngForOf\"], [1, \"btn\", \"btn-link\", 3, \"ngbPanelToggle\"], [3, \"ngTemplateOutlet\"], [\"role\", \"tab\", 3, \"id\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [\"role\", \"tabpanel\", 3, \"id\", 4, \"ngIf\"], [\"role\", \"tabpanel\", 3, \"id\"], [1, \"card-body\"]], template: function NgbAccordion_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbAccordion_ng_template_0_Template, 3, 3, \"ng-template\", 0, 1, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, NgbAccordion_ng_template_2_Template, 4, 11, \"ng-template\", 2);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.panels);\n } }, directives: function () { return [NgbPanelHeader, ɵngcc1.NgForOf, NgbPanelToggle, ɵngcc1.NgTemplateOutlet, ɵngcc1.NgIf]; }, encapsulation: 2 });\r\nNgbAccordion.ctorParameters = () => [\r\n { type: NgbAccordionConfig },\r\n { type: ElementRef },\r\n { type: NgZone },\r\n { type: ChangeDetectorRef }\r\n];\r\nNgbAccordion.propDecorators = {\r\n panels: [{ type: ContentChildren, args: [NgbPanel,] }],\r\n animation: [{ type: Input }],\r\n activeIds: [{ type: Input }],\r\n closeOtherPanels: [{ type: Input, args: ['closeOthers',] }],\r\n destroyOnHide: [{ type: Input }],\r\n type: [{ type: Input }],\r\n panelChange: [{ type: Output }],\r\n shown: [{ type: Output }],\r\n hidden: [{ type: Output }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbAccordion, [{\n type: Component,\n args: [{\n selector: 'ngb-accordion',\n exportAs: 'ngbAccordion',\n encapsulation: ViewEncapsulation.None,\n host: { 'class': 'accordion', 'role': 'tablist', '[attr.aria-multiselectable]': '!closeOtherPanels' },\n template: `\r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n `\n }]\n }], function () { return [{ type: NgbAccordionConfig }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ChangeDetectorRef }]; }, { activeIds: [{\n type: Input\n }], destroyOnHide: [{\n type: Input\n }], panelChange: [{\n type: Output\n }], shown: [{\n type: Output\n }], hidden: [{\n type: Output\n }], animation: [{\n type: Input\n }], type: [{\n type: Input\n }], closeOtherPanels: [{\n type: Input,\n args: ['closeOthers']\n }], panels: [{\n type: ContentChildren,\n args: [NgbPanel]\n }] }); })();\r\n/**\r\n * A directive to put on a button that toggles panel opening and closing.\r\n *\r\n * To be used inside the [`NgbPanelHeader`](#/components/accordion/api#NgbPanelHeader)\r\n *\r\n * @since 4.1.0\r\n */\r\nclass NgbPanelToggle {\r\n constructor(accordion, panel) {\r\n this.accordion = accordion;\r\n this.panel = panel;\r\n }\r\n set ngbPanelToggle(panel) {\r\n if (panel) {\r\n this.panel = panel;\r\n }\r\n }\r\n}\nNgbPanelToggle.ɵfac = function NgbPanelToggle_Factory(t) { return new (t || NgbPanelToggle)(ɵngcc0.ɵɵdirectiveInject(NgbAccordion), ɵngcc0.ɵɵdirectiveInject(NgbPanel, 9)); };\nNgbPanelToggle.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbPanelToggle, selectors: [[\"button\", \"ngbPanelToggle\", \"\"]], hostAttrs: [\"type\", \"button\"], hostVars: 5, hostBindings: function NgbPanelToggle_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function NgbPanelToggle_click_HostBindingHandler() { return ctx.accordion.toggle(ctx.panel.id); });\n } if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"disabled\", ctx.panel.disabled);\n ɵngcc0.ɵɵattribute(\"aria-expanded\", ctx.panel.isOpen)(\"aria-controls\", ctx.panel.id);\n ɵngcc0.ɵɵclassProp(\"collapsed\", !ctx.panel.isOpen);\n } }, inputs: { ngbPanelToggle: \"ngbPanelToggle\" } });\r\nNgbPanelToggle.ctorParameters = () => [\r\n { type: NgbAccordion },\r\n { type: NgbPanel, decorators: [{ type: Optional }, { type: Host }] }\r\n];\r\nNgbPanelToggle.propDecorators = {\r\n ngbPanelToggle: [{ type: Input }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPanelToggle, [{\n type: Directive,\n args: [{\n selector: 'button[ngbPanelToggle]',\n host: {\n 'type': 'button',\n '[disabled]': 'panel.disabled',\n '[class.collapsed]': '!panel.isOpen',\n '[attr.aria-expanded]': 'panel.isOpen',\n '[attr.aria-controls]': 'panel.id',\n '(click)': 'accordion.toggle(panel.id)'\n }\n }]\n }], function () { return [{ type: NgbAccordion }, { type: NgbPanel, decorators: [{\n type: Optional\n }, {\n type: Host\n }] }]; }, { ngbPanelToggle: [{\n type: Input\n }] }); })();\n\nconst NGB_ACCORDION_DIRECTIVES = [NgbAccordion, NgbPanel, NgbPanelTitle, NgbPanelContent, NgbPanelHeader, NgbPanelToggle];\r\nclass NgbAccordionModule {\r\n}\nNgbAccordionModule.ɵfac = function NgbAccordionModule_Factory(t) { return new (t || NgbAccordionModule)(); };\nNgbAccordionModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbAccordionModule });\nNgbAccordionModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbAccordionModule, [{\n type: NgModule,\n args: [{ declarations: NGB_ACCORDION_DIRECTIVES, exports: NGB_ACCORDION_DIRECTIVES, imports: [CommonModule] }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbAccordionModule, { declarations: function () { return [NgbAccordion, NgbPanel, NgbPanelTitle, NgbPanelContent, NgbPanelHeader, NgbPanelToggle]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbAccordion, NgbPanel, NgbPanelTitle, NgbPanelContent, NgbPanelHeader, NgbPanelToggle]; } }); })();\n\n/**\r\n * A configuration service for the [NgbAlert](#/components/alert/api#NgbAlert) component.\r\n *\r\n * You can inject this service, typically in your root component, and customize its properties\r\n * to provide default values for all alerts used in the application.\r\n */\r\nclass NgbAlertConfig {\r\n constructor(_ngbConfig) {\r\n this._ngbConfig = _ngbConfig;\r\n this.dismissible = true;\r\n this.type = 'warning';\r\n }\r\n get animation() { return (this._animation === undefined) ? this._ngbConfig.animation : this._animation; }\r\n set animation(animation) { this._animation = animation; }\r\n}\nNgbAlertConfig.ɵfac = function NgbAlertConfig_Factory(t) { return new (t || NgbAlertConfig)(ɵngcc0.ɵɵinject(NgbConfig)); };\r\nNgbAlertConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgbAlertConfig_Factory() { return new NgbAlertConfig(ɵɵinject(NgbConfig)); }, token: NgbAlertConfig, providedIn: \"root\" });\r\nNgbAlertConfig.ctorParameters = () => [\r\n { type: NgbConfig }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbAlertConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: NgbConfig }]; }, null); })();\n\nconst ngbAlertFadingTransition = ({ classList }) => {\r\n classList.remove('show');\r\n};\n\n/**\r\n * Alert is a component to provide contextual feedback messages for user.\r\n *\r\n * It supports several alert types and can be dismissed.\r\n */\r\nclass NgbAlert {\r\n constructor(config, _renderer, _element, _zone) {\r\n this._renderer = _renderer;\r\n this._element = _element;\r\n this._zone = _zone;\r\n /**\r\n * An event emitted when the close button is clicked. It has no payload and only relevant for dismissible alerts.\r\n *\r\n * @since 8.0.0\r\n */\r\n this.closed = new EventEmitter();\r\n this.dismissible = config.dismissible;\r\n this.type = config.type;\r\n this.animation = config.animation;\r\n }\r\n /**\r\n * Triggers alert closing programmatically (same as clicking on the close button (×)).\r\n *\r\n * The returned observable will emit and be completed once the closing transition has finished.\r\n * If the animations are turned off this happens synchronously.\r\n *\r\n * Alternatively you could listen or subscribe to the `(closed)` output\r\n *\r\n * @since 8.0.0\r\n */\r\n close() {\r\n const transition = ngbRunTransition(this._zone, this._element.nativeElement, ngbAlertFadingTransition, { animation: this.animation, runningTransition: 'continue' });\r\n transition.subscribe(() => this.closed.emit());\r\n return transition;\r\n }\r\n ngOnChanges(changes) {\r\n const typeChange = changes['type'];\r\n if (typeChange && !typeChange.firstChange) {\r\n this._renderer.removeClass(this._element.nativeElement, `alert-${typeChange.previousValue}`);\r\n this._renderer.addClass(this._element.nativeElement, `alert-${typeChange.currentValue}`);\r\n }\r\n }\r\n ngOnInit() { this._renderer.addClass(this._element.nativeElement, `alert-${this.type}`); }\r\n}\nNgbAlert.ɵfac = function NgbAlert_Factory(t) { return new (t || NgbAlert)(ɵngcc0.ɵɵdirectiveInject(NgbAlertConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nNgbAlert.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbAlert, selectors: [[\"ngb-alert\"]], hostAttrs: [\"role\", \"alert\", 1, \"alert\", \"show\"], hostVars: 4, hostBindings: function NgbAlert_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"fade\", ctx.animation)(\"alert-dismissible\", ctx.dismissible);\n } }, inputs: { dismissible: \"dismissible\", type: \"type\", animation: \"animation\" }, outputs: { closed: \"closed\" }, exportAs: [\"ngbAlert\"], features: [ɵngcc0.ɵɵNgOnChangesFeature], ngContentSelectors: _c3, decls: 2, vars: 1, consts: function () { let i18n_1; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_alert_close$$FESM2015_NG_BOOTSTRAP_JS_2 = goog.getMsg(\"Close\");\n i18n_1 = MSG_EXTERNAL_ngb_alert_close$$FESM2015_NG_BOOTSTRAP_JS_2;\n }\n else {\n i18n_1 = $localize `:@@ngb.alert.close␟f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8␟7819314041543176992:Close`;\n } return [[\"type\", \"button\", \"class\", \"close\", \"aria-label\", i18n_1, 3, \"click\", 4, \"ngIf\"], [\"type\", \"button\", \"aria-label\", i18n_1, 1, \"close\", 3, \"click\"], [\"aria-hidden\", \"true\"]]; }, template: function NgbAlert_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵprojection(0);\n ɵngcc0.ɵɵtemplate(1, NgbAlert_button_1_Template, 3, 0, \"button\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.dismissible);\n } }, directives: [ɵngcc1.NgIf], styles: [\"ngb-alert{display:block}\"], encapsulation: 2, changeDetection: 0 });\r\nNgbAlert.ctorParameters = () => [\r\n { type: NgbAlertConfig },\r\n { type: Renderer2 },\r\n { type: ElementRef },\r\n { type: NgZone }\r\n];\r\nNgbAlert.propDecorators = {\r\n animation: [{ type: Input }],\r\n dismissible: [{ type: Input }],\r\n type: [{ type: Input }],\r\n closed: [{ type: Output }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbAlert, [{\n type: Component,\n args: [{\n selector: 'ngb-alert',\n exportAs: 'ngbAlert',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { 'role': 'alert', 'class': 'alert show', '[class.fade]': 'animation', '[class.alert-dismissible]': 'dismissible' },\n template: `\r\n \r\n \r\n `,\n styles: [\"ngb-alert{display:block}\"]\n }]\n }], function () { return [{ type: NgbAlertConfig }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }]; }, { closed: [{\n type: Output\n }], dismissible: [{\n type: Input\n }], type: [{\n type: Input\n }], animation: [{\n type: Input\n }] }); })();\n\nclass NgbAlertModule {\r\n}\nNgbAlertModule.ɵfac = function NgbAlertModule_Factory(t) { return new (t || NgbAlertModule)(); };\nNgbAlertModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbAlertModule });\nNgbAlertModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbAlertModule, [{\n type: NgModule,\n args: [{ declarations: [NgbAlert], exports: [NgbAlert], imports: [CommonModule], entryComponents: [NgbAlert] }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbAlertModule, { declarations: function () { return [NgbAlert]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbAlert]; } }); })();\n\nclass NgbButtonLabel {\r\n}\nNgbButtonLabel.ɵfac = function NgbButtonLabel_Factory(t) { return new (t || NgbButtonLabel)(); };\nNgbButtonLabel.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbButtonLabel, selectors: [[\"\", \"ngbButtonLabel\", \"\"]], hostVars: 8, hostBindings: function NgbButtonLabel_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"btn\", true)(\"active\", ctx.active)(\"disabled\", ctx.disabled)(\"focus\", ctx.focused);\n } } });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbButtonLabel, [{\n type: Directive,\n args: [{\n selector: '[ngbButtonLabel]',\n host: { '[class.btn]': 'true', '[class.active]': 'active', '[class.disabled]': 'disabled', '[class.focus]': 'focused' }\n }]\n }], null, null); })();\n\n/**\r\n * Allows to easily create Bootstrap-style checkbox buttons.\r\n *\r\n * Integrates with forms, so the value of a checked button is bound to the underlying form control\r\n * either in a reactive or template-driven way.\r\n */\r\nclass NgbCheckBox {\r\n constructor(_label, _cd) {\r\n this._label = _label;\r\n this._cd = _cd;\r\n /**\r\n * If `true`, the checkbox button will be disabled\r\n */\r\n this.disabled = false;\r\n /**\r\n * The form control value when the checkbox is checked.\r\n */\r\n this.valueChecked = true;\r\n /**\r\n * The form control value when the checkbox is unchecked.\r\n */\r\n this.valueUnChecked = false;\r\n this.onChange = (_) => { };\r\n this.onTouched = () => { };\r\n }\r\n set focused(isFocused) {\r\n this._label.focused = isFocused;\r\n if (!isFocused) {\r\n this.onTouched();\r\n }\r\n }\r\n onInputChange($event) {\r\n const modelToPropagate = $event.target.checked ? this.valueChecked : this.valueUnChecked;\r\n this.onChange(modelToPropagate);\r\n this.onTouched();\r\n this.writeValue(modelToPropagate);\r\n }\r\n registerOnChange(fn) { this.onChange = fn; }\r\n registerOnTouched(fn) { this.onTouched = fn; }\r\n setDisabledState(isDisabled) {\r\n this.disabled = isDisabled;\r\n this._label.disabled = isDisabled;\r\n }\r\n writeValue(value) {\r\n this.checked = value === this.valueChecked;\r\n this._label.active = this.checked;\r\n // label won't be updated, if it is inside the OnPush component when [ngModel] changes\r\n this._cd.markForCheck();\r\n }\r\n}\nNgbCheckBox.ɵfac = function NgbCheckBox_Factory(t) { return new (t || NgbCheckBox)(ɵngcc0.ɵɵdirectiveInject(NgbButtonLabel), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nNgbCheckBox.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbCheckBox, selectors: [[\"\", \"ngbButton\", \"\", \"type\", \"checkbox\"]], hostVars: 2, hostBindings: function NgbCheckBox_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"change\", function NgbCheckBox_change_HostBindingHandler($event) { return ctx.onInputChange($event); })(\"focus\", function NgbCheckBox_focus_HostBindingHandler() { return ctx.focused = true; })(\"blur\", function NgbCheckBox_blur_HostBindingHandler() { return ctx.focused = false; });\n } if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"checked\", ctx.checked)(\"disabled\", ctx.disabled);\n } }, inputs: { disabled: \"disabled\", valueChecked: \"valueChecked\", valueUnChecked: \"valueUnChecked\" }, features: [ɵngcc0.ɵɵProvidersFeature([{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbCheckBox), multi: true }])] });\r\nNgbCheckBox.ctorParameters = () => [\r\n { type: NgbButtonLabel },\r\n { type: ChangeDetectorRef }\r\n];\r\nNgbCheckBox.propDecorators = {\r\n disabled: [{ type: Input }],\r\n valueChecked: [{ type: Input }],\r\n valueUnChecked: [{ type: Input }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCheckBox, [{\n type: Directive,\n args: [{\n selector: '[ngbButton][type=checkbox]',\n host: {\n '[checked]': 'checked',\n '[disabled]': 'disabled',\n '(change)': 'onInputChange($event)',\n '(focus)': 'focused = true',\n '(blur)': 'focused = false'\n },\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbCheckBox), multi: true }]\n }]\n }], function () { return [{ type: NgbButtonLabel }, { type: ɵngcc0.ChangeDetectorRef }]; }, { disabled: [{\n type: Input\n }], valueChecked: [{\n type: Input\n }], valueUnChecked: [{\n type: Input\n }] }); })();\n\nlet nextId$1 = 0;\r\n/**\r\n * Allows to easily create Bootstrap-style radio buttons.\r\n *\r\n * Integrates with forms, so the value of a checked button is bound to the underlying form control\r\n * either in a reactive or template-driven way.\r\n */\r\nclass NgbRadioGroup {\r\n constructor() {\r\n this._radios = new Set();\r\n this._value = null;\r\n /**\r\n * Name of the radio group applied to radio input elements.\r\n *\r\n * Will be applied to all radio input elements inside the group,\r\n * unless [`NgbRadio`](#/components/buttons/api#NgbRadio)'s specify names themselves.\r\n *\r\n * If not provided, will be generated in the `ngb-radio-xx` format.\r\n */\r\n this.name = `ngb-radio-${nextId$1++}`;\r\n this.onChange = (_) => { };\r\n this.onTouched = () => { };\r\n }\r\n get disabled() { return this._disabled; }\r\n set disabled(isDisabled) { this.setDisabledState(isDisabled); }\r\n onRadioChange(radio) {\r\n this.writeValue(radio.value);\r\n this.onChange(radio.value);\r\n }\r\n onRadioValueUpdate() { this._updateRadiosValue(); }\r\n register(radio) { this._radios.add(radio); }\r\n registerOnChange(fn) { this.onChange = fn; }\r\n registerOnTouched(fn) { this.onTouched = fn; }\r\n setDisabledState(isDisabled) {\r\n this._disabled = isDisabled;\r\n this._updateRadiosDisabled();\r\n }\r\n unregister(radio) { this._radios.delete(radio); }\r\n writeValue(value) {\r\n this._value = value;\r\n this._updateRadiosValue();\r\n }\r\n _updateRadiosValue() { this._radios.forEach((radio) => radio.updateValue(this._value)); }\r\n _updateRadiosDisabled() { this._radios.forEach((radio) => radio.updateDisabled()); }\r\n}\nNgbRadioGroup.ɵfac = function NgbRadioGroup_Factory(t) { return new (t || NgbRadioGroup)(); };\nNgbRadioGroup.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbRadioGroup, selectors: [[\"\", \"ngbRadioGroup\", \"\"]], hostAttrs: [\"role\", \"radiogroup\"], inputs: { name: \"name\" }, features: [ɵngcc0.ɵɵProvidersFeature([{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbRadioGroup), multi: true }])] });\r\nNgbRadioGroup.propDecorators = {\r\n name: [{ type: Input }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbRadioGroup, [{\n type: Directive,\n args: [{\n selector: '[ngbRadioGroup]',\n host: { 'role': 'radiogroup' },\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbRadioGroup), multi: true }]\n }]\n }], function () { return []; }, { name: [{\n type: Input\n }] }); })();\r\n/**\r\n * A directive that marks an input of type \"radio\" as a part of the\r\n * [`NgbRadioGroup`](#/components/buttons/api#NgbRadioGroup).\r\n */\r\nclass NgbRadio {\r\n constructor(_group, _label, _renderer, _element, _cd) {\r\n this._group = _group;\r\n this._label = _label;\r\n this._renderer = _renderer;\r\n this._element = _element;\r\n this._cd = _cd;\r\n this._value = null;\r\n this._group.register(this);\r\n this.updateDisabled();\r\n }\r\n /**\r\n * The form control value when current radio button is checked.\r\n */\r\n set value(value) {\r\n this._value = value;\r\n const stringValue = value ? value.toString() : '';\r\n this._renderer.setProperty(this._element.nativeElement, 'value', stringValue);\r\n this._group.onRadioValueUpdate();\r\n }\r\n /**\r\n * If `true`, current radio button will be disabled.\r\n */\r\n set disabled(isDisabled) {\r\n this._disabled = isDisabled !== false;\r\n this.updateDisabled();\r\n }\r\n set focused(isFocused) {\r\n if (this._label) {\r\n this._label.focused = isFocused;\r\n }\r\n if (!isFocused) {\r\n this._group.onTouched();\r\n }\r\n }\r\n get checked() { return this._checked; }\r\n get disabled() { return this._group.disabled || this._disabled; }\r\n get value() { return this._value; }\r\n get nameAttr() { return this.name || this._group.name; }\r\n ngOnDestroy() { this._group.unregister(this); }\r\n onChange() { this._group.onRadioChange(this); }\r\n updateValue(value) {\r\n // label won't be updated, if it is inside the OnPush component when [ngModel] changes\r\n if (this.value !== value) {\r\n this._cd.markForCheck();\r\n }\r\n this._checked = this.value === value;\r\n this._label.active = this._checked;\r\n }\r\n updateDisabled() { this._label.disabled = this.disabled; }\r\n}\nNgbRadio.ɵfac = function NgbRadio_Factory(t) { return new (t || NgbRadio)(ɵngcc0.ɵɵdirectiveInject(NgbRadioGroup), ɵngcc0.ɵɵdirectiveInject(NgbButtonLabel), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nNgbRadio.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbRadio, selectors: [[\"\", \"ngbButton\", \"\", \"type\", \"radio\"]], hostVars: 3, hostBindings: function NgbRadio_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"change\", function NgbRadio_change_HostBindingHandler() { return ctx.onChange(); })(\"focus\", function NgbRadio_focus_HostBindingHandler() { return ctx.focused = true; })(\"blur\", function NgbRadio_blur_HostBindingHandler() { return ctx.focused = false; });\n } if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"checked\", ctx.checked)(\"disabled\", ctx.disabled)(\"name\", ctx.nameAttr);\n } }, inputs: { value: \"value\", disabled: \"disabled\", name: \"name\" } });\r\nNgbRadio.ctorParameters = () => [\r\n { type: NgbRadioGroup },\r\n { type: NgbButtonLabel },\r\n { type: Renderer2 },\r\n { type: ElementRef },\r\n { type: ChangeDetectorRef }\r\n];\r\nNgbRadio.propDecorators = {\r\n name: [{ type: Input }],\r\n value: [{ type: Input, args: ['value',] }],\r\n disabled: [{ type: Input, args: ['disabled',] }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbRadio, [{\n type: Directive,\n args: [{\n selector: '[ngbButton][type=radio]',\n host: {\n '[checked]': 'checked',\n '[disabled]': 'disabled',\n '[name]': 'nameAttr',\n '(change)': 'onChange()',\n '(focus)': 'focused = true',\n '(blur)': 'focused = false'\n }\n }]\n }], function () { return [{ type: NgbRadioGroup }, { type: NgbButtonLabel }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.ChangeDetectorRef }]; }, { value: [{\n type: Input,\n args: ['value']\n }], disabled: [{\n type: Input,\n args: ['disabled']\n }], name: [{\n type: Input\n }] }); })();\n\nconst NGB_BUTTON_DIRECTIVES = [NgbButtonLabel, NgbCheckBox, NgbRadioGroup, NgbRadio];\r\nclass NgbButtonsModule {\r\n}\nNgbButtonsModule.ɵfac = function NgbButtonsModule_Factory(t) { return new (t || NgbButtonsModule)(); };\nNgbButtonsModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbButtonsModule });\nNgbButtonsModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbButtonsModule, [{\n type: NgModule,\n args: [{ declarations: NGB_BUTTON_DIRECTIVES, exports: NGB_BUTTON_DIRECTIVES }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbButtonsModule, { declarations: [NgbButtonLabel, NgbCheckBox, NgbRadioGroup, NgbRadio], exports: [NgbButtonLabel, NgbCheckBox, NgbRadioGroup, NgbRadio] }); })();\n\n/**\r\n * A configuration service for the [NgbCarousel](#/components/carousel/api#NgbCarousel) component.\r\n *\r\n * You can inject this service, typically in your root component, and customize its properties\r\n * to provide default values for all carousels used in the application.\r\n */\r\nclass NgbCarouselConfig {\r\n constructor(_ngbConfig) {\r\n this._ngbConfig = _ngbConfig;\r\n this.interval = 5000;\r\n this.wrap = true;\r\n this.keyboard = true;\r\n this.pauseOnHover = true;\r\n this.pauseOnFocus = true;\r\n this.showNavigationArrows = true;\r\n this.showNavigationIndicators = true;\r\n }\r\n get animation() { return (this._animation === undefined) ? this._ngbConfig.animation : this._animation; }\r\n set animation(animation) { this._animation = animation; }\r\n}\nNgbCarouselConfig.ɵfac = function NgbCarouselConfig_Factory(t) { return new (t || NgbCarouselConfig)(ɵngcc0.ɵɵinject(NgbConfig)); };\r\nNgbCarouselConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgbCarouselConfig_Factory() { return new NgbCarouselConfig(ɵɵinject(NgbConfig)); }, token: NgbCarouselConfig, providedIn: \"root\" });\r\nNgbCarouselConfig.ctorParameters = () => [\r\n { type: NgbConfig }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCarouselConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: NgbConfig }]; }, null); })();\n\n/**\r\n * Defines the carousel slide transition direction.\r\n */\r\nvar NgbSlideEventDirection;\r\n(function (NgbSlideEventDirection) {\r\n NgbSlideEventDirection[\"LEFT\"] = \"left\";\r\n NgbSlideEventDirection[\"RIGHT\"] = \"right\";\r\n})(NgbSlideEventDirection || (NgbSlideEventDirection = {}));\r\nconst isBeingAnimated = ({ classList }) => {\r\n return classList.contains('carousel-item-left') || classList.contains('carousel-item-right');\r\n};\r\nconst ɵ0$1 = isBeingAnimated;\r\nconst removeDirectionClasses = (classList) => {\r\n classList.remove('carousel-item-left');\r\n classList.remove('carousel-item-right');\r\n};\r\nconst ɵ1 = removeDirectionClasses;\r\nconst removeClasses = (classList) => {\r\n removeDirectionClasses(classList);\r\n classList.remove('carousel-item-prev');\r\n classList.remove('carousel-item-next');\r\n};\r\nconst ɵ2 = removeClasses;\r\nconst ngbCarouselTransitionIn = (element, animation, { direction }) => {\r\n const { classList } = element;\r\n if (!animation) {\r\n removeDirectionClasses(classList);\r\n removeClasses(classList);\r\n classList.add('active');\r\n return;\r\n }\r\n if (isBeingAnimated(element)) {\r\n // Revert the transition\r\n removeDirectionClasses(classList);\r\n }\r\n else {\r\n // For the 'in' transition, a 'pre-class' is applied to the element to ensure its visibility\r\n classList.add('carousel-item-' + (direction === NgbSlideEventDirection.LEFT ? 'next' : 'prev'));\r\n reflow(element);\r\n classList.add('carousel-item-' + direction);\r\n }\r\n return () => {\r\n removeClasses(classList);\r\n classList.add('active');\r\n };\r\n};\r\nconst ngbCarouselTransitionOut = (element, animation, { direction }) => {\r\n const { classList } = element;\r\n if (!animation) {\r\n removeDirectionClasses(classList);\r\n removeClasses(classList);\r\n classList.remove('active');\r\n return;\r\n }\r\n // direction is left or right, depending on the way the slide goes out.\r\n if (isBeingAnimated(element)) {\r\n // Revert the transition\r\n removeDirectionClasses(classList);\r\n }\r\n else {\r\n classList.add('carousel-item-' + direction);\r\n }\r\n return () => {\r\n removeClasses(classList);\r\n classList.remove('active');\r\n };\r\n};\n\nlet nextId$2 = 0;\r\n/**\r\n * A directive that wraps the individual carousel slide.\r\n */\r\nclass NgbSlide {\r\n constructor(tplRef) {\r\n this.tplRef = tplRef;\r\n /**\r\n * Slide id that must be unique for the entire document.\r\n *\r\n * If not provided, will be generated in the `ngb-slide-xx` format.\r\n */\r\n this.id = `ngb-slide-${nextId$2++}`;\r\n /**\r\n * An event emitted when the slide transition is finished\r\n *\r\n * @since 8.0.0\r\n */\r\n this.slid = new EventEmitter();\r\n }\r\n}\nNgbSlide.ɵfac = function NgbSlide_Factory(t) { return new (t || NgbSlide)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbSlide.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbSlide, selectors: [[\"ng-template\", \"ngbSlide\", \"\"]], inputs: { id: \"id\" }, outputs: { slid: \"slid\" } });\r\nNgbSlide.ctorParameters = () => [\r\n { type: TemplateRef }\r\n];\r\nNgbSlide.propDecorators = {\r\n id: [{ type: Input }],\r\n slid: [{ type: Output }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbSlide, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbSlide]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, { id: [{\n type: Input\n }], slid: [{\n type: Output\n }] }); })();\r\n/**\r\n * Carousel is a component to easily create and control slideshows.\r\n *\r\n * Allows to set intervals, change the way user interacts with the slides and provides a programmatic API.\r\n */\r\nclass NgbCarousel {\r\n constructor(config, _platformId, _ngZone, _cd, _container) {\r\n this._platformId = _platformId;\r\n this._ngZone = _ngZone;\r\n this._cd = _cd;\r\n this._container = _container;\r\n this.NgbSlideEventSource = NgbSlideEventSource;\r\n this._destroy$ = new Subject();\r\n this._interval$ = new BehaviorSubject(0);\r\n this._mouseHover$ = new BehaviorSubject(false);\r\n this._focused$ = new BehaviorSubject(false);\r\n this._pauseOnHover$ = new BehaviorSubject(false);\r\n this._pauseOnFocus$ = new BehaviorSubject(false);\r\n this._pause$ = new BehaviorSubject(false);\r\n this._wrap$ = new BehaviorSubject(false);\r\n /**\r\n * An event emitted just before the slide transition starts.\r\n *\r\n * See [`NgbSlideEvent`](#/components/carousel/api#NgbSlideEvent) for payload details.\r\n */\r\n this.slide = new EventEmitter();\r\n /**\r\n * An event emitted right after the slide transition is completed.\r\n *\r\n * See [`NgbSlideEvent`](#/components/carousel/api#NgbSlideEvent) for payload details.\r\n *\r\n * @since 8.0.0\r\n */\r\n this.slid = new EventEmitter();\r\n /*\r\n * Keep the ids of the panels currently transitionning\r\n * in order to allow only the transition revertion\r\n */\r\n this._transitionIds = null;\r\n this.animation = config.animation;\r\n this.interval = config.interval;\r\n this.wrap = config.wrap;\r\n this.keyboard = config.keyboard;\r\n this.pauseOnHover = config.pauseOnHover;\r\n this.pauseOnFocus = config.pauseOnFocus;\r\n this.showNavigationArrows = config.showNavigationArrows;\r\n this.showNavigationIndicators = config.showNavigationIndicators;\r\n }\r\n /**\r\n * Time in milliseconds before the next slide is shown.\r\n */\r\n set interval(value) {\r\n this._interval$.next(value);\r\n }\r\n get interval() { return this._interval$.value; }\r\n /**\r\n * If `true`, will 'wrap' the carousel by switching from the last slide back to the first.\r\n */\r\n set wrap(value) {\r\n this._wrap$.next(value);\r\n }\r\n get wrap() { return this._wrap$.value; }\r\n /**\r\n * If `true`, will pause slide switching when mouse cursor hovers the slide.\r\n *\r\n * @since 2.2.0\r\n */\r\n set pauseOnHover(value) {\r\n this._pauseOnHover$.next(value);\r\n }\r\n get pauseOnHover() { return this._pauseOnHover$.value; }\r\n /**\r\n * If `true`, will pause slide switching when the focus is inside the carousel.\r\n */\r\n set pauseOnFocus(value) {\r\n this._pauseOnFocus$.next(value);\r\n }\r\n get pauseOnFocus() { return this._pauseOnFocus$.value; }\r\n set mouseHover(value) { this._mouseHover$.next(value); }\r\n get mouseHover() { return this._mouseHover$.value; }\r\n set focused(value) { this._focused$.next(value); }\r\n get focused() { return this._focused$.value; }\r\n arrowLeft() {\r\n this.focus();\r\n this.prev(NgbSlideEventSource.ARROW_LEFT);\r\n }\r\n arrowRight() {\r\n this.focus();\r\n this.next(NgbSlideEventSource.ARROW_RIGHT);\r\n }\r\n ngAfterContentInit() {\r\n // setInterval() doesn't play well with SSR and protractor,\r\n // so we should run it in the browser and outside Angular\r\n if (isPlatformBrowser(this._platformId)) {\r\n this._ngZone.runOutsideAngular(() => {\r\n const hasNextSlide$ = combineLatest([\r\n this.slide.pipe(map(slideEvent => slideEvent.current), startWith(this.activeId)),\r\n this._wrap$, this.slides.changes.pipe(startWith(null))\r\n ])\r\n .pipe(map(([currentSlideId, wrap]) => {\r\n const slideArr = this.slides.toArray();\r\n const currentSlideIdx = this._getSlideIdxById(currentSlideId);\r\n return wrap ? slideArr.length > 1 : currentSlideIdx < slideArr.length - 1;\r\n }), distinctUntilChanged());\r\n combineLatest([\r\n this._pause$, this._pauseOnHover$, this._mouseHover$, this._pauseOnFocus$, this._focused$, this._interval$,\r\n hasNextSlide$\r\n ])\r\n .pipe(map(([pause, pauseOnHover, mouseHover, pauseOnFocus, focused, interval, hasNextSlide]) => ((pause || (pauseOnHover && mouseHover) || (pauseOnFocus && focused) || !hasNextSlide) ?\r\n 0 :\r\n interval)), distinctUntilChanged(), switchMap(interval => interval > 0 ? timer(interval, interval) : NEVER), takeUntil(this._destroy$))\r\n .subscribe(() => this._ngZone.run(() => this.next(NgbSlideEventSource.TIMER)));\r\n });\r\n }\r\n this.slides.changes.pipe(takeUntil(this._destroy$)).subscribe(() => {\r\n var _a;\r\n (_a = this._transitionIds) === null || _a === void 0 ? void 0 : _a.forEach(id => ngbCompleteTransition(this._getSlideElement(id)));\r\n this._transitionIds = null;\r\n this._cd.markForCheck();\r\n // The following code need to be done asynchronously, after the dom becomes stable,\r\n // otherwise all changes will be undone.\r\n this._ngZone.onStable.pipe(take(1)).subscribe(() => {\r\n for (const { id } of this.slides) {\r\n const element = this._getSlideElement(id);\r\n if (id === this.activeId) {\r\n element.classList.add('active');\r\n }\r\n else {\r\n element.classList.remove('active');\r\n }\r\n }\r\n });\r\n });\r\n }\r\n ngAfterContentChecked() {\r\n let activeSlide = this._getSlideById(this.activeId);\r\n this.activeId = activeSlide ? activeSlide.id : (this.slides.length ? this.slides.first.id : '');\r\n }\r\n ngAfterViewInit() {\r\n // Initialize the 'active' class (not managed by the template)\r\n if (this.activeId) {\r\n const element = this._getSlideElement(this.activeId);\r\n if (element) {\r\n element.classList.add('active');\r\n }\r\n }\r\n }\r\n ngOnDestroy() { this._destroy$.next(); }\r\n /**\r\n * Navigates to a slide with the specified identifier.\r\n */\r\n select(slideId, source) {\r\n this._cycleToSelected(slideId, this._getSlideEventDirection(this.activeId, slideId), source);\r\n }\r\n /**\r\n * Navigates to the previous slide.\r\n */\r\n prev(source) {\r\n this._cycleToSelected(this._getPrevSlide(this.activeId), NgbSlideEventDirection.RIGHT, source);\r\n }\r\n /**\r\n * Navigates to the next slide.\r\n */\r\n next(source) {\r\n this._cycleToSelected(this._getNextSlide(this.activeId), NgbSlideEventDirection.LEFT, source);\r\n }\r\n /**\r\n * Pauses cycling through the slides.\r\n */\r\n pause() { this._pause$.next(true); }\r\n /**\r\n * Restarts cycling through the slides from left to right.\r\n */\r\n cycle() { this._pause$.next(false); }\r\n /**\r\n * Set the focus on the carousel.\r\n */\r\n focus() { this._container.nativeElement.focus(); }\r\n _cycleToSelected(slideIdx, direction, source) {\r\n const transitionIds = this._transitionIds;\r\n if (transitionIds && (transitionIds[0] !== slideIdx || transitionIds[1] !== this.activeId)) {\r\n // Revert prevented\r\n return;\r\n }\r\n let selectedSlide = this._getSlideById(slideIdx);\r\n if (selectedSlide && selectedSlide.id !== this.activeId) {\r\n this._transitionIds = [this.activeId, slideIdx];\r\n this.slide.emit({ prev: this.activeId, current: selectedSlide.id, direction: direction, paused: this._pause$.value, source });\r\n const options = {\r\n animation: this.animation,\r\n runningTransition: 'stop',\r\n context: { direction },\r\n };\r\n const transitions = [];\r\n const activeSlide = this._getSlideById(this.activeId);\r\n if (activeSlide) {\r\n const activeSlideTransition = ngbRunTransition(this._ngZone, this._getSlideElement(activeSlide.id), ngbCarouselTransitionOut, options);\r\n activeSlideTransition.subscribe(() => { activeSlide.slid.emit({ isShown: false, direction, source }); });\r\n transitions.push(activeSlideTransition);\r\n }\r\n const previousId = this.activeId;\r\n this.activeId = selectedSlide.id;\r\n const nextSlide = this._getSlideById(this.activeId);\r\n const transition = ngbRunTransition(this._ngZone, this._getSlideElement(selectedSlide.id), ngbCarouselTransitionIn, options);\r\n transition.subscribe(() => { nextSlide === null || nextSlide === void 0 ? void 0 : nextSlide.slid.emit({ isShown: true, direction, source }); });\r\n transitions.push(transition);\r\n zip(...transitions).pipe(take(1)).subscribe(() => {\r\n this._transitionIds = null;\r\n this.slid.emit({ prev: previousId, current: selectedSlide.id, direction: direction, paused: this._pause$.value, source });\r\n });\r\n }\r\n // we get here after the interval fires or any external API call like next(), prev() or select()\r\n this._cd.markForCheck();\r\n }\r\n _getSlideEventDirection(currentActiveSlideId, nextActiveSlideId) {\r\n const currentActiveSlideIdx = this._getSlideIdxById(currentActiveSlideId);\r\n const nextActiveSlideIdx = this._getSlideIdxById(nextActiveSlideId);\r\n return currentActiveSlideIdx > nextActiveSlideIdx ? NgbSlideEventDirection.RIGHT : NgbSlideEventDirection.LEFT;\r\n }\r\n _getSlideById(slideId) {\r\n return this.slides.find(slide => slide.id === slideId) || null;\r\n }\r\n _getSlideIdxById(slideId) {\r\n const slide = this._getSlideById(slideId);\r\n return slide != null ? this.slides.toArray().indexOf(slide) : -1;\r\n }\r\n _getNextSlide(currentSlideId) {\r\n const slideArr = this.slides.toArray();\r\n const currentSlideIdx = this._getSlideIdxById(currentSlideId);\r\n const isLastSlide = currentSlideIdx === slideArr.length - 1;\r\n return isLastSlide ? (this.wrap ? slideArr[0].id : slideArr[slideArr.length - 1].id) :\r\n slideArr[currentSlideIdx + 1].id;\r\n }\r\n _getPrevSlide(currentSlideId) {\r\n const slideArr = this.slides.toArray();\r\n const currentSlideIdx = this._getSlideIdxById(currentSlideId);\r\n const isFirstSlide = currentSlideIdx === 0;\r\n return isFirstSlide ? (this.wrap ? slideArr[slideArr.length - 1].id : slideArr[0].id) :\r\n slideArr[currentSlideIdx - 1].id;\r\n }\r\n _getSlideElement(slideId) {\r\n return this._container.nativeElement.querySelector(`#slide-${slideId}`);\r\n }\r\n}\nNgbCarousel.ɵfac = function NgbCarousel_Factory(t) { return new (t || NgbCarousel)(ɵngcc0.ɵɵdirectiveInject(NgbCarouselConfig), ɵngcc0.ɵɵdirectiveInject(PLATFORM_ID), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nNgbCarousel.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbCarousel, selectors: [[\"ngb-carousel\"]], contentQueries: function NgbCarousel_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbSlide, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.slides = _t);\n } }, hostAttrs: [\"tabIndex\", \"0\", 1, \"carousel\", \"slide\"], hostVars: 3, hostBindings: function NgbCarousel_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"keydown.arrowLeft\", function NgbCarousel_keydown_arrowLeft_HostBindingHandler() { return ctx.keyboard && ctx.arrowLeft(); })(\"keydown.arrowRight\", function NgbCarousel_keydown_arrowRight_HostBindingHandler() { return ctx.keyboard && ctx.arrowRight(); })(\"mouseenter\", function NgbCarousel_mouseenter_HostBindingHandler() { return ctx.mouseHover = true; })(\"mouseleave\", function NgbCarousel_mouseleave_HostBindingHandler() { return ctx.mouseHover = false; })(\"focusin\", function NgbCarousel_focusin_HostBindingHandler() { return ctx.focused = true; })(\"focusout\", function NgbCarousel_focusout_HostBindingHandler() { return ctx.focused = false; });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"aria-activedescendant\", \"slide-\" + ctx.activeId);\n ɵngcc0.ɵɵstyleProp(\"display\", \"block\");\n } }, inputs: { animation: \"animation\", interval: \"interval\", wrap: \"wrap\", keyboard: \"keyboard\", pauseOnHover: \"pauseOnHover\", pauseOnFocus: \"pauseOnFocus\", showNavigationArrows: \"showNavigationArrows\", showNavigationIndicators: \"showNavigationIndicators\", activeId: \"activeId\" }, outputs: { slide: \"slide\", slid: \"slid\" }, exportAs: [\"ngbCarousel\"], decls: 6, vars: 6, consts: function () { let i18n_4; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc Currently selected slide number read by screen reader\n */\n const MSG_EXTERNAL_ngb_carousel_slide_number$$FESM2015_NG_BOOTSTRAP_JS__5 = goog.getMsg(\" Slide {$interpolation} of {$interpolation_1} \", { \"interpolation\": \"\\uFFFD0\\uFFFD\", \"interpolation_1\": \"\\uFFFD1\\uFFFD\" });\n i18n_4 = MSG_EXTERNAL_ngb_carousel_slide_number$$FESM2015_NG_BOOTSTRAP_JS__5;\n }\n else {\n i18n_4 = $localize `:Currently selected slide number read by screen reader@@ngb.carousel.slide-number␟a65b1b49aa7dd8c4f3004da6a8c2241814dae621␟783273603869937627: Slide ${\"\\uFFFD0\\uFFFD\"}:INTERPOLATION: of ${\"\\uFFFD1\\uFFFD\"}:INTERPOLATION_1: `;\n } let i18n_6; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_carousel_previous$$FESM2015_NG_BOOTSTRAP_JS__7 = goog.getMsg(\"Previous\");\n i18n_6 = MSG_EXTERNAL_ngb_carousel_previous$$FESM2015_NG_BOOTSTRAP_JS__7;\n }\n else {\n i18n_6 = $localize `:@@ngb.carousel.previous␟680d5c75b7fd8d37961083608b9fcdc4167b4c43␟4452427314943113135:Previous`;\n } let i18n_8; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_carousel_next$$FESM2015_NG_BOOTSTRAP_JS__9 = goog.getMsg(\"Next\");\n i18n_8 = MSG_EXTERNAL_ngb_carousel_next$$FESM2015_NG_BOOTSTRAP_JS__9;\n }\n else {\n i18n_8 = $localize `:@@ngb.carousel.next␟f732c304c7433e5a83ffcd862c3dce709a0f4982␟3885497195825665706:Next`;\n } return [[\"role\", \"tablist\", 1, \"carousel-indicators\"], [\"role\", \"tab\", 3, \"active\", \"click\", 4, \"ngFor\", \"ngForOf\"], [1, \"carousel-inner\"], [\"class\", \"carousel-item\", \"role\", \"tabpanel\", 3, \"id\", 4, \"ngFor\", \"ngForOf\"], [\"class\", \"carousel-control-prev\", \"role\", \"button\", 3, \"click\", 4, \"ngIf\"], [\"class\", \"carousel-control-next\", \"role\", \"button\", 3, \"click\", 4, \"ngIf\"], [\"role\", \"tab\", 3, \"click\"], [\"role\", \"tabpanel\", 1, \"carousel-item\", 3, \"id\"], [1, \"sr-only\"], i18n_4, [3, \"ngTemplateOutlet\"], [\"role\", \"button\", 1, \"carousel-control-prev\", 3, \"click\"], [\"aria-hidden\", \"true\", 1, \"carousel-control-prev-icon\"], i18n_6, [\"role\", \"button\", 1, \"carousel-control-next\", 3, \"click\"], [\"aria-hidden\", \"true\", 1, \"carousel-control-next-icon\"], i18n_8]; }, template: function NgbCarousel_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ol\", 0);\n ɵngcc0.ɵɵtemplate(1, NgbCarousel_li_1_Template, 1, 5, \"li\", 1);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(2, \"div\", 2);\n ɵngcc0.ɵɵtemplate(3, NgbCarousel_div_3_Template, 4, 4, \"div\", 3);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(4, NgbCarousel_a_4_Template, 4, 0, \"a\", 4);\n ɵngcc0.ɵɵtemplate(5, NgbCarousel_a_5_Template, 4, 0, \"a\", 5);\n } if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"sr-only\", !ctx.showNavigationIndicators);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.slides);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.slides);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showNavigationArrows);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showNavigationArrows);\n } }, directives: [ɵngcc1.NgForOf, ɵngcc1.NgIf, ɵngcc1.NgTemplateOutlet], encapsulation: 2, changeDetection: 0 });\r\nNgbCarousel.ctorParameters = () => [\r\n { type: NgbCarouselConfig },\r\n { type: undefined, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] },\r\n { type: NgZone },\r\n { type: ChangeDetectorRef },\r\n { type: ElementRef }\r\n];\r\nNgbCarousel.propDecorators = {\r\n slides: [{ type: ContentChildren, args: [NgbSlide,] }],\r\n animation: [{ type: Input }],\r\n activeId: [{ type: Input }],\r\n interval: [{ type: Input }],\r\n wrap: [{ type: Input }],\r\n keyboard: [{ type: Input }],\r\n pauseOnHover: [{ type: Input }],\r\n pauseOnFocus: [{ type: Input }],\r\n showNavigationArrows: [{ type: Input }],\r\n showNavigationIndicators: [{ type: Input }],\r\n slide: [{ type: Output }],\r\n slid: [{ type: Output }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCarousel, [{\n type: Component,\n args: [{\n selector: 'ngb-carousel',\n exportAs: 'ngbCarousel',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'carousel slide',\n '[style.display]': '\"block\"',\n 'tabIndex': '0',\n '(keydown.arrowLeft)': 'keyboard && arrowLeft()',\n '(keydown.arrowRight)': 'keyboard && arrowRight()',\n '(mouseenter)': 'mouseHover = true',\n '(mouseleave)': 'mouseHover = false',\n '(focusin)': 'focused = true',\n '(focusout)': 'focused = false',\n '[attr.aria-activedescendant]': `'slide-' + activeId`\n },\n template: `\r\n
      \r\n
    1. \r\n
    \r\n
    \r\n
    \r\n \r\n Slide {{i + 1}} of {{c}}\r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n Previous\r\n \r\n \r\n \r\n Next\r\n \r\n `\n }]\n }], function () { return [{ type: NgbCarouselConfig }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.ElementRef }]; }, { slide: [{\n type: Output\n }], slid: [{\n type: Output\n }], animation: [{\n type: Input\n }], interval: [{\n type: Input\n }], wrap: [{\n type: Input\n }], keyboard: [{\n type: Input\n }], pauseOnHover: [{\n type: Input\n }], pauseOnFocus: [{\n type: Input\n }], showNavigationArrows: [{\n type: Input\n }], showNavigationIndicators: [{\n type: Input\n }], activeId: [{\n type: Input\n }], slides: [{\n type: ContentChildren,\n args: [NgbSlide]\n }] }); })();\r\nvar NgbSlideEventSource;\r\n(function (NgbSlideEventSource) {\r\n NgbSlideEventSource[\"TIMER\"] = \"timer\";\r\n NgbSlideEventSource[\"ARROW_LEFT\"] = \"arrowLeft\";\r\n NgbSlideEventSource[\"ARROW_RIGHT\"] = \"arrowRight\";\r\n NgbSlideEventSource[\"INDICATOR\"] = \"indicator\";\r\n})(NgbSlideEventSource || (NgbSlideEventSource = {}));\r\nconst NGB_CAROUSEL_DIRECTIVES = [NgbCarousel, NgbSlide];\n\nclass NgbCarouselModule {\r\n}\nNgbCarouselModule.ɵfac = function NgbCarouselModule_Factory(t) { return new (t || NgbCarouselModule)(); };\nNgbCarouselModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbCarouselModule });\nNgbCarouselModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCarouselModule, [{\n type: NgModule,\n args: [{ declarations: NGB_CAROUSEL_DIRECTIVES, exports: NGB_CAROUSEL_DIRECTIVES, imports: [CommonModule] }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbCarouselModule, { declarations: function () { return [NgbCarousel, NgbSlide]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbCarousel, NgbSlide]; } }); })();\n\n/**\r\n * A configuration service for the [NgbCollapse](#/components/collapse/api#NgbCollapse) component.\r\n *\r\n * You can inject this service, typically in your root component, and customize its properties\r\n * to provide default values for all collapses used in the application.\r\n */\r\nclass NgbCollapseConfig {\r\n constructor(_ngbConfig) {\r\n this._ngbConfig = _ngbConfig;\r\n }\r\n get animation() { return (this._animation === undefined) ? this._ngbConfig.animation : this._animation; }\r\n set animation(animation) { this._animation = animation; }\r\n}\nNgbCollapseConfig.ɵfac = function NgbCollapseConfig_Factory(t) { return new (t || NgbCollapseConfig)(ɵngcc0.ɵɵinject(NgbConfig)); };\r\nNgbCollapseConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgbCollapseConfig_Factory() { return new NgbCollapseConfig(ɵɵinject(NgbConfig)); }, token: NgbCollapseConfig, providedIn: \"root\" });\r\nNgbCollapseConfig.ctorParameters = () => [\r\n { type: NgbConfig }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCollapseConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: NgbConfig }]; }, null); })();\n\n/**\r\n * A directive to provide a simple way of hiding and showing elements on the page.\r\n */\r\nclass NgbCollapse {\r\n constructor(_element, config, _zone) {\r\n this._element = _element;\r\n this._zone = _zone;\r\n /**\r\n * If `true`, will collapse the element or show it otherwise.\r\n */\r\n this.collapsed = false;\r\n this.ngbCollapseChange = new EventEmitter();\r\n /**\r\n * An event emitted when the collapse element is shown, after the transition. It has no payload.\r\n *\r\n * @since 8.0.0\r\n */\r\n this.shown = new EventEmitter();\r\n /**\r\n * An event emitted when the collapse element is hidden, after the transition. It has no payload.\r\n *\r\n * @since 8.0.0\r\n */\r\n this.hidden = new EventEmitter();\r\n this.animation = config.animation;\r\n }\r\n ngOnInit() { this._runTransition(this.collapsed, false); }\r\n ngOnChanges({ collapsed }) {\r\n if (!collapsed.firstChange) {\r\n this._runTransitionWithEvents(this.collapsed, this.animation);\r\n }\r\n }\r\n /**\r\n * Triggers collapsing programmatically.\r\n *\r\n * If there is a collapsing transition running already, it will be reversed.\r\n * If the animations are turned off this happens synchronously.\r\n *\r\n * @since 8.0.0\r\n */\r\n toggle(open = this.collapsed) {\r\n this.collapsed = !open;\r\n this.ngbCollapseChange.next(this.collapsed);\r\n this._runTransitionWithEvents(this.collapsed, this.animation);\r\n }\r\n _runTransition(collapsed, animation) {\r\n return ngbRunTransition(this._zone, this._element.nativeElement, ngbCollapsingTransition, { animation, runningTransition: 'stop', context: { direction: collapsed ? 'hide' : 'show' } });\r\n }\r\n _runTransitionWithEvents(collapsed, animation) {\r\n this._runTransition(collapsed, animation).subscribe(() => {\r\n if (collapsed) {\r\n this.hidden.emit();\r\n }\r\n else {\r\n this.shown.emit();\r\n }\r\n });\r\n }\r\n}\nNgbCollapse.ɵfac = function NgbCollapse_Factory(t) { return new (t || NgbCollapse)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(NgbCollapseConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nNgbCollapse.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbCollapse, selectors: [[\"\", \"ngbCollapse\", \"\"]], inputs: { collapsed: [\"ngbCollapse\", \"collapsed\"], animation: \"animation\" }, outputs: { ngbCollapseChange: \"ngbCollapseChange\", shown: \"shown\", hidden: \"hidden\" }, exportAs: [\"ngbCollapse\"], features: [ɵngcc0.ɵɵNgOnChangesFeature] });\r\nNgbCollapse.ctorParameters = () => [\r\n { type: ElementRef },\r\n { type: NgbCollapseConfig },\r\n { type: NgZone }\r\n];\r\nNgbCollapse.propDecorators = {\r\n animation: [{ type: Input }],\r\n collapsed: [{ type: Input, args: ['ngbCollapse',] }],\r\n ngbCollapseChange: [{ type: Output }],\r\n shown: [{ type: Output }],\r\n hidden: [{ type: Output }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCollapse, [{\n type: Directive,\n args: [{ selector: '[ngbCollapse]', exportAs: 'ngbCollapse' }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: NgbCollapseConfig }, { type: ɵngcc0.NgZone }]; }, { collapsed: [{\n type: Input,\n args: ['ngbCollapse']\n }], ngbCollapseChange: [{\n type: Output\n }], shown: [{\n type: Output\n }], hidden: [{\n type: Output\n }], animation: [{\n type: Input\n }] }); })();\n\nclass NgbCollapseModule {\r\n}\nNgbCollapseModule.ɵfac = function NgbCollapseModule_Factory(t) { return new (t || NgbCollapseModule)(); };\nNgbCollapseModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbCollapseModule });\nNgbCollapseModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCollapseModule, [{\n type: NgModule,\n args: [{ declarations: [NgbCollapse], exports: [NgbCollapse] }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbCollapseModule, { declarations: [NgbCollapse], exports: [NgbCollapse] }); })();\n\n/**\r\n * A simple class that represents a date that datepicker also uses internally.\r\n *\r\n * It is the implementation of the `NgbDateStruct` interface that adds some convenience methods,\r\n * like `.equals()`, `.before()`, etc.\r\n *\r\n * All datepicker APIs consume `NgbDateStruct`, but return `NgbDate`.\r\n *\r\n * In many cases it is simpler to manipulate these objects together with\r\n * [`NgbCalendar`](#/components/datepicker/api#NgbCalendar) than native JS Dates.\r\n *\r\n * See the [date format overview](#/components/datepicker/overview#date-model) for more details.\r\n *\r\n * @since 3.0.0\r\n */\r\nclass NgbDate {\r\n constructor(year, month, day) {\r\n this.year = isInteger(year) ? year : null;\r\n this.month = isInteger(month) ? month : null;\r\n this.day = isInteger(day) ? day : null;\r\n }\r\n /**\r\n * A **static method** that creates a new date object from the `NgbDateStruct`,\r\n *\r\n * ex. `NgbDate.from({year: 2000, month: 5, day: 1})`.\r\n *\r\n * If the `date` is already of `NgbDate` type, the method will return the same object.\r\n */\r\n static from(date) {\r\n if (date instanceof NgbDate) {\r\n return date;\r\n }\r\n return date ? new NgbDate(date.year, date.month, date.day) : null;\r\n }\r\n /**\r\n * Checks if the current date is equal to another date.\r\n */\r\n equals(other) {\r\n return other != null && this.year === other.year && this.month === other.month && this.day === other.day;\r\n }\r\n /**\r\n * Checks if the current date is before another date.\r\n */\r\n before(other) {\r\n if (!other) {\r\n return false;\r\n }\r\n if (this.year === other.year) {\r\n if (this.month === other.month) {\r\n return this.day === other.day ? false : this.day < other.day;\r\n }\r\n else {\r\n return this.month < other.month;\r\n }\r\n }\r\n else {\r\n return this.year < other.year;\r\n }\r\n }\r\n /**\r\n * Checks if the current date is after another date.\r\n */\r\n after(other) {\r\n if (!other) {\r\n return false;\r\n }\r\n if (this.year === other.year) {\r\n if (this.month === other.month) {\r\n return this.day === other.day ? false : this.day > other.day;\r\n }\r\n else {\r\n return this.month > other.month;\r\n }\r\n }\r\n else {\r\n return this.year > other.year;\r\n }\r\n }\r\n}\n\nfunction fromJSDate(jsDate) {\r\n return new NgbDate(jsDate.getFullYear(), jsDate.getMonth() + 1, jsDate.getDate());\r\n}\r\nfunction toJSDate(date) {\r\n const jsDate = new Date(date.year, date.month - 1, date.day, 12);\r\n // this is done avoid 30 -> 1930 conversion\r\n if (!isNaN(jsDate.getTime())) {\r\n jsDate.setFullYear(date.year);\r\n }\r\n return jsDate;\r\n}\r\nfunction NGB_DATEPICKER_CALENDAR_FACTORY() {\r\n return new NgbCalendarGregorian();\r\n}\r\n/**\r\n * A service that represents the calendar used by the datepicker.\r\n *\r\n * The default implementation uses the Gregorian calendar. You can inject it in your own\r\n * implementations if necessary to simplify `NgbDate` calculations.\r\n */\r\nclass NgbCalendar {\r\n}\nNgbCalendar.ɵfac = function NgbCalendar_Factory(t) { return new (t || NgbCalendar)(); };\r\nNgbCalendar.ɵprov = ɵɵdefineInjectable({ factory: NGB_DATEPICKER_CALENDAR_FACTORY, token: NgbCalendar, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCalendar, [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: NGB_DATEPICKER_CALENDAR_FACTORY }]\n }], null, null); })();\r\nclass NgbCalendarGregorian extends NgbCalendar {\r\n getDaysPerWeek() { return 7; }\r\n getMonths() { return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]; }\r\n getWeeksPerMonth() { return 6; }\r\n getNext(date, period = 'd', number = 1) {\r\n let jsDate = toJSDate(date);\r\n let checkMonth = true;\r\n let expectedMonth = jsDate.getMonth();\r\n switch (period) {\r\n case 'y':\r\n jsDate.setFullYear(jsDate.getFullYear() + number);\r\n break;\r\n case 'm':\r\n expectedMonth += number;\r\n jsDate.setMonth(expectedMonth);\r\n expectedMonth = expectedMonth % 12;\r\n if (expectedMonth < 0) {\r\n expectedMonth = expectedMonth + 12;\r\n }\r\n break;\r\n case 'd':\r\n jsDate.setDate(jsDate.getDate() + number);\r\n checkMonth = false;\r\n break;\r\n default:\r\n return date;\r\n }\r\n if (checkMonth && jsDate.getMonth() !== expectedMonth) {\r\n // this means the destination month has less days than the initial month\r\n // let's go back to the end of the previous month:\r\n jsDate.setDate(0);\r\n }\r\n return fromJSDate(jsDate);\r\n }\r\n getPrev(date, period = 'd', number = 1) { return this.getNext(date, period, -number); }\r\n getWeekday(date) {\r\n let jsDate = toJSDate(date);\r\n let day = jsDate.getDay();\r\n // in JS Date Sun=0, in ISO 8601 Sun=7\r\n return day === 0 ? 7 : day;\r\n }\r\n getWeekNumber(week, firstDayOfWeek) {\r\n // in JS Date Sun=0, in ISO 8601 Sun=7\r\n if (firstDayOfWeek === 7) {\r\n firstDayOfWeek = 0;\r\n }\r\n const thursdayIndex = (4 + 7 - firstDayOfWeek) % 7;\r\n let date = week[thursdayIndex];\r\n const jsDate = toJSDate(date);\r\n jsDate.setDate(jsDate.getDate() + 4 - (jsDate.getDay() || 7)); // Thursday\r\n const time = jsDate.getTime();\r\n jsDate.setMonth(0); // Compare with Jan 1\r\n jsDate.setDate(1);\r\n return Math.floor(Math.round((time - jsDate.getTime()) / 86400000) / 7) + 1;\r\n }\r\n getToday() { return fromJSDate(new Date()); }\r\n isValid(date) {\r\n if (!date || !isInteger(date.year) || !isInteger(date.month) || !isInteger(date.day)) {\r\n return false;\r\n }\r\n // year 0 doesn't exist in Gregorian calendar\r\n if (date.year === 0) {\r\n return false;\r\n }\r\n const jsDate = toJSDate(date);\r\n return !isNaN(jsDate.getTime()) && jsDate.getFullYear() === date.year && jsDate.getMonth() + 1 === date.month &&\r\n jsDate.getDate() === date.day;\r\n }\r\n}\nNgbCalendarGregorian.ɵfac = /*@__PURE__*/ function () { let ɵNgbCalendarGregorian_BaseFactory; return function NgbCalendarGregorian_Factory(t) { return (ɵNgbCalendarGregorian_BaseFactory || (ɵNgbCalendarGregorian_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbCalendarGregorian)))(t || NgbCalendarGregorian); }; }();\nNgbCalendarGregorian.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbCalendarGregorian, factory: NgbCalendarGregorian.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCalendarGregorian, [{\n type: Injectable\n }], null, null); })();\n\nfunction isChangedDate(prev, next) {\r\n return !dateComparator(prev, next);\r\n}\r\nfunction isChangedMonth(prev, next) {\r\n return !prev && !next ? false : !prev || !next ? true : prev.year !== next.year || prev.month !== next.month;\r\n}\r\nfunction dateComparator(prev, next) {\r\n return (!prev && !next) || (!!prev && !!next && prev.equals(next));\r\n}\r\nfunction checkMinBeforeMax(minDate, maxDate) {\r\n if (maxDate && minDate && maxDate.before(minDate)) {\r\n throw new Error(`'maxDate' ${maxDate} should be greater than 'minDate' ${minDate}`);\r\n }\r\n}\r\nfunction checkDateInRange(date, minDate, maxDate) {\r\n if (date && minDate && date.before(minDate)) {\r\n return minDate;\r\n }\r\n if (date && maxDate && date.after(maxDate)) {\r\n return maxDate;\r\n }\r\n return date || null;\r\n}\r\nfunction isDateSelectable(date, state) {\r\n const { minDate, maxDate, disabled, markDisabled } = state;\r\n // clang-format off\r\n return !(date === null ||\r\n date === undefined ||\r\n disabled ||\r\n (markDisabled && markDisabled(date, { year: date.year, month: date.month })) ||\r\n (minDate && date.before(minDate)) ||\r\n (maxDate && date.after(maxDate)));\r\n // clang-format on\r\n}\r\nfunction generateSelectBoxMonths(calendar, date, minDate, maxDate) {\r\n if (!date) {\r\n return [];\r\n }\r\n let months = calendar.getMonths(date.year);\r\n if (minDate && date.year === minDate.year) {\r\n const index = months.findIndex(month => month === minDate.month);\r\n months = months.slice(index);\r\n }\r\n if (maxDate && date.year === maxDate.year) {\r\n const index = months.findIndex(month => month === maxDate.month);\r\n months = months.slice(0, index + 1);\r\n }\r\n return months;\r\n}\r\nfunction generateSelectBoxYears(date, minDate, maxDate) {\r\n if (!date) {\r\n return [];\r\n }\r\n const start = minDate ? Math.max(minDate.year, date.year - 500) : date.year - 10;\r\n const end = maxDate ? Math.min(maxDate.year, date.year + 500) : date.year + 10;\r\n const length = end - start + 1;\r\n const numbers = Array(length);\r\n for (let i = 0; i < length; i++) {\r\n numbers[i] = start + i;\r\n }\r\n return numbers;\r\n}\r\nfunction nextMonthDisabled(calendar, date, maxDate) {\r\n const nextDate = Object.assign(calendar.getNext(date, 'm'), { day: 1 });\r\n return maxDate != null && nextDate.after(maxDate);\r\n}\r\nfunction prevMonthDisabled(calendar, date, minDate) {\r\n const prevDate = Object.assign(calendar.getPrev(date, 'm'), { day: 1 });\r\n return minDate != null && (prevDate.year === minDate.year && prevDate.month < minDate.month ||\r\n prevDate.year < minDate.year && minDate.month === 1);\r\n}\r\nfunction buildMonths(calendar, date, state, i18n, force) {\r\n const { displayMonths, months } = state;\r\n // move old months to a temporary array\r\n const monthsToReuse = months.splice(0, months.length);\r\n // generate new first dates, nullify or reuse months\r\n const firstDates = Array.from({ length: displayMonths }, (_, i) => {\r\n const firstDate = Object.assign(calendar.getNext(date, 'm', i), { day: 1 });\r\n months[i] = null;\r\n if (!force) {\r\n const reusedIndex = monthsToReuse.findIndex(month => month.firstDate.equals(firstDate));\r\n // move reused month back to months\r\n if (reusedIndex !== -1) {\r\n months[i] = monthsToReuse.splice(reusedIndex, 1)[0];\r\n }\r\n }\r\n return firstDate;\r\n });\r\n // rebuild nullified months\r\n firstDates.forEach((firstDate, i) => {\r\n if (months[i] === null) {\r\n months[i] = buildMonth(calendar, firstDate, state, i18n, monthsToReuse.shift() || {});\r\n }\r\n });\r\n return months;\r\n}\r\nfunction buildMonth(calendar, date, state, i18n, month = {}) {\r\n const { dayTemplateData, minDate, maxDate, firstDayOfWeek, markDisabled, outsideDays, weekdayWidth, weekdaysVisible } = state;\r\n const calendarToday = calendar.getToday();\r\n month.firstDate = null;\r\n month.lastDate = null;\r\n month.number = date.month;\r\n month.year = date.year;\r\n month.weeks = month.weeks || [];\r\n month.weekdays = month.weekdays || [];\r\n date = getFirstViewDate(calendar, date, firstDayOfWeek);\r\n // clearing weekdays, if not visible\r\n if (!weekdaysVisible) {\r\n month.weekdays.length = 0;\r\n }\r\n // month has weeks\r\n for (let week = 0; week < calendar.getWeeksPerMonth(); week++) {\r\n let weekObject = month.weeks[week];\r\n if (!weekObject) {\r\n weekObject = month.weeks[week] = { number: 0, days: [], collapsed: true };\r\n }\r\n const days = weekObject.days;\r\n // week has days\r\n for (let day = 0; day < calendar.getDaysPerWeek(); day++) {\r\n if (week === 0 && weekdaysVisible) {\r\n month.weekdays[day] = i18n.getWeekdayLabel(calendar.getWeekday(date), weekdayWidth);\r\n }\r\n const newDate = new NgbDate(date.year, date.month, date.day);\r\n const nextDate = calendar.getNext(newDate);\r\n const ariaLabel = i18n.getDayAriaLabel(newDate);\r\n // marking date as disabled\r\n let disabled = !!((minDate && newDate.before(minDate)) || (maxDate && newDate.after(maxDate)));\r\n if (!disabled && markDisabled) {\r\n disabled = markDisabled(newDate, { month: month.number, year: month.year });\r\n }\r\n // today\r\n let today = newDate.equals(calendarToday);\r\n // adding user-provided data to the context\r\n let contextUserData = dayTemplateData ? dayTemplateData(newDate, { month: month.number, year: month.year }) : undefined;\r\n // saving first date of the month\r\n if (month.firstDate === null && newDate.month === month.number) {\r\n month.firstDate = newDate;\r\n }\r\n // saving last date of the month\r\n if (newDate.month === month.number && nextDate.month !== month.number) {\r\n month.lastDate = newDate;\r\n }\r\n let dayObject = days[day];\r\n if (!dayObject) {\r\n dayObject = days[day] = {};\r\n }\r\n dayObject.date = newDate;\r\n dayObject.context = Object.assign(dayObject.context || {}, {\r\n $implicit: newDate,\r\n date: newDate,\r\n data: contextUserData,\r\n currentMonth: month.number,\r\n currentYear: month.year, disabled,\r\n focused: false,\r\n selected: false, today\r\n });\r\n dayObject.tabindex = -1;\r\n dayObject.ariaLabel = ariaLabel;\r\n dayObject.hidden = false;\r\n date = nextDate;\r\n }\r\n weekObject.number = calendar.getWeekNumber(days.map(day => day.date), firstDayOfWeek);\r\n // marking week as collapsed\r\n weekObject.collapsed = outsideDays === 'collapsed' && days[0].date.month !== month.number &&\r\n days[days.length - 1].date.month !== month.number;\r\n }\r\n return month;\r\n}\r\nfunction getFirstViewDate(calendar, date, firstDayOfWeek) {\r\n const daysPerWeek = calendar.getDaysPerWeek();\r\n const firstMonthDate = new NgbDate(date.year, date.month, 1);\r\n const dayOfWeek = calendar.getWeekday(firstMonthDate) % daysPerWeek;\r\n return calendar.getPrev(firstMonthDate, 'd', (daysPerWeek + dayOfWeek - firstDayOfWeek) % daysPerWeek);\r\n}\n\nfunction NGB_DATEPICKER_18N_FACTORY(locale) {\r\n return new NgbDatepickerI18nDefault(locale);\r\n}\r\n/**\r\n * A service supplying i18n data to the datepicker component.\r\n *\r\n * The default implementation of this service uses the Angular locale and registered locale data for\r\n * weekdays and month names (as explained in the Angular i18n guide).\r\n *\r\n * It also provides a way to i18n data that depends on calendar calculations, like aria labels, day, week and year\r\n * numerals. For other static labels the datepicker uses the default Angular i18n.\r\n *\r\n * See the [i18n demo](#/components/datepicker/examples#i18n) and\r\n * [Hebrew calendar demo](#/components/datepicker/calendars#hebrew) on how to extend this class and define\r\n * a custom provider for i18n.\r\n */\r\nclass NgbDatepickerI18n {\r\n /**\r\n * Returns the weekday label using specified width\r\n *\r\n * @since 9.1.0\r\n */\r\n getWeekdayLabel(weekday, width) { return this.getWeekdayShortName(weekday); }\r\n /**\r\n * Returns the text label to display above the day view.\r\n *\r\n * @since 9.1.0\r\n */\r\n getMonthLabel(date) {\r\n return `${this.getMonthFullName(date.month, date.year)} ${this.getYearNumerals(date.year)}`;\r\n }\r\n /**\r\n * Returns the textual representation of a day that is rendered in a day cell.\r\n *\r\n * @since 3.0.0\r\n */\r\n getDayNumerals(date) { return `${date.day}`; }\r\n /**\r\n * Returns the textual representation of a week number rendered by datepicker.\r\n *\r\n * @since 3.0.0\r\n */\r\n getWeekNumerals(weekNumber) { return `${weekNumber}`; }\r\n /**\r\n * Returns the textual representation of a year that is rendered in the datepicker year select box.\r\n *\r\n * @since 3.0.0\r\n */\r\n getYearNumerals(year) { return `${year}`; }\r\n /**\r\n * Returns the week label to display in the heading of the month view.\r\n *\r\n * @since 9.1.0\r\n */\r\n getWeekLabel() { return ''; }\r\n}\nNgbDatepickerI18n.ɵfac = function NgbDatepickerI18n_Factory(t) { return new (t || NgbDatepickerI18n)(); };\r\nNgbDatepickerI18n.ɵprov = ɵɵdefineInjectable({ factory: function NgbDatepickerI18n_Factory() { return NGB_DATEPICKER_18N_FACTORY(ɵɵinject(LOCALE_ID)); }, token: NgbDatepickerI18n, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerI18n, [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: NGB_DATEPICKER_18N_FACTORY, deps: [LOCALE_ID] }]\n }], null, null); })();\r\n/**\r\n * A service providing default implementation for the datepicker i18n.\r\n * It can be used as a base implementation if necessary.\r\n *\r\n * @since 9.1.0\r\n */\r\nclass NgbDatepickerI18nDefault extends NgbDatepickerI18n {\r\n constructor(_locale) {\r\n super();\r\n this._locale = _locale;\r\n this._monthsShort = getLocaleMonthNames(_locale, FormStyle.Standalone, TranslationWidth.Abbreviated);\r\n this._monthsFull = getLocaleMonthNames(_locale, FormStyle.Standalone, TranslationWidth.Wide);\r\n }\r\n getWeekdayShortName(weekday) { return this.getWeekdayLabel(weekday, TranslationWidth.Short); }\r\n getWeekdayLabel(weekday, width) {\r\n const weekdaysStartingOnSunday = getLocaleDayNames(this._locale, FormStyle.Standalone, width === undefined ? TranslationWidth.Short : width);\r\n const weekdays = weekdaysStartingOnSunday.map((day, index) => weekdaysStartingOnSunday[(index + 1) % 7]);\r\n return weekdays[weekday - 1] || '';\r\n }\r\n getMonthShortName(month) { return this._monthsShort[month - 1] || ''; }\r\n getMonthFullName(month) { return this._monthsFull[month - 1] || ''; }\r\n getDayAriaLabel(date) {\r\n const jsDate = new Date(date.year, date.month - 1, date.day);\r\n return formatDate(jsDate, 'fullDate', this._locale);\r\n }\r\n}\nNgbDatepickerI18nDefault.ɵfac = function NgbDatepickerI18nDefault_Factory(t) { return new (t || NgbDatepickerI18nDefault)(ɵngcc0.ɵɵinject(LOCALE_ID)); };\nNgbDatepickerI18nDefault.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbDatepickerI18nDefault, factory: NgbDatepickerI18nDefault.ɵfac });\r\nNgbDatepickerI18nDefault.ctorParameters = () => [\r\n { type: String, decorators: [{ type: Inject, args: [LOCALE_ID,] }] }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerI18nDefault, [{\n type: Injectable\n }], function () { return [{ type: String, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; }, null); })();\n\nclass NgbDatepickerService {\r\n constructor(_calendar, _i18n) {\r\n this._calendar = _calendar;\r\n this._i18n = _i18n;\r\n this._VALIDATORS = {\r\n dayTemplateData: (dayTemplateData) => {\r\n if (this._state.dayTemplateData !== dayTemplateData) {\r\n return { dayTemplateData };\r\n }\r\n },\r\n displayMonths: (displayMonths) => {\r\n displayMonths = toInteger(displayMonths);\r\n if (isInteger(displayMonths) && displayMonths > 0 && this._state.displayMonths !== displayMonths) {\r\n return { displayMonths };\r\n }\r\n },\r\n disabled: (disabled) => {\r\n if (this._state.disabled !== disabled) {\r\n return { disabled };\r\n }\r\n },\r\n firstDayOfWeek: (firstDayOfWeek) => {\r\n firstDayOfWeek = toInteger(firstDayOfWeek);\r\n if (isInteger(firstDayOfWeek) && firstDayOfWeek >= 0 && this._state.firstDayOfWeek !== firstDayOfWeek) {\r\n return { firstDayOfWeek };\r\n }\r\n },\r\n focusVisible: (focusVisible) => {\r\n if (this._state.focusVisible !== focusVisible && !this._state.disabled) {\r\n return { focusVisible };\r\n }\r\n },\r\n markDisabled: (markDisabled) => {\r\n if (this._state.markDisabled !== markDisabled) {\r\n return { markDisabled };\r\n }\r\n },\r\n maxDate: (date) => {\r\n const maxDate = this.toValidDate(date, null);\r\n if (isChangedDate(this._state.maxDate, maxDate)) {\r\n return { maxDate };\r\n }\r\n },\r\n minDate: (date) => {\r\n const minDate = this.toValidDate(date, null);\r\n if (isChangedDate(this._state.minDate, minDate)) {\r\n return { minDate };\r\n }\r\n },\r\n navigation: (navigation) => {\r\n if (this._state.navigation !== navigation) {\r\n return { navigation };\r\n }\r\n },\r\n outsideDays: (outsideDays) => {\r\n if (this._state.outsideDays !== outsideDays) {\r\n return { outsideDays };\r\n }\r\n },\r\n weekdays: (weekdays) => {\r\n const weekdayWidth = weekdays === true || weekdays === false ? TranslationWidth.Short : weekdays;\r\n const weekdaysVisible = weekdays === true || weekdays === false ? weekdays : true;\r\n if (this._state.weekdayWidth !== weekdayWidth || this._state.weekdaysVisible !== weekdaysVisible) {\r\n return { weekdayWidth, weekdaysVisible };\r\n }\r\n }\r\n };\r\n this._model$ = new Subject();\r\n this._dateSelect$ = new Subject();\r\n this._state = {\r\n dayTemplateData: null,\r\n markDisabled: null,\r\n maxDate: null,\r\n minDate: null,\r\n disabled: false,\r\n displayMonths: 1,\r\n firstDate: null,\r\n firstDayOfWeek: 1,\r\n lastDate: null,\r\n focusDate: null,\r\n focusVisible: false,\r\n months: [],\r\n navigation: 'select',\r\n outsideDays: 'visible',\r\n prevDisabled: false,\r\n nextDisabled: false,\r\n selectedDate: null,\r\n selectBoxes: { years: [], months: [] },\r\n weekdayWidth: TranslationWidth.Short,\r\n weekdaysVisible: true\r\n };\r\n }\r\n get model$() { return this._model$.pipe(filter(model => model.months.length > 0)); }\r\n get dateSelect$() { return this._dateSelect$.pipe(filter(date => date !== null)); }\r\n set(options) {\r\n let patch = Object.keys(options)\r\n .map(key => this._VALIDATORS[key](options[key]))\r\n .reduce((obj, part) => (Object.assign(Object.assign({}, obj), part)), {});\r\n if (Object.keys(patch).length > 0) {\r\n this._nextState(patch);\r\n }\r\n }\r\n focus(date) {\r\n const focusedDate = this.toValidDate(date, null);\r\n if (focusedDate != null && !this._state.disabled && isChangedDate(this._state.focusDate, focusedDate)) {\r\n this._nextState({ focusDate: date });\r\n }\r\n }\r\n focusSelect() {\r\n if (isDateSelectable(this._state.focusDate, this._state)) {\r\n this.select(this._state.focusDate, { emitEvent: true });\r\n }\r\n }\r\n open(date) {\r\n const firstDate = this.toValidDate(date, this._calendar.getToday());\r\n if (firstDate != null && !this._state.disabled &&\r\n (!this._state.firstDate || isChangedMonth(this._state.firstDate, firstDate))) {\r\n this._nextState({ firstDate });\r\n }\r\n }\r\n select(date, options = {}) {\r\n const selectedDate = this.toValidDate(date, null);\r\n if (selectedDate != null && !this._state.disabled) {\r\n if (isChangedDate(this._state.selectedDate, selectedDate)) {\r\n this._nextState({ selectedDate });\r\n }\r\n if (options.emitEvent && isDateSelectable(selectedDate, this._state)) {\r\n this._dateSelect$.next(selectedDate);\r\n }\r\n }\r\n }\r\n toValidDate(date, defaultValue) {\r\n const ngbDate = NgbDate.from(date);\r\n if (defaultValue === undefined) {\r\n defaultValue = this._calendar.getToday();\r\n }\r\n return this._calendar.isValid(ngbDate) ? ngbDate : defaultValue;\r\n }\r\n getMonth(struct) {\r\n for (let month of this._state.months) {\r\n if (struct.month === month.number && struct.year === month.year) {\r\n return month;\r\n }\r\n }\r\n throw new Error(`month ${struct.month} of year ${struct.year} not found`);\r\n }\r\n _nextState(patch) {\r\n const newState = this._updateState(patch);\r\n this._patchContexts(newState);\r\n this._state = newState;\r\n this._model$.next(this._state);\r\n }\r\n _patchContexts(state) {\r\n const { months, displayMonths, selectedDate, focusDate, focusVisible, disabled, outsideDays } = state;\r\n state.months.forEach(month => {\r\n month.weeks.forEach(week => {\r\n week.days.forEach(day => {\r\n // patch focus flag\r\n if (focusDate) {\r\n day.context.focused = focusDate.equals(day.date) && focusVisible;\r\n }\r\n // calculating tabindex\r\n day.tabindex =\r\n !disabled && focusDate && day.date.equals(focusDate) && focusDate.month === month.number ? 0 : -1;\r\n // override context disabled\r\n if (disabled === true) {\r\n day.context.disabled = true;\r\n }\r\n // patch selection flag\r\n if (selectedDate !== undefined) {\r\n day.context.selected = selectedDate !== null && selectedDate.equals(day.date);\r\n }\r\n // visibility\r\n if (month.number !== day.date.month) {\r\n day.hidden = outsideDays === 'hidden' || outsideDays === 'collapsed' ||\r\n (displayMonths > 1 && day.date.after(months[0].firstDate) &&\r\n day.date.before(months[displayMonths - 1].lastDate));\r\n }\r\n });\r\n });\r\n });\r\n }\r\n _updateState(patch) {\r\n // patching fields\r\n const state = Object.assign({}, this._state, patch);\r\n let startDate = state.firstDate;\r\n // min/max dates changed\r\n if ('minDate' in patch || 'maxDate' in patch) {\r\n checkMinBeforeMax(state.minDate, state.maxDate);\r\n state.focusDate = checkDateInRange(state.focusDate, state.minDate, state.maxDate);\r\n state.firstDate = checkDateInRange(state.firstDate, state.minDate, state.maxDate);\r\n startDate = state.focusDate;\r\n }\r\n // disabled\r\n if ('disabled' in patch) {\r\n state.focusVisible = false;\r\n }\r\n // initial rebuild via 'select()'\r\n if ('selectedDate' in patch && this._state.months.length === 0) {\r\n startDate = state.selectedDate;\r\n }\r\n // terminate early if only focus visibility was changed\r\n if ('focusVisible' in patch) {\r\n return state;\r\n }\r\n // focus date changed\r\n if ('focusDate' in patch) {\r\n state.focusDate = checkDateInRange(state.focusDate, state.minDate, state.maxDate);\r\n startDate = state.focusDate;\r\n // nothing to rebuild if only focus changed and it is still visible\r\n if (state.months.length !== 0 && state.focusDate && !state.focusDate.before(state.firstDate) &&\r\n !state.focusDate.after(state.lastDate)) {\r\n return state;\r\n }\r\n }\r\n // first date changed\r\n if ('firstDate' in patch) {\r\n state.firstDate = checkDateInRange(state.firstDate, state.minDate, state.maxDate);\r\n startDate = state.firstDate;\r\n }\r\n // rebuilding months\r\n if (startDate) {\r\n const forceRebuild = 'dayTemplateData' in patch || 'firstDayOfWeek' in patch || 'markDisabled' in patch ||\r\n 'minDate' in patch || 'maxDate' in patch || 'disabled' in patch || 'outsideDays' in patch ||\r\n 'weekdaysVisible' in patch;\r\n const months = buildMonths(this._calendar, startDate, state, this._i18n, forceRebuild);\r\n // updating months and boundary dates\r\n state.months = months;\r\n state.firstDate = months[0].firstDate;\r\n state.lastDate = months[months.length - 1].lastDate;\r\n // reset selected date if 'markDisabled' returns true\r\n if ('selectedDate' in patch && !isDateSelectable(state.selectedDate, state)) {\r\n state.selectedDate = null;\r\n }\r\n // adjusting focus after months were built\r\n if ('firstDate' in patch) {\r\n if (!state.focusDate || state.focusDate.before(state.firstDate) || state.focusDate.after(state.lastDate)) {\r\n state.focusDate = startDate;\r\n }\r\n }\r\n // adjusting months/years for the select box navigation\r\n const yearChanged = !this._state.firstDate || this._state.firstDate.year !== state.firstDate.year;\r\n const monthChanged = !this._state.firstDate || this._state.firstDate.month !== state.firstDate.month;\r\n if (state.navigation === 'select') {\r\n // years -> boundaries (min/max were changed)\r\n if ('minDate' in patch || 'maxDate' in patch || state.selectBoxes.years.length === 0 || yearChanged) {\r\n state.selectBoxes.years = generateSelectBoxYears(state.firstDate, state.minDate, state.maxDate);\r\n }\r\n // months -> when current year or boundaries change\r\n if ('minDate' in patch || 'maxDate' in patch || state.selectBoxes.months.length === 0 || yearChanged) {\r\n state.selectBoxes.months =\r\n generateSelectBoxMonths(this._calendar, state.firstDate, state.minDate, state.maxDate);\r\n }\r\n }\r\n else {\r\n state.selectBoxes = { years: [], months: [] };\r\n }\r\n // updating navigation arrows -> boundaries change (min/max) or month/year changes\r\n if ((state.navigation === 'arrows' || state.navigation === 'select') &&\r\n (monthChanged || yearChanged || 'minDate' in patch || 'maxDate' in patch || 'disabled' in patch)) {\r\n state.prevDisabled = state.disabled || prevMonthDisabled(this._calendar, state.firstDate, state.minDate);\r\n state.nextDisabled = state.disabled || nextMonthDisabled(this._calendar, state.lastDate, state.maxDate);\r\n }\r\n }\r\n return state;\r\n }\r\n}\nNgbDatepickerService.ɵfac = function NgbDatepickerService_Factory(t) { return new (t || NgbDatepickerService)(ɵngcc0.ɵɵinject(NgbCalendar), ɵngcc0.ɵɵinject(NgbDatepickerI18n)); };\nNgbDatepickerService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbDatepickerService, factory: NgbDatepickerService.ɵfac });\r\nNgbDatepickerService.ctorParameters = () => [\r\n { type: NgbCalendar },\r\n { type: NgbDatepickerI18n }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerService, [{\n type: Injectable\n }], function () { return [{ type: NgbCalendar }, { type: NgbDatepickerI18n }]; }, null); })();\n\n// clang-format on\r\nvar NavigationEvent;\r\n(function (NavigationEvent) {\r\n NavigationEvent[NavigationEvent[\"PREV\"] = 0] = \"PREV\";\r\n NavigationEvent[NavigationEvent[\"NEXT\"] = 1] = \"NEXT\";\r\n})(NavigationEvent || (NavigationEvent = {}));\n\n/**\r\n * A configuration service for the [`NgbDatepicker`](#/components/datepicker/api#NgbDatepicker) component.\r\n *\r\n * You can inject this service, typically in your root component, and customize the values of its properties in\r\n * order to provide default values for all the datepickers used in the application.\r\n */\r\nclass NgbDatepickerConfig {\r\n constructor() {\r\n this.displayMonths = 1;\r\n this.firstDayOfWeek = 1;\r\n this.navigation = 'select';\r\n this.outsideDays = 'visible';\r\n this.showWeekdays = true;\r\n this.showWeekNumbers = false;\r\n this.weekdays = TranslationWidth.Short;\r\n }\r\n}\nNgbDatepickerConfig.ɵfac = function NgbDatepickerConfig_Factory(t) { return new (t || NgbDatepickerConfig)(); };\r\nNgbDatepickerConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgbDatepickerConfig_Factory() { return new NgbDatepickerConfig(); }, token: NgbDatepickerConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n\nfunction NGB_DATEPICKER_DATE_ADAPTER_FACTORY() {\r\n return new NgbDateStructAdapter();\r\n}\r\n/**\r\n * An abstract service that does the conversion between the internal datepicker `NgbDateStruct` model and\r\n * any provided user date model `D`, ex. a string, a native date, etc.\r\n *\r\n * The adapter is used **only** for conversion when binding datepicker to a form control,\r\n * ex. `[(ngModel)]=\"userDateModel\"`. Here `userDateModel` can be of any type.\r\n *\r\n * The default datepicker implementation assumes we use `NgbDateStruct` as a user model.\r\n *\r\n * See the [date format overview](#/components/datepicker/overview#date-model) for more details\r\n * and the [custom adapter demo](#/components/datepicker/examples#adapter) for an example.\r\n */\r\nclass NgbDateAdapter {\r\n}\nNgbDateAdapter.ɵfac = function NgbDateAdapter_Factory(t) { return new (t || NgbDateAdapter)(); };\r\nNgbDateAdapter.ɵprov = ɵɵdefineInjectable({ factory: NGB_DATEPICKER_DATE_ADAPTER_FACTORY, token: NgbDateAdapter, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDateAdapter, [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: NGB_DATEPICKER_DATE_ADAPTER_FACTORY }]\n }], null, null); })();\r\nclass NgbDateStructAdapter extends NgbDateAdapter {\r\n /**\r\n * Converts a NgbDateStruct value into NgbDateStruct value\r\n */\r\n fromModel(date) {\r\n return (date && isInteger(date.year) && isInteger(date.month) && isInteger(date.day)) ?\r\n { year: date.year, month: date.month, day: date.day } :\r\n null;\r\n }\r\n /**\r\n * Converts a NgbDateStruct value into NgbDateStruct value\r\n */\r\n toModel(date) {\r\n return (date && isInteger(date.year) && isInteger(date.month) && isInteger(date.day)) ?\r\n { year: date.year, month: date.month, day: date.day } :\r\n null;\r\n }\r\n}\nNgbDateStructAdapter.ɵfac = /*@__PURE__*/ function () { let ɵNgbDateStructAdapter_BaseFactory; return function NgbDateStructAdapter_Factory(t) { return (ɵNgbDateStructAdapter_BaseFactory || (ɵNgbDateStructAdapter_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbDateStructAdapter)))(t || NgbDateStructAdapter); }; }();\nNgbDateStructAdapter.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbDateStructAdapter, factory: NgbDateStructAdapter.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDateStructAdapter, [{\n type: Injectable\n }], null, null); })();\n\n/**\r\n * A directive that marks the content template that customizes the way datepicker months are displayed\r\n *\r\n * @since 5.3.0\r\n */\r\nclass NgbDatepickerContent {\r\n constructor(templateRef) {\r\n this.templateRef = templateRef;\r\n }\r\n}\nNgbDatepickerContent.ɵfac = function NgbDatepickerContent_Factory(t) { return new (t || NgbDatepickerContent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbDatepickerContent.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbDatepickerContent, selectors: [[\"ng-template\", \"ngbDatepickerContent\", \"\"]] });\r\nNgbDatepickerContent.ctorParameters = () => [\r\n { type: TemplateRef }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerContent, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbDatepickerContent]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\r\n/**\r\n * A highly configurable component that helps you with selecting calendar dates.\r\n *\r\n * `NgbDatepicker` is meant to be displayed inline on a page or put inside a popup.\r\n */\r\nclass NgbDatepicker {\r\n constructor(_service, _calendar, i18n, config, cd, _elementRef, _ngbDateAdapter, _ngZone) {\r\n this._service = _service;\r\n this._calendar = _calendar;\r\n this.i18n = i18n;\r\n this._elementRef = _elementRef;\r\n this._ngbDateAdapter = _ngbDateAdapter;\r\n this._ngZone = _ngZone;\r\n this._controlValue = null;\r\n this._destroyed$ = new Subject();\r\n this._publicState = {};\r\n /**\r\n * An event emitted right before the navigation happens and displayed month changes.\r\n *\r\n * See [`NgbDatepickerNavigateEvent`](#/components/datepicker/api#NgbDatepickerNavigateEvent) for the payload info.\r\n */\r\n this.navigate = new EventEmitter();\r\n /**\r\n * An event emitted when user selects a date using keyboard or mouse.\r\n *\r\n * The payload of the event is currently selected `NgbDate`.\r\n *\r\n * @since 5.2.0\r\n */\r\n this.dateSelect = new EventEmitter();\r\n this.onChange = (_) => { };\r\n this.onTouched = () => { };\r\n ['dayTemplate', 'dayTemplateData', 'displayMonths', 'firstDayOfWeek', 'footerTemplate', 'markDisabled', 'minDate',\r\n 'maxDate', 'navigation', 'outsideDays', 'showWeekdays', 'showWeekNumbers', 'startDate', 'weekdays']\r\n .forEach(input => this[input] = config[input]);\r\n _service.dateSelect$.pipe(takeUntil(this._destroyed$)).subscribe(date => { this.dateSelect.emit(date); });\r\n _service.model$.pipe(takeUntil(this._destroyed$)).subscribe(model => {\r\n const newDate = model.firstDate;\r\n const oldDate = this.model ? this.model.firstDate : null;\r\n // update public state\r\n this._publicState = {\r\n maxDate: model.maxDate,\r\n minDate: model.minDate,\r\n firstDate: model.firstDate,\r\n lastDate: model.lastDate,\r\n focusedDate: model.focusDate,\r\n months: model.months.map(viewModel => viewModel.firstDate)\r\n };\r\n let navigationPrevented = false;\r\n // emitting navigation event if the first month changes\r\n if (!newDate.equals(oldDate)) {\r\n this.navigate.emit({\r\n current: oldDate ? { year: oldDate.year, month: oldDate.month } : null,\r\n next: { year: newDate.year, month: newDate.month },\r\n preventDefault: () => navigationPrevented = true\r\n });\r\n // can't prevent the very first navigation\r\n if (navigationPrevented && oldDate !== null) {\r\n this._service.open(oldDate);\r\n return;\r\n }\r\n }\r\n const newSelectedDate = model.selectedDate;\r\n const newFocusedDate = model.focusDate;\r\n const oldFocusedDate = this.model ? this.model.focusDate : null;\r\n this.model = model;\r\n // handling selection change\r\n if (isChangedDate(newSelectedDate, this._controlValue)) {\r\n this._controlValue = newSelectedDate;\r\n this.onTouched();\r\n this.onChange(this._ngbDateAdapter.toModel(newSelectedDate));\r\n }\r\n // handling focus change\r\n if (isChangedDate(newFocusedDate, oldFocusedDate) && oldFocusedDate && model.focusVisible) {\r\n this.focus();\r\n }\r\n cd.markForCheck();\r\n });\r\n }\r\n /**\r\n * If `true`, weekdays will be displayed.\r\n *\r\n * @deprecated 9.1.0, please use 'weekdays' instead\r\n */\r\n set showWeekdays(weekdays) {\r\n this.weekdays = weekdays;\r\n this._showWeekdays = weekdays;\r\n }\r\n get showWeekdays() { return this._showWeekdays; }\r\n /**\r\n * Returns the readonly public state of the datepicker\r\n *\r\n * @since 5.2.0\r\n */\r\n get state() { return this._publicState; }\r\n /**\r\n * Returns the calendar service used in the specific datepicker instance.\r\n *\r\n * @since 5.3.0\r\n */\r\n get calendar() { return this._calendar; }\r\n /**\r\n * Focuses on given date.\r\n */\r\n focusDate(date) { this._service.focus(NgbDate.from(date)); }\r\n /**\r\n * Selects focused date.\r\n */\r\n focusSelect() { this._service.focusSelect(); }\r\n focus() {\r\n this._ngZone.onStable.asObservable().pipe(take(1)).subscribe(() => {\r\n const elementToFocus = this._elementRef.nativeElement.querySelector('div.ngb-dp-day[tabindex=\"0\"]');\r\n if (elementToFocus) {\r\n elementToFocus.focus();\r\n }\r\n });\r\n }\r\n /**\r\n * Navigates to the provided date.\r\n *\r\n * With the default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\r\n * If nothing or invalid date provided calendar will open current month.\r\n *\r\n * Use the `[startDate]` input as an alternative.\r\n */\r\n navigateTo(date) {\r\n this._service.open(NgbDate.from(date ? date.day ? date : Object.assign(Object.assign({}, date), { day: 1 }) : null));\r\n }\r\n ngAfterViewInit() {\r\n this._ngZone.runOutsideAngular(() => {\r\n const focusIns$ = fromEvent(this._contentEl.nativeElement, 'focusin');\r\n const focusOuts$ = fromEvent(this._contentEl.nativeElement, 'focusout');\r\n const { nativeElement } = this._elementRef;\r\n // we're changing 'focusVisible' only when entering or leaving months view\r\n // and ignoring all focus events where both 'target' and 'related' target are day cells\r\n merge(focusIns$, focusOuts$)\r\n .pipe(filter(({ target, relatedTarget }) => !(hasClassName(target, 'ngb-dp-day') && hasClassName(relatedTarget, 'ngb-dp-day') &&\r\n nativeElement.contains(target) && nativeElement.contains(relatedTarget))), takeUntil(this._destroyed$))\r\n .subscribe(({ type }) => this._ngZone.run(() => this._service.set({ focusVisible: type === 'focusin' })));\r\n });\r\n }\r\n ngOnDestroy() { this._destroyed$.next(); }\r\n ngOnInit() {\r\n if (this.model === undefined) {\r\n const inputs = {};\r\n ['dayTemplateData', 'displayMonths', 'markDisabled', 'firstDayOfWeek', 'navigation', 'minDate', 'maxDate',\r\n 'outsideDays', 'weekdays']\r\n .forEach(name => inputs[name] = this[name]);\r\n this._service.set(inputs);\r\n this.navigateTo(this.startDate);\r\n }\r\n if (!this.dayTemplate) {\r\n this.dayTemplate = this._defaultDayTemplate;\r\n }\r\n }\r\n ngOnChanges(changes) {\r\n const inputs = {};\r\n if (changes.showWeekdays) {\r\n inputs['weekdays'] = this.weekdays;\r\n }\r\n ['dayTemplateData', 'displayMonths', 'markDisabled', 'firstDayOfWeek', 'navigation', 'minDate', 'maxDate',\r\n 'outsideDays', 'weekdays']\r\n .filter(name => name in changes)\r\n .forEach(name => inputs[name] = this[name]);\r\n this._service.set(inputs);\r\n if ('startDate' in changes) {\r\n const { currentValue, previousValue } = changes.startDate;\r\n if (isChangedMonth(previousValue, currentValue)) {\r\n this.navigateTo(this.startDate);\r\n }\r\n }\r\n }\r\n onDateSelect(date) {\r\n this._service.focus(date);\r\n this._service.select(date, { emitEvent: true });\r\n }\r\n onNavigateDateSelect(date) { this._service.open(date); }\r\n onNavigateEvent(event) {\r\n switch (event) {\r\n case NavigationEvent.PREV:\r\n this._service.open(this._calendar.getPrev(this.model.firstDate, 'm', 1));\r\n break;\r\n case NavigationEvent.NEXT:\r\n this._service.open(this._calendar.getNext(this.model.firstDate, 'm', 1));\r\n break;\r\n }\r\n }\r\n registerOnChange(fn) { this.onChange = fn; }\r\n registerOnTouched(fn) { this.onTouched = fn; }\r\n setDisabledState(disabled) { this._service.set({ disabled }); }\r\n writeValue(value) {\r\n this._controlValue = NgbDate.from(this._ngbDateAdapter.fromModel(value));\r\n this._service.select(this._controlValue);\r\n }\r\n}\nNgbDatepicker.ɵfac = function NgbDatepicker_Factory(t) { return new (t || NgbDatepicker)(ɵngcc0.ɵɵdirectiveInject(NgbDatepickerService), ɵngcc0.ɵɵdirectiveInject(NgbCalendar), ɵngcc0.ɵɵdirectiveInject(NgbDatepickerI18n), ɵngcc0.ɵɵdirectiveInject(NgbDatepickerConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(NgbDateAdapter), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nNgbDatepicker.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbDatepicker, selectors: [[\"ngb-datepicker\"]], contentQueries: function NgbDatepicker_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbDatepickerContent, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.contentTemplate = _t.first);\n } }, viewQuery: function NgbDatepicker_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c10, 7);\n ɵngcc0.ɵɵviewQuery(_c11, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._defaultDayTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._contentEl = _t.first);\n } }, inputs: { showWeekdays: \"showWeekdays\", weekdays: \"weekdays\", dayTemplate: \"dayTemplate\", dayTemplateData: \"dayTemplateData\", displayMonths: \"displayMonths\", firstDayOfWeek: \"firstDayOfWeek\", footerTemplate: \"footerTemplate\", markDisabled: \"markDisabled\", maxDate: \"maxDate\", minDate: \"minDate\", navigation: \"navigation\", outsideDays: \"outsideDays\", showWeekNumbers: \"showWeekNumbers\", startDate: \"startDate\" }, outputs: { navigate: \"navigate\", dateSelect: \"dateSelect\" }, exportAs: [\"ngbDatepicker\"], features: [ɵngcc0.ɵɵProvidersFeature([{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbDatepicker), multi: true }, NgbDatepickerService]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 10, vars: 5, consts: [[\"defaultDayTemplate\", \"\"], [\"defaultContentTemplate\", \"\"], [1, \"ngb-dp-header\"], [3, \"date\", \"months\", \"disabled\", \"showSelect\", \"prevDisabled\", \"nextDisabled\", \"selectBoxes\", \"navigate\", \"select\", 4, \"ngIf\"], [1, \"ngb-dp-content\"], [\"content\", \"\"], [3, \"ngTemplateOutlet\"], [\"ngbDatepickerDayView\", \"\", 3, \"date\", \"currentMonth\", \"selected\", \"disabled\", \"focused\"], [\"class\", \"ngb-dp-month\", 4, \"ngFor\", \"ngForOf\"], [1, \"ngb-dp-month\"], [\"class\", \"ngb-dp-month-name\", 4, \"ngIf\"], [3, \"month\"], [1, \"ngb-dp-month-name\"], [3, \"date\", \"months\", \"disabled\", \"showSelect\", \"prevDisabled\", \"nextDisabled\", \"selectBoxes\", \"navigate\", \"select\"]], template: function NgbDatepicker_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbDatepicker_ng_template_0_Template, 1, 5, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, NgbDatepicker_ng_template_2_Template, 1, 1, \"ng-template\", null, 1, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵelementStart(4, \"div\", 2);\n ɵngcc0.ɵɵtemplate(5, NgbDatepicker_ngb_datepicker_navigation_5_Template, 1, 7, \"ngb-datepicker-navigation\", 3);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(6, \"div\", 4, 5);\n ɵngcc0.ɵɵtemplate(8, NgbDatepicker_ng_template_8_Template, 0, 0, \"ng-template\", 6);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(9, NgbDatepicker_ng_template_9_Template, 0, 0, \"ng-template\", 6);\n } if (rf & 2) {\n const _r2 = ɵngcc0.ɵɵreference(3);\n ɵngcc0.ɵɵadvance(5);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.navigation !== \"none\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"ngb-dp-months\", !ctx.contentTemplate);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (ctx.contentTemplate == null ? null : ctx.contentTemplate.templateRef) || _r2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx.footerTemplate);\n } }, directives: function () { return [ɵngcc1.NgIf, ɵngcc1.NgTemplateOutlet, NgbDatepickerDayView, ɵngcc1.NgForOf, NgbDatepickerMonth, NgbDatepickerNavigation]; }, styles: [\"ngb-datepicker{border:1px solid #dfdfdf;border-radius:.25rem;display:inline-block}ngb-datepicker-month{pointer-events:auto}ngb-datepicker.dropdown-menu{padding:0}.ngb-dp-body{z-index:1050}.ngb-dp-header{background-color:#f8f9fa;background-color:var(--light);border-bottom:0;border-radius:.25rem .25rem 0 0;padding-top:.25rem}.ngb-dp-months{display:flex}.ngb-dp-month{pointer-events:none}.ngb-dp-month-name{background-color:#f8f9fa;background-color:var(--light);font-size:larger;height:2rem;line-height:2rem;text-align:center}.ngb-dp-month+.ngb-dp-month .ngb-dp-month-name,.ngb-dp-month+.ngb-dp-month .ngb-dp-week{padding-left:1rem}.ngb-dp-month:last-child .ngb-dp-week{padding-right:.25rem}.ngb-dp-month:first-child .ngb-dp-week{padding-left:.25rem}.ngb-dp-month .ngb-dp-week:last-child{padding-bottom:.25rem}\"], encapsulation: 2, changeDetection: 0 });\r\nNgbDatepicker.ctorParameters = () => [\r\n { type: NgbDatepickerService },\r\n { type: NgbCalendar },\r\n { type: NgbDatepickerI18n },\r\n { type: NgbDatepickerConfig },\r\n { type: ChangeDetectorRef },\r\n { type: ElementRef },\r\n { type: NgbDateAdapter },\r\n { type: NgZone }\r\n];\r\nNgbDatepicker.propDecorators = {\r\n _defaultDayTemplate: [{ type: ViewChild, args: ['defaultDayTemplate', { static: true },] }],\r\n _contentEl: [{ type: ViewChild, args: ['content', { static: true },] }],\r\n contentTemplate: [{ type: ContentChild, args: [NgbDatepickerContent, { static: true },] }],\r\n dayTemplate: [{ type: Input }],\r\n dayTemplateData: [{ type: Input }],\r\n displayMonths: [{ type: Input }],\r\n firstDayOfWeek: [{ type: Input }],\r\n footerTemplate: [{ type: Input }],\r\n markDisabled: [{ type: Input }],\r\n maxDate: [{ type: Input }],\r\n minDate: [{ type: Input }],\r\n navigation: [{ type: Input }],\r\n outsideDays: [{ type: Input }],\r\n showWeekdays: [{ type: Input }],\r\n showWeekNumbers: [{ type: Input }],\r\n startDate: [{ type: Input }],\r\n weekdays: [{ type: Input }],\r\n navigate: [{ type: Output }],\r\n dateSelect: [{ type: Output }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepicker, [{\n type: Component,\n args: [{\n exportAs: 'ngbDatepicker',\n selector: 'ngb-datepicker',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `\r\n \r\n
    \r\n
    \r\n
    \r\n\r\n \r\n
    \r\n
    1 && navigation === 'select')\" class=\"ngb-dp-month-name\">\r\n {{ i18n.getMonthLabel(month.firstDate) }}\r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n \r\n `,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbDatepicker), multi: true }, NgbDatepickerService],\n styles: [\"ngb-datepicker{border:1px solid #dfdfdf;border-radius:.25rem;display:inline-block}ngb-datepicker-month{pointer-events:auto}ngb-datepicker.dropdown-menu{padding:0}.ngb-dp-body{z-index:1050}.ngb-dp-header{background-color:#f8f9fa;background-color:var(--light);border-bottom:0;border-radius:.25rem .25rem 0 0;padding-top:.25rem}.ngb-dp-months{display:flex}.ngb-dp-month{pointer-events:none}.ngb-dp-month-name{background-color:#f8f9fa;background-color:var(--light);font-size:larger;height:2rem;line-height:2rem;text-align:center}.ngb-dp-month+.ngb-dp-month .ngb-dp-month-name,.ngb-dp-month+.ngb-dp-month .ngb-dp-week{padding-left:1rem}.ngb-dp-month:last-child .ngb-dp-week{padding-right:.25rem}.ngb-dp-month:first-child .ngb-dp-week{padding-left:.25rem}.ngb-dp-month .ngb-dp-week:last-child{padding-bottom:.25rem}\"]\n }]\n }], function () { return [{ type: NgbDatepickerService }, { type: NgbCalendar }, { type: NgbDatepickerI18n }, { type: NgbDatepickerConfig }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.ElementRef }, { type: NgbDateAdapter }, { type: ɵngcc0.NgZone }]; }, { navigate: [{\n type: Output\n }], dateSelect: [{\n type: Output\n }], showWeekdays: [{\n type: Input\n }], weekdays: [{\n type: Input\n }], dayTemplate: [{\n type: Input\n }], _defaultDayTemplate: [{\n type: ViewChild,\n args: ['defaultDayTemplate', { static: true }]\n }], _contentEl: [{\n type: ViewChild,\n args: ['content', { static: true }]\n }], contentTemplate: [{\n type: ContentChild,\n args: [NgbDatepickerContent, { static: true }]\n }], dayTemplateData: [{\n type: Input\n }], displayMonths: [{\n type: Input\n }], firstDayOfWeek: [{\n type: Input\n }], footerTemplate: [{\n type: Input\n }], markDisabled: [{\n type: Input\n }], maxDate: [{\n type: Input\n }], minDate: [{\n type: Input\n }], navigation: [{\n type: Input\n }], outsideDays: [{\n type: Input\n }], showWeekNumbers: [{\n type: Input\n }], startDate: [{\n type: Input\n }] }); })();\n\nvar Key;\r\n(function (Key) {\r\n Key[Key[\"Tab\"] = 9] = \"Tab\";\r\n Key[Key[\"Enter\"] = 13] = \"Enter\";\r\n Key[Key[\"Escape\"] = 27] = \"Escape\";\r\n Key[Key[\"Space\"] = 32] = \"Space\";\r\n Key[Key[\"PageUp\"] = 33] = \"PageUp\";\r\n Key[Key[\"PageDown\"] = 34] = \"PageDown\";\r\n Key[Key[\"End\"] = 35] = \"End\";\r\n Key[Key[\"Home\"] = 36] = \"Home\";\r\n Key[Key[\"ArrowLeft\"] = 37] = \"ArrowLeft\";\r\n Key[Key[\"ArrowUp\"] = 38] = \"ArrowUp\";\r\n Key[Key[\"ArrowRight\"] = 39] = \"ArrowRight\";\r\n Key[Key[\"ArrowDown\"] = 40] = \"ArrowDown\";\r\n})(Key || (Key = {}));\n\n/**\r\n * A service that represents the keyboard navigation.\r\n *\r\n * Default keyboard shortcuts [are documented in the overview](#/components/datepicker/overview#keyboard-shortcuts)\r\n *\r\n * @since 5.2.0\r\n */\r\nclass NgbDatepickerKeyboardService {\r\n /**\r\n * Processes a keyboard event.\r\n */\r\n processKey(event, datepicker) {\r\n const { state, calendar } = datepicker;\r\n // tslint:disable-next-line:deprecation\r\n switch (event.which) {\r\n case Key.PageUp:\r\n datepicker.focusDate(calendar.getPrev(state.focusedDate, event.shiftKey ? 'y' : 'm', 1));\r\n break;\r\n case Key.PageDown:\r\n datepicker.focusDate(calendar.getNext(state.focusedDate, event.shiftKey ? 'y' : 'm', 1));\r\n break;\r\n case Key.End:\r\n datepicker.focusDate(event.shiftKey ? state.maxDate : state.lastDate);\r\n break;\r\n case Key.Home:\r\n datepicker.focusDate(event.shiftKey ? state.minDate : state.firstDate);\r\n break;\r\n case Key.ArrowLeft:\r\n datepicker.focusDate(calendar.getPrev(state.focusedDate, 'd', 1));\r\n break;\r\n case Key.ArrowUp:\r\n datepicker.focusDate(calendar.getPrev(state.focusedDate, 'd', calendar.getDaysPerWeek()));\r\n break;\r\n case Key.ArrowRight:\r\n datepicker.focusDate(calendar.getNext(state.focusedDate, 'd', 1));\r\n break;\r\n case Key.ArrowDown:\r\n datepicker.focusDate(calendar.getNext(state.focusedDate, 'd', calendar.getDaysPerWeek()));\r\n break;\r\n case Key.Enter:\r\n case Key.Space:\r\n datepicker.focusSelect();\r\n break;\r\n default:\r\n return;\r\n }\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n}\nNgbDatepickerKeyboardService.ɵfac = function NgbDatepickerKeyboardService_Factory(t) { return new (t || NgbDatepickerKeyboardService)(); };\r\nNgbDatepickerKeyboardService.ɵprov = ɵɵdefineInjectable({ factory: function NgbDatepickerKeyboardService_Factory() { return new NgbDatepickerKeyboardService(); }, token: NgbDatepickerKeyboardService, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerKeyboardService, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], null, null); })();\n\n/**\r\n * A component that renders one month including all the days, weekdays and week numbers. Can be used inside\r\n * the `` when you want to customize months layout.\r\n *\r\n * For a usage example, see [custom month layout demo](#/components/datepicker/examples#custommonth)\r\n *\r\n * @since 5.3.0\r\n */\r\nclass NgbDatepickerMonth {\r\n constructor(i18n, datepicker, _keyboardService, _service) {\r\n this.i18n = i18n;\r\n this.datepicker = datepicker;\r\n this._keyboardService = _keyboardService;\r\n this._service = _service;\r\n }\r\n /**\r\n * The first date of month to be rendered.\r\n *\r\n * This month must one of the months present in the\r\n * [datepicker state](#/components/datepicker/api#NgbDatepickerState).\r\n */\r\n set month(month) {\r\n this.viewModel = this._service.getMonth(month);\r\n }\r\n onKeyDown(event) { this._keyboardService.processKey(event, this.datepicker); }\r\n doSelect(day) {\r\n if (!day.context.disabled && !day.hidden) {\r\n this.datepicker.onDateSelect(day.date);\r\n }\r\n }\r\n}\nNgbDatepickerMonth.ɵfac = function NgbDatepickerMonth_Factory(t) { return new (t || NgbDatepickerMonth)(ɵngcc0.ɵɵdirectiveInject(NgbDatepickerI18n), ɵngcc0.ɵɵdirectiveInject(NgbDatepicker), ɵngcc0.ɵɵdirectiveInject(NgbDatepickerKeyboardService), ɵngcc0.ɵɵdirectiveInject(NgbDatepickerService)); };\nNgbDatepickerMonth.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbDatepickerMonth, selectors: [[\"ngb-datepicker-month\"]], hostAttrs: [\"role\", \"grid\"], hostBindings: function NgbDatepickerMonth_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"keydown\", function NgbDatepickerMonth_keydown_HostBindingHandler($event) { return ctx.onKeyDown($event); });\n } }, inputs: { month: \"month\" }, decls: 2, vars: 2, consts: [[\"class\", \"ngb-dp-week ngb-dp-weekdays\", \"role\", \"row\", 4, \"ngIf\"], [\"ngFor\", \"\", 3, \"ngForOf\"], [\"role\", \"row\", 1, \"ngb-dp-week\", \"ngb-dp-weekdays\"], [\"class\", \"ngb-dp-weekday ngb-dp-showweek small\", 4, \"ngIf\"], [\"class\", \"ngb-dp-weekday small\", \"role\", \"columnheader\", 4, \"ngFor\", \"ngForOf\"], [1, \"ngb-dp-weekday\", \"ngb-dp-showweek\", \"small\"], [\"role\", \"columnheader\", 1, \"ngb-dp-weekday\", \"small\"], [\"class\", \"ngb-dp-week\", \"role\", \"row\", 4, \"ngIf\"], [\"role\", \"row\", 1, \"ngb-dp-week\"], [\"class\", \"ngb-dp-week-number small text-muted\", 4, \"ngIf\"], [\"class\", \"ngb-dp-day\", \"role\", \"gridcell\", 3, \"disabled\", \"tabindex\", \"hidden\", \"ngb-dp-today\", \"click\", 4, \"ngFor\", \"ngForOf\"], [1, \"ngb-dp-week-number\", \"small\", \"text-muted\"], [\"role\", \"gridcell\", 1, \"ngb-dp-day\", 3, \"tabindex\", \"click\"], [3, \"ngIf\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]], template: function NgbDatepickerMonth_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbDatepickerMonth_div_0_Template, 3, 2, \"div\", 0);\n ɵngcc0.ɵɵtemplate(1, NgbDatepickerMonth_ng_template_1_Template, 1, 1, \"ng-template\", 1);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.viewModel.weekdays.length > 0);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.viewModel.weeks);\n } }, directives: [ɵngcc1.NgIf, ɵngcc1.NgForOf, ɵngcc1.NgTemplateOutlet], styles: [\"ngb-datepicker-month{display:block}.ngb-dp-week-number,.ngb-dp-weekday{font-style:italic;line-height:2rem;text-align:center}.ngb-dp-weekday{color:#5bc0de;color:var(--info)}.ngb-dp-week{border-radius:.25rem;display:flex}.ngb-dp-weekdays{background-color:#f8f9fa;background-color:var(--light);border-bottom:1px solid rgba(0,0,0,.125);border-radius:0}.ngb-dp-day,.ngb-dp-week-number,.ngb-dp-weekday{height:2rem;width:2rem}.ngb-dp-day{cursor:pointer}.ngb-dp-day.disabled,.ngb-dp-day.hidden{cursor:default;pointer-events:none}.ngb-dp-day[tabindex=\\\"0\\\"]{z-index:1}\"], encapsulation: 2 });\r\nNgbDatepickerMonth.ctorParameters = () => [\r\n { type: NgbDatepickerI18n },\r\n { type: NgbDatepicker },\r\n { type: NgbDatepickerKeyboardService },\r\n { type: NgbDatepickerService }\r\n];\r\nNgbDatepickerMonth.propDecorators = {\r\n month: [{ type: Input }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerMonth, [{\n type: Component,\n args: [{\n selector: 'ngb-datepicker-month',\n host: { 'role': 'grid', '(keydown)': 'onKeyDown($event)' },\n encapsulation: ViewEncapsulation.None,\n template: `\r\n
    0\" class=\"ngb-dp-week ngb-dp-weekdays\" role=\"row\">\r\n
    {{ i18n.getWeekLabel() }}
    \r\n
    {{ weekday }}
    \r\n
    \r\n \r\n
    \r\n
    {{ i18n.getWeekNumerals(week.number) }}
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n `,\n styles: [\"ngb-datepicker-month{display:block}.ngb-dp-week-number,.ngb-dp-weekday{font-style:italic;line-height:2rem;text-align:center}.ngb-dp-weekday{color:#5bc0de;color:var(--info)}.ngb-dp-week{border-radius:.25rem;display:flex}.ngb-dp-weekdays{background-color:#f8f9fa;background-color:var(--light);border-bottom:1px solid rgba(0,0,0,.125);border-radius:0}.ngb-dp-day,.ngb-dp-week-number,.ngb-dp-weekday{height:2rem;width:2rem}.ngb-dp-day{cursor:pointer}.ngb-dp-day.disabled,.ngb-dp-day.hidden{cursor:default;pointer-events:none}.ngb-dp-day[tabindex=\\\"0\\\"]{z-index:1}\"]\n }]\n }], function () { return [{ type: NgbDatepickerI18n }, { type: NgbDatepicker }, { type: NgbDatepickerKeyboardService }, { type: NgbDatepickerService }]; }, { month: [{\n type: Input\n }] }); })();\n\nclass NgbDatepickerNavigation {\r\n constructor(i18n) {\r\n this.i18n = i18n;\r\n this.navigation = NavigationEvent;\r\n this.months = [];\r\n this.navigate = new EventEmitter();\r\n this.select = new EventEmitter();\r\n }\r\n onClickPrev(event) {\r\n event.currentTarget.focus();\r\n this.navigate.emit(this.navigation.PREV);\r\n }\r\n onClickNext(event) {\r\n event.currentTarget.focus();\r\n this.navigate.emit(this.navigation.NEXT);\r\n }\r\n}\nNgbDatepickerNavigation.ɵfac = function NgbDatepickerNavigation_Factory(t) { return new (t || NgbDatepickerNavigation)(ɵngcc0.ɵɵdirectiveInject(NgbDatepickerI18n)); };\nNgbDatepickerNavigation.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbDatepickerNavigation, selectors: [[\"ngb-datepicker-navigation\"]], inputs: { months: \"months\", date: \"date\", disabled: \"disabled\", showSelect: \"showSelect\", prevDisabled: \"prevDisabled\", nextDisabled: \"nextDisabled\", selectBoxes: \"selectBoxes\" }, outputs: { navigate: \"navigate\", select: \"select\" }, decls: 8, vars: 4, consts: function () { let i18n_12; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_datepicker_previous_month$$FESM2015_NG_BOOTSTRAP_JS_13 = goog.getMsg(\"Previous month\");\n i18n_12 = MSG_EXTERNAL_ngb_datepicker_previous_month$$FESM2015_NG_BOOTSTRAP_JS_13;\n }\n else {\n i18n_12 = $localize `:@@ngb.datepicker.previous-month␟c3b08b07b5ab98e7cdcf18df39355690ab7d3884␟8586908745456864217:Previous month`;\n } let i18n_14; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_datepicker_previous_month$$FESM2015_NG_BOOTSTRAP_JS_15 = goog.getMsg(\"Previous month\");\n i18n_14 = MSG_EXTERNAL_ngb_datepicker_previous_month$$FESM2015_NG_BOOTSTRAP_JS_15;\n }\n else {\n i18n_14 = $localize `:@@ngb.datepicker.previous-month␟c3b08b07b5ab98e7cdcf18df39355690ab7d3884␟8586908745456864217:Previous month`;\n } let i18n_16; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_datepicker_next_month$$FESM2015_NG_BOOTSTRAP_JS_17 = goog.getMsg(\"Next month\");\n i18n_16 = MSG_EXTERNAL_ngb_datepicker_next_month$$FESM2015_NG_BOOTSTRAP_JS_17;\n }\n else {\n i18n_16 = $localize `:@@ngb.datepicker.next-month␟4bd046985cfe13040d5ef0cd881edce0968a111a␟3628374603023447227:Next month`;\n } let i18n_18; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_datepicker_next_month$$FESM2015_NG_BOOTSTRAP_JS_19 = goog.getMsg(\"Next month\");\n i18n_18 = MSG_EXTERNAL_ngb_datepicker_next_month$$FESM2015_NG_BOOTSTRAP_JS_19;\n }\n else {\n i18n_18 = $localize `:@@ngb.datepicker.next-month␟4bd046985cfe13040d5ef0cd881edce0968a111a␟3628374603023447227:Next month`;\n } return [[1, \"ngb-dp-arrow\"], [\"type\", \"button\", \"aria-label\", i18n_12, \"title\", i18n_14, 1, \"btn\", \"btn-link\", \"ngb-dp-arrow-btn\", 3, \"disabled\", \"click\"], [1, \"ngb-dp-navigation-chevron\"], [\"class\", \"ngb-dp-navigation-select\", 3, \"date\", \"disabled\", \"months\", \"years\", \"select\", 4, \"ngIf\"], [4, \"ngIf\"], [1, \"ngb-dp-arrow\", \"right\"], [\"type\", \"button\", \"aria-label\", i18n_16, \"title\", i18n_18, 1, \"btn\", \"btn-link\", \"ngb-dp-arrow-btn\", 3, \"disabled\", \"click\"], [1, \"ngb-dp-navigation-select\", 3, \"date\", \"disabled\", \"months\", \"years\", \"select\"], [\"ngFor\", \"\", 3, \"ngForOf\"], [\"class\", \"ngb-dp-arrow\", 4, \"ngIf\"], [1, \"ngb-dp-month-name\"]]; }, template: function NgbDatepickerNavigation_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 0);\n ɵngcc0.ɵɵelementStart(1, \"button\", 1);\n ɵngcc0.ɵɵlistener(\"click\", function NgbDatepickerNavigation_Template_button_click_1_listener($event) { return ctx.onClickPrev($event); });\n ɵngcc0.ɵɵelement(2, \"span\", 2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(3, NgbDatepickerNavigation_ngb_datepicker_navigation_select_3_Template, 1, 4, \"ngb-datepicker-navigation-select\", 3);\n ɵngcc0.ɵɵtemplate(4, NgbDatepickerNavigation_4_Template, 1, 1, undefined, 4);\n ɵngcc0.ɵɵelementStart(5, \"div\", 5);\n ɵngcc0.ɵɵelementStart(6, \"button\", 6);\n ɵngcc0.ɵɵlistener(\"click\", function NgbDatepickerNavigation_Template_button_click_6_listener($event) { return ctx.onClickNext($event); });\n ɵngcc0.ɵɵelement(7, \"span\", 2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx.prevDisabled);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showSelect);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.showSelect);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx.nextDisabled);\n } }, directives: function () { return [ɵngcc1.NgIf, NgbDatepickerNavigationSelect, ɵngcc1.NgForOf]; }, styles: [\"ngb-datepicker-navigation{align-items:center;display:flex}.ngb-dp-navigation-chevron{border-style:solid;border-width:.2em .2em 0 0;display:inline-block;height:.75em;margin-left:.25em;margin-right:.15em;transform:rotate(-135deg);width:.75em}.ngb-dp-arrow{display:flex;flex:1 1 auto;height:2rem;margin:0;padding-left:0;padding-right:0;width:2rem}.ngb-dp-arrow.right{justify-content:flex-end}.ngb-dp-arrow.right .ngb-dp-navigation-chevron{margin-left:.15em;margin-right:.25em;transform:rotate(45deg)}.ngb-dp-arrow-btn{background-color:transparent;border:none;margin:0 .5rem;padding:0 .25rem;z-index:1}.ngb-dp-arrow-btn:focus{outline-style:auto;outline-width:1px}@media (-ms-high-contrast:active),(-ms-high-contrast:none){.ngb-dp-arrow-btn:focus{outline-style:solid}}.ngb-dp-month-name{font-size:larger;height:2rem;line-height:2rem;text-align:center}.ngb-dp-navigation-select{display:flex;flex:1 1 9rem}\"], encapsulation: 2, changeDetection: 0 });\r\nNgbDatepickerNavigation.ctorParameters = () => [\r\n { type: NgbDatepickerI18n }\r\n];\r\nNgbDatepickerNavigation.propDecorators = {\r\n date: [{ type: Input }],\r\n disabled: [{ type: Input }],\r\n months: [{ type: Input }],\r\n showSelect: [{ type: Input }],\r\n prevDisabled: [{ type: Input }],\r\n nextDisabled: [{ type: Input }],\r\n selectBoxes: [{ type: Input }],\r\n navigate: [{ type: Output }],\r\n select: [{ type: Output }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerNavigation, [{\n type: Component,\n args: [{\n selector: 'ngb-datepicker-navigation',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `\r\n
    \r\n \r\n
    \r\n \r\n \r\n\r\n \r\n
    0\">
    \r\n
    \r\n {{ i18n.getMonthLabel(month.firstDate) }}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n `,\n styles: [\"ngb-datepicker-navigation{align-items:center;display:flex}.ngb-dp-navigation-chevron{border-style:solid;border-width:.2em .2em 0 0;display:inline-block;height:.75em;margin-left:.25em;margin-right:.15em;transform:rotate(-135deg);width:.75em}.ngb-dp-arrow{display:flex;flex:1 1 auto;height:2rem;margin:0;padding-left:0;padding-right:0;width:2rem}.ngb-dp-arrow.right{justify-content:flex-end}.ngb-dp-arrow.right .ngb-dp-navigation-chevron{margin-left:.15em;margin-right:.25em;transform:rotate(45deg)}.ngb-dp-arrow-btn{background-color:transparent;border:none;margin:0 .5rem;padding:0 .25rem;z-index:1}.ngb-dp-arrow-btn:focus{outline-style:auto;outline-width:1px}@media (-ms-high-contrast:active),(-ms-high-contrast:none){.ngb-dp-arrow-btn:focus{outline-style:solid}}.ngb-dp-month-name{font-size:larger;height:2rem;line-height:2rem;text-align:center}.ngb-dp-navigation-select{display:flex;flex:1 1 9rem}\"]\n }]\n }], function () { return [{ type: NgbDatepickerI18n }]; }, { months: [{\n type: Input\n }], navigate: [{\n type: Output\n }], select: [{\n type: Output\n }], date: [{\n type: Input\n }], disabled: [{\n type: Input\n }], showSelect: [{\n type: Input\n }], prevDisabled: [{\n type: Input\n }], nextDisabled: [{\n type: Input\n }], selectBoxes: [{\n type: Input\n }] }); })();\n\nconst isContainedIn = (element, array) => array ? array.some(item => item.contains(element)) : false;\r\nconst ɵ0$2 = isContainedIn;\r\nconst matchesSelectorIfAny = (element, selector) => !selector || closest(element, selector) != null;\r\nconst ɵ1$1 = matchesSelectorIfAny;\r\nconst ɵ2$1 = () => {\r\n const isIOS = () => /iPad|iPhone|iPod/.test(navigator.userAgent) ||\r\n (/Macintosh/.test(navigator.userAgent) && navigator.maxTouchPoints && navigator.maxTouchPoints > 2);\r\n const isAndroid = () => /Android/.test(navigator.userAgent);\r\n return typeof navigator !== 'undefined' ? !!navigator.userAgent && (isIOS() || isAndroid()) : false;\r\n};\r\n// we have to add a more significant delay to avoid re-opening when handling (click) on a toggling element\r\n// TODO: use proper Angular platform detection when NgbAutoClose becomes a service and we can inject PLATFORM_ID\r\nconst isMobile = (ɵ2$1)();\r\n// setting 'ngbAutoClose' synchronously on mobile results in immediate popup closing\r\n// when tapping on the triggering element\r\nconst wrapAsyncForMobile = fn => isMobile ? () => setTimeout(() => fn(), 100) : fn;\r\nconst ɵ3 = wrapAsyncForMobile;\r\nfunction ngbAutoClose(zone, document, type, close, closed$, insideElements, ignoreElements, insideSelector) {\r\n // closing on ESC and outside clicks\r\n if (type) {\r\n zone.runOutsideAngular(wrapAsyncForMobile(() => {\r\n const shouldCloseOnClick = (event) => {\r\n const element = event.target;\r\n if (event.button === 2 || isContainedIn(element, ignoreElements)) {\r\n return false;\r\n }\r\n if (type === 'inside') {\r\n return isContainedIn(element, insideElements) && matchesSelectorIfAny(element, insideSelector);\r\n }\r\n else if (type === 'outside') {\r\n return !isContainedIn(element, insideElements);\r\n }\r\n else /* if (type === true) */ {\r\n return matchesSelectorIfAny(element, insideSelector) || !isContainedIn(element, insideElements);\r\n }\r\n };\r\n const escapes$ = fromEvent(document, 'keydown')\r\n .pipe(takeUntil(closed$), \r\n // tslint:disable-next-line:deprecation\r\n filter(e => e.which === Key.Escape), tap(e => e.preventDefault()));\r\n // we have to pre-calculate 'shouldCloseOnClick' on 'mousedown',\r\n // because on 'mouseup' DOM nodes might be detached\r\n const mouseDowns$ = fromEvent(document, 'mousedown').pipe(map(shouldCloseOnClick), takeUntil(closed$));\r\n const closeableClicks$ = fromEvent(document, 'mouseup')\r\n .pipe(withLatestFrom(mouseDowns$), filter(([_, shouldClose]) => shouldClose), delay(0), takeUntil(closed$));\r\n race([\r\n escapes$.pipe(map(_ => 0 /* ESCAPE */)), closeableClicks$.pipe(map(_ => 1 /* CLICK */))\r\n ]).subscribe((source) => zone.run(() => close(source)));\r\n }));\r\n }\r\n}\n\nconst FOCUSABLE_ELEMENTS_SELECTOR = [\r\n 'a[href]', 'button:not([disabled])', 'input:not([disabled]):not([type=\"hidden\"])', 'select:not([disabled])',\r\n 'textarea:not([disabled])', '[contenteditable]', '[tabindex]:not([tabindex=\"-1\"])'\r\n].join(', ');\r\n/**\r\n * Returns first and last focusable elements inside of a given element based on specific CSS selector\r\n */\r\nfunction getFocusableBoundaryElements(element) {\r\n const list = Array.from(element.querySelectorAll(FOCUSABLE_ELEMENTS_SELECTOR))\r\n .filter(el => el.tabIndex !== -1);\r\n return [list[0], list[list.length - 1]];\r\n}\r\n/**\r\n * Function that enforces browser focus to be trapped inside a DOM element.\r\n *\r\n * Works only for clicks inside the element and navigation with 'Tab', ignoring clicks outside of the element\r\n *\r\n * @param zone Angular zone\r\n * @param element The element around which focus will be trapped inside\r\n * @param stopFocusTrap$ The observable stream. When completed the focus trap will clean up listeners\r\n * and free internal resources\r\n * @param refocusOnClick Put the focus back to the last focused element whenever a click occurs on element (default to\r\n * false)\r\n */\r\nconst ngbFocusTrap = (zone, element, stopFocusTrap$, refocusOnClick = false) => {\r\n zone.runOutsideAngular(() => {\r\n // last focused element\r\n const lastFocusedElement$ = fromEvent(element, 'focusin').pipe(takeUntil(stopFocusTrap$), map(e => e.target));\r\n // 'tab' / 'shift+tab' stream\r\n fromEvent(element, 'keydown')\r\n .pipe(takeUntil(stopFocusTrap$), \r\n // tslint:disable:deprecation\r\n filter(e => e.which === Key.Tab), \r\n // tslint:enable:deprecation\r\n withLatestFrom(lastFocusedElement$))\r\n .subscribe(([tabEvent, focusedElement]) => {\r\n const [first, last] = getFocusableBoundaryElements(element);\r\n if ((focusedElement === first || focusedElement === element) && tabEvent.shiftKey) {\r\n last.focus();\r\n tabEvent.preventDefault();\r\n }\r\n if (focusedElement === last && !tabEvent.shiftKey) {\r\n first.focus();\r\n tabEvent.preventDefault();\r\n }\r\n });\r\n // inside click\r\n if (refocusOnClick) {\r\n fromEvent(element, 'click')\r\n .pipe(takeUntil(stopFocusTrap$), withLatestFrom(lastFocusedElement$), map(arr => arr[1]))\r\n .subscribe(lastFocusedElement => lastFocusedElement.focus());\r\n }\r\n });\r\n};\n\n// previous version:\r\n// https://github.com/angular-ui/bootstrap/blob/07c31d0731f7cb068a1932b8e01d2312b796b4ec/src/position/position.js\r\nclass Positioning {\r\n getAllStyles(element) { return window.getComputedStyle(element); }\r\n getStyle(element, prop) { return this.getAllStyles(element)[prop]; }\r\n isStaticPositioned(element) {\r\n return (this.getStyle(element, 'position') || 'static') === 'static';\r\n }\r\n offsetParent(element) {\r\n let offsetParentEl = element.offsetParent || document.documentElement;\r\n while (offsetParentEl && offsetParentEl !== document.documentElement && this.isStaticPositioned(offsetParentEl)) {\r\n offsetParentEl = offsetParentEl.offsetParent;\r\n }\r\n return offsetParentEl || document.documentElement;\r\n }\r\n position(element, round = true) {\r\n let elPosition;\r\n let parentOffset = { width: 0, height: 0, top: 0, bottom: 0, left: 0, right: 0 };\r\n if (this.getStyle(element, 'position') === 'fixed') {\r\n elPosition = element.getBoundingClientRect();\r\n elPosition = {\r\n top: elPosition.top,\r\n bottom: elPosition.bottom,\r\n left: elPosition.left,\r\n right: elPosition.right,\r\n height: elPosition.height,\r\n width: elPosition.width\r\n };\r\n }\r\n else {\r\n const offsetParentEl = this.offsetParent(element);\r\n elPosition = this.offset(element, false);\r\n if (offsetParentEl !== document.documentElement) {\r\n parentOffset = this.offset(offsetParentEl, false);\r\n }\r\n parentOffset.top += offsetParentEl.clientTop;\r\n parentOffset.left += offsetParentEl.clientLeft;\r\n }\r\n elPosition.top -= parentOffset.top;\r\n elPosition.bottom -= parentOffset.top;\r\n elPosition.left -= parentOffset.left;\r\n elPosition.right -= parentOffset.left;\r\n if (round) {\r\n elPosition.top = Math.round(elPosition.top);\r\n elPosition.bottom = Math.round(elPosition.bottom);\r\n elPosition.left = Math.round(elPosition.left);\r\n elPosition.right = Math.round(elPosition.right);\r\n }\r\n return elPosition;\r\n }\r\n offset(element, round = true) {\r\n const elBcr = element.getBoundingClientRect();\r\n const viewportOffset = {\r\n top: window.pageYOffset - document.documentElement.clientTop,\r\n left: window.pageXOffset - document.documentElement.clientLeft\r\n };\r\n let elOffset = {\r\n height: elBcr.height || element.offsetHeight,\r\n width: elBcr.width || element.offsetWidth,\r\n top: elBcr.top + viewportOffset.top,\r\n bottom: elBcr.bottom + viewportOffset.top,\r\n left: elBcr.left + viewportOffset.left,\r\n right: elBcr.right + viewportOffset.left\r\n };\r\n if (round) {\r\n elOffset.height = Math.round(elOffset.height);\r\n elOffset.width = Math.round(elOffset.width);\r\n elOffset.top = Math.round(elOffset.top);\r\n elOffset.bottom = Math.round(elOffset.bottom);\r\n elOffset.left = Math.round(elOffset.left);\r\n elOffset.right = Math.round(elOffset.right);\r\n }\r\n return elOffset;\r\n }\r\n /*\r\n Return false if the element to position is outside the viewport\r\n */\r\n positionElements(hostElement, targetElement, placement, appendToBody) {\r\n const [placementPrimary = 'top', placementSecondary = 'center'] = placement.split('-');\r\n const hostElPosition = appendToBody ? this.offset(hostElement, false) : this.position(hostElement, false);\r\n const targetElStyles = this.getAllStyles(targetElement);\r\n const marginTop = parseFloat(targetElStyles.marginTop);\r\n const marginBottom = parseFloat(targetElStyles.marginBottom);\r\n const marginLeft = parseFloat(targetElStyles.marginLeft);\r\n const marginRight = parseFloat(targetElStyles.marginRight);\r\n let topPosition = 0;\r\n let leftPosition = 0;\r\n switch (placementPrimary) {\r\n case 'top':\r\n topPosition = (hostElPosition.top - (targetElement.offsetHeight + marginTop + marginBottom));\r\n break;\r\n case 'bottom':\r\n topPosition = (hostElPosition.top + hostElPosition.height);\r\n break;\r\n case 'left':\r\n leftPosition = (hostElPosition.left - (targetElement.offsetWidth + marginLeft + marginRight));\r\n break;\r\n case 'right':\r\n leftPosition = (hostElPosition.left + hostElPosition.width);\r\n break;\r\n }\r\n switch (placementSecondary) {\r\n case 'top':\r\n topPosition = hostElPosition.top;\r\n break;\r\n case 'bottom':\r\n topPosition = hostElPosition.top + hostElPosition.height - targetElement.offsetHeight;\r\n break;\r\n case 'left':\r\n leftPosition = hostElPosition.left;\r\n break;\r\n case 'right':\r\n leftPosition = hostElPosition.left + hostElPosition.width - targetElement.offsetWidth;\r\n break;\r\n case 'center':\r\n if (placementPrimary === 'top' || placementPrimary === 'bottom') {\r\n leftPosition = (hostElPosition.left + hostElPosition.width / 2 - targetElement.offsetWidth / 2);\r\n }\r\n else {\r\n topPosition = (hostElPosition.top + hostElPosition.height / 2 - targetElement.offsetHeight / 2);\r\n }\r\n break;\r\n }\r\n /// The translate3d/gpu acceleration render a blurry text on chrome, the next line is commented until a browser fix\r\n // targetElement.style.transform = `translate3d(${Math.round(leftPosition)}px, ${Math.floor(topPosition)}px, 0px)`;\r\n targetElement.style.transform = `translate(${Math.round(leftPosition)}px, ${Math.round(topPosition)}px)`;\r\n // Check if the targetElement is inside the viewport\r\n const targetElBCR = targetElement.getBoundingClientRect();\r\n const html = document.documentElement;\r\n const windowHeight = window.innerHeight || html.clientHeight;\r\n const windowWidth = window.innerWidth || html.clientWidth;\r\n return targetElBCR.left >= 0 && targetElBCR.top >= 0 && targetElBCR.right <= windowWidth &&\r\n targetElBCR.bottom <= windowHeight;\r\n }\r\n}\r\nconst placementSeparator = /\\s+/;\r\nconst positionService = new Positioning();\r\n/*\r\n * Accept the placement array and applies the appropriate placement dependent on the viewport.\r\n * Returns the applied placement.\r\n * In case of auto placement, placements are selected in order\r\n * 'top', 'bottom', 'left', 'right',\r\n * 'top-left', 'top-right',\r\n * 'bottom-left', 'bottom-right',\r\n * 'left-top', 'left-bottom',\r\n * 'right-top', 'right-bottom'.\r\n * */\r\nfunction positionElements(hostElement, targetElement, placement, appendToBody, baseClass) {\r\n let placementVals = Array.isArray(placement) ? placement : placement.split(placementSeparator);\r\n const allowedPlacements = [\r\n 'top', 'bottom', 'left', 'right', 'top-left', 'top-right', 'bottom-left', 'bottom-right', 'left-top', 'left-bottom',\r\n 'right-top', 'right-bottom'\r\n ];\r\n const classList = targetElement.classList;\r\n const addClassesToTarget = (targetPlacement) => {\r\n const [primary, secondary] = targetPlacement.split('-');\r\n const classes = [];\r\n if (baseClass) {\r\n classes.push(`${baseClass}-${primary}`);\r\n if (secondary) {\r\n classes.push(`${baseClass}-${primary}-${secondary}`);\r\n }\r\n classes.forEach((classname) => { classList.add(classname); });\r\n }\r\n return classes;\r\n };\r\n // Remove old placement classes to avoid issues\r\n if (baseClass) {\r\n allowedPlacements.forEach((placementToRemove) => { classList.remove(`${baseClass}-${placementToRemove}`); });\r\n }\r\n // replace auto placement with other placements\r\n let hasAuto = placementVals.findIndex(val => val === 'auto');\r\n if (hasAuto >= 0) {\r\n allowedPlacements.forEach(function (obj) {\r\n if (placementVals.find(val => val.search('^' + obj) !== -1) == null) {\r\n placementVals.splice(hasAuto++, 1, obj);\r\n }\r\n });\r\n }\r\n // coordinates where to position\r\n // Required for transform:\r\n const style = targetElement.style;\r\n style.position = 'absolute';\r\n style.top = '0';\r\n style.left = '0';\r\n style['will-change'] = 'transform';\r\n let testPlacement = null;\r\n let isInViewport = false;\r\n for (testPlacement of placementVals) {\r\n let addedClasses = addClassesToTarget(testPlacement);\r\n if (positionService.positionElements(hostElement, targetElement, testPlacement, appendToBody)) {\r\n isInViewport = true;\r\n break;\r\n }\r\n // Remove the baseClasses for further calculation\r\n if (baseClass) {\r\n addedClasses.forEach((classname) => { classList.remove(classname); });\r\n }\r\n }\r\n if (!isInViewport) {\r\n // If nothing match, the first placement is the default one\r\n testPlacement = placementVals[0];\r\n addClassesToTarget(testPlacement);\r\n positionService.positionElements(hostElement, targetElement, testPlacement, appendToBody);\r\n }\r\n return testPlacement;\r\n}\n\nfunction NGB_DATEPICKER_PARSER_FORMATTER_FACTORY() {\r\n return new NgbDateISOParserFormatter();\r\n}\r\n/**\r\n * An abstract service for parsing and formatting dates for the\r\n * [`NgbInputDatepicker`](#/components/datepicker/api#NgbInputDatepicker) directive.\r\n * Converts between the internal `NgbDateStruct` model presentation and a `string` that is displayed in the\r\n * input element.\r\n *\r\n * When user types something in the input this service attempts to parse it into a `NgbDateStruct` object.\r\n * And vice versa, when users selects a date in the calendar with the mouse, it must be displayed as a `string`\r\n * in the input.\r\n *\r\n * Default implementation uses the ISO 8601 format, but you can provide another implementation via DI\r\n * to use an alternative string format or a custom parsing logic.\r\n *\r\n * See the [date format overview](#/components/datepicker/overview#date-model) for more details.\r\n */\r\nclass NgbDateParserFormatter {\r\n}\nNgbDateParserFormatter.ɵfac = function NgbDateParserFormatter_Factory(t) { return new (t || NgbDateParserFormatter)(); };\r\nNgbDateParserFormatter.ɵprov = ɵɵdefineInjectable({ factory: NGB_DATEPICKER_PARSER_FORMATTER_FACTORY, token: NgbDateParserFormatter, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDateParserFormatter, [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: NGB_DATEPICKER_PARSER_FORMATTER_FACTORY }]\n }], null, null); })();\r\nclass NgbDateISOParserFormatter extends NgbDateParserFormatter {\r\n parse(value) {\r\n if (value != null) {\r\n const dateParts = value.trim().split('-');\r\n if (dateParts.length === 1 && isNumber(dateParts[0])) {\r\n return { year: toInteger(dateParts[0]), month: null, day: null };\r\n }\r\n else if (dateParts.length === 2 && isNumber(dateParts[0]) && isNumber(dateParts[1])) {\r\n return { year: toInteger(dateParts[0]), month: toInteger(dateParts[1]), day: null };\r\n }\r\n else if (dateParts.length === 3 && isNumber(dateParts[0]) && isNumber(dateParts[1]) && isNumber(dateParts[2])) {\r\n return { year: toInteger(dateParts[0]), month: toInteger(dateParts[1]), day: toInteger(dateParts[2]) };\r\n }\r\n }\r\n return null;\r\n }\r\n format(date) {\r\n return date ?\r\n `${date.year}-${isNumber(date.month) ? padNumber(date.month) : ''}-${isNumber(date.day) ? padNumber(date.day) : ''}` :\r\n '';\r\n }\r\n}\nNgbDateISOParserFormatter.ɵfac = /*@__PURE__*/ function () { let ɵNgbDateISOParserFormatter_BaseFactory; return function NgbDateISOParserFormatter_Factory(t) { return (ɵNgbDateISOParserFormatter_BaseFactory || (ɵNgbDateISOParserFormatter_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbDateISOParserFormatter)))(t || NgbDateISOParserFormatter); }; }();\nNgbDateISOParserFormatter.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbDateISOParserFormatter, factory: NgbDateISOParserFormatter.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDateISOParserFormatter, [{\n type: Injectable\n }], null, null); })();\n\n/**\r\n * A configuration service for the [`NgbDatepickerInput`](#/components/datepicker/api#NgbDatepicker) component.\r\n *\r\n * You can inject this service, typically in your root component, and customize the values of its properties in\r\n * order to provide default values for all the datepicker inputs used in the application.\r\n *\r\n * @since 5.2.0\r\n */\r\nclass NgbInputDatepickerConfig extends NgbDatepickerConfig {\r\n constructor() {\r\n super(...arguments);\r\n this.autoClose = true;\r\n this.placement = ['bottom-left', 'bottom-right', 'top-left', 'top-right'];\r\n this.restoreFocus = true;\r\n }\r\n}\nNgbInputDatepickerConfig.ɵfac = /*@__PURE__*/ function () { let ɵNgbInputDatepickerConfig_BaseFactory; return function NgbInputDatepickerConfig_Factory(t) { return (ɵNgbInputDatepickerConfig_BaseFactory || (ɵNgbInputDatepickerConfig_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbInputDatepickerConfig)))(t || NgbInputDatepickerConfig); }; }();\r\nNgbInputDatepickerConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgbInputDatepickerConfig_Factory() { return new NgbInputDatepickerConfig(); }, token: NgbInputDatepickerConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbInputDatepickerConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], null, null); })();\n\n/**\r\n * A directive that allows to stick a datepicker popup to an input field.\r\n *\r\n * Manages interaction with the input field itself, does value formatting and provides forms integration.\r\n */\r\nclass NgbInputDatepicker {\r\n constructor(_parserFormatter, _elRef, _vcRef, _renderer, _cfr, _ngZone, _calendar, _dateAdapter, _document, _changeDetector, config) {\r\n this._parserFormatter = _parserFormatter;\r\n this._elRef = _elRef;\r\n this._vcRef = _vcRef;\r\n this._renderer = _renderer;\r\n this._cfr = _cfr;\r\n this._ngZone = _ngZone;\r\n this._calendar = _calendar;\r\n this._dateAdapter = _dateAdapter;\r\n this._document = _document;\r\n this._changeDetector = _changeDetector;\r\n this._cRef = null;\r\n this._disabled = false;\r\n this._elWithFocus = null;\r\n this._model = null;\r\n /**\r\n * An event emitted when user selects a date using keyboard or mouse.\r\n *\r\n * The payload of the event is currently selected `NgbDate`.\r\n *\r\n * @since 1.1.1\r\n */\r\n this.dateSelect = new EventEmitter();\r\n /**\r\n * Event emitted right after the navigation happens and displayed month changes.\r\n *\r\n * See [`NgbDatepickerNavigateEvent`](#/components/datepicker/api#NgbDatepickerNavigateEvent) for the payload info.\r\n */\r\n this.navigate = new EventEmitter();\r\n /**\r\n * An event fired after closing datepicker window.\r\n *\r\n * @since 4.2.0\r\n */\r\n this.closed = new EventEmitter();\r\n this._onChange = (_) => { };\r\n this._onTouched = () => { };\r\n this._validatorChange = () => { };\r\n ['autoClose', 'container', 'positionTarget', 'placement'].forEach(input => this[input] = config[input]);\r\n this._zoneSubscription = _ngZone.onStable.subscribe(() => this._updatePopupPosition());\r\n }\r\n /**\r\n * If `true`, weekdays will be displayed.\r\n *\r\n * @deprecated 9.1.0, please use 'weekdays' instead\r\n */\r\n set showWeekdays(weekdays) {\r\n this.weekdays = weekdays;\r\n this._showWeekdays = weekdays;\r\n }\r\n get showWeekdays() { return this._showWeekdays; }\r\n get disabled() {\r\n return this._disabled;\r\n }\r\n set disabled(value) {\r\n this._disabled = value === '' || (value && value !== 'false');\r\n if (this.isOpen()) {\r\n this._cRef.instance.setDisabledState(this._disabled);\r\n }\r\n }\r\n registerOnChange(fn) { this._onChange = fn; }\r\n registerOnTouched(fn) { this._onTouched = fn; }\r\n registerOnValidatorChange(fn) { this._validatorChange = fn; }\r\n setDisabledState(isDisabled) { this.disabled = isDisabled; }\r\n validate(c) {\r\n const { value } = c;\r\n if (value != null) {\r\n const ngbDate = this._fromDateStruct(this._dateAdapter.fromModel(value));\r\n if (!ngbDate) {\r\n return { 'ngbDate': { invalid: value } };\r\n }\r\n if (this.minDate && ngbDate.before(NgbDate.from(this.minDate))) {\r\n return { 'ngbDate': { minDate: { minDate: this.minDate, actual: value } } };\r\n }\r\n if (this.maxDate && ngbDate.after(NgbDate.from(this.maxDate))) {\r\n return { 'ngbDate': { maxDate: { maxDate: this.maxDate, actual: value } } };\r\n }\r\n }\r\n return null;\r\n }\r\n writeValue(value) {\r\n this._model = this._fromDateStruct(this._dateAdapter.fromModel(value));\r\n this._writeModelValue(this._model);\r\n }\r\n manualDateChange(value, updateView = false) {\r\n const inputValueChanged = value !== this._inputValue;\r\n if (inputValueChanged) {\r\n this._inputValue = value;\r\n this._model = this._fromDateStruct(this._parserFormatter.parse(value));\r\n }\r\n if (inputValueChanged || !updateView) {\r\n this._onChange(this._model ? this._dateAdapter.toModel(this._model) : (value === '' ? null : value));\r\n }\r\n if (updateView && this._model) {\r\n this._writeModelValue(this._model);\r\n }\r\n }\r\n isOpen() { return !!this._cRef; }\r\n /**\r\n * Opens the datepicker popup.\r\n *\r\n * If the related form control contains a valid date, the corresponding month will be opened.\r\n */\r\n open() {\r\n if (!this.isOpen()) {\r\n const cf = this._cfr.resolveComponentFactory(NgbDatepicker);\r\n this._cRef = this._vcRef.createComponent(cf);\r\n this._applyPopupStyling(this._cRef.location.nativeElement);\r\n this._applyDatepickerInputs(this._cRef.instance);\r\n this._subscribeForDatepickerOutputs(this._cRef.instance);\r\n this._cRef.instance.ngOnInit();\r\n this._cRef.instance.writeValue(this._dateAdapter.toModel(this._model));\r\n // date selection event handling\r\n this._cRef.instance.registerOnChange((selectedDate) => {\r\n this.writeValue(selectedDate);\r\n this._onChange(selectedDate);\r\n this._onTouched();\r\n });\r\n this._cRef.changeDetectorRef.detectChanges();\r\n this._cRef.instance.setDisabledState(this.disabled);\r\n if (this.container === 'body') {\r\n this._document.querySelector(this.container).appendChild(this._cRef.location.nativeElement);\r\n }\r\n // focus handling\r\n this._elWithFocus = this._document.activeElement;\r\n ngbFocusTrap(this._ngZone, this._cRef.location.nativeElement, this.closed, true);\r\n this._cRef.instance.focus();\r\n ngbAutoClose(this._ngZone, this._document, this.autoClose, () => this.close(), this.closed, [], [this._elRef.nativeElement, this._cRef.location.nativeElement]);\r\n }\r\n }\r\n /**\r\n * Closes the datepicker popup.\r\n */\r\n close() {\r\n if (this.isOpen()) {\r\n this._vcRef.remove(this._vcRef.indexOf(this._cRef.hostView));\r\n this._cRef = null;\r\n this.closed.emit();\r\n this._changeDetector.markForCheck();\r\n // restore focus\r\n let elementToFocus = this._elWithFocus;\r\n if (isString(this.restoreFocus)) {\r\n elementToFocus = this._document.querySelector(this.restoreFocus);\r\n }\r\n else if (this.restoreFocus !== undefined) {\r\n elementToFocus = this.restoreFocus;\r\n }\r\n // in IE document.activeElement can contain an object without 'focus()' sometimes\r\n if (elementToFocus && elementToFocus['focus']) {\r\n elementToFocus.focus();\r\n }\r\n else {\r\n this._document.body.focus();\r\n }\r\n }\r\n }\r\n /**\r\n * Toggles the datepicker popup.\r\n */\r\n toggle() {\r\n if (this.isOpen()) {\r\n this.close();\r\n }\r\n else {\r\n this.open();\r\n }\r\n }\r\n /**\r\n * Navigates to the provided date.\r\n *\r\n * With the default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\r\n * If nothing or invalid date provided calendar will open current month.\r\n *\r\n * Use the `[startDate]` input as an alternative.\r\n */\r\n navigateTo(date) {\r\n if (this.isOpen()) {\r\n this._cRef.instance.navigateTo(date);\r\n }\r\n }\r\n onBlur() { this._onTouched(); }\r\n onFocus() { this._elWithFocus = this._elRef.nativeElement; }\r\n ngOnChanges(changes) {\r\n if (changes['minDate'] || changes['maxDate']) {\r\n this._validatorChange();\r\n if (this.isOpen()) {\r\n if (changes['minDate']) {\r\n this._cRef.instance.minDate = this.minDate;\r\n }\r\n if (changes['maxDate']) {\r\n this._cRef.instance.maxDate = this.maxDate;\r\n }\r\n this._cRef.instance.ngOnChanges(changes);\r\n }\r\n }\r\n if (changes['datepickerClass']) {\r\n const { currentValue, previousValue } = changes['datepickerClass'];\r\n this._applyPopupClass(currentValue, previousValue);\r\n }\r\n }\r\n ngOnDestroy() {\r\n this.close();\r\n this._zoneSubscription.unsubscribe();\r\n }\r\n _applyDatepickerInputs(datepickerInstance) {\r\n ['dayTemplate', 'dayTemplateData', 'displayMonths', 'firstDayOfWeek', 'footerTemplate', 'markDisabled', 'minDate',\r\n 'maxDate', 'navigation', 'outsideDays', 'showNavigation', 'showWeekNumbers', 'weekdays']\r\n .forEach((optionName) => {\r\n if (this[optionName] !== undefined) {\r\n datepickerInstance[optionName] = this[optionName];\r\n }\r\n });\r\n datepickerInstance.startDate = this.startDate || this._model;\r\n }\r\n _applyPopupClass(newClass, oldClass) {\r\n var _a;\r\n const popupEl = (_a = this._cRef) === null || _a === void 0 ? void 0 : _a.location.nativeElement;\r\n if (popupEl) {\r\n if (newClass) {\r\n this._renderer.addClass(popupEl, newClass);\r\n }\r\n if (oldClass) {\r\n this._renderer.removeClass(popupEl, oldClass);\r\n }\r\n }\r\n }\r\n _applyPopupStyling(nativeElement) {\r\n this._renderer.addClass(nativeElement, 'dropdown-menu');\r\n this._renderer.addClass(nativeElement, 'show');\r\n if (this.container === 'body') {\r\n this._renderer.addClass(nativeElement, 'ngb-dp-body');\r\n }\r\n this._applyPopupClass(this.datepickerClass);\r\n }\r\n _subscribeForDatepickerOutputs(datepickerInstance) {\r\n datepickerInstance.navigate.subscribe(navigateEvent => this.navigate.emit(navigateEvent));\r\n datepickerInstance.dateSelect.subscribe(date => {\r\n this.dateSelect.emit(date);\r\n if (this.autoClose === true || this.autoClose === 'inside') {\r\n this.close();\r\n }\r\n });\r\n }\r\n _writeModelValue(model) {\r\n const value = this._parserFormatter.format(model);\r\n this._inputValue = value;\r\n this._renderer.setProperty(this._elRef.nativeElement, 'value', value);\r\n if (this.isOpen()) {\r\n this._cRef.instance.writeValue(this._dateAdapter.toModel(model));\r\n this._onTouched();\r\n }\r\n }\r\n _fromDateStruct(date) {\r\n const ngbDate = date ? new NgbDate(date.year, date.month, date.day) : null;\r\n return this._calendar.isValid(ngbDate) ? ngbDate : null;\r\n }\r\n _updatePopupPosition() {\r\n if (!this._cRef) {\r\n return;\r\n }\r\n let hostElement;\r\n if (isString(this.positionTarget)) {\r\n hostElement = this._document.querySelector(this.positionTarget);\r\n }\r\n else if (this.positionTarget instanceof HTMLElement) {\r\n hostElement = this.positionTarget;\r\n }\r\n else {\r\n hostElement = this._elRef.nativeElement;\r\n }\r\n if (this.positionTarget && !hostElement) {\r\n throw new Error('ngbDatepicker could not find element declared in [positionTarget] to position against.');\r\n }\r\n positionElements(hostElement, this._cRef.location.nativeElement, this.placement, this.container === 'body');\r\n }\r\n}\nNgbInputDatepicker.ɵfac = function NgbInputDatepicker_Factory(t) { return new (t || NgbInputDatepicker)(ɵngcc0.ɵɵdirectiveInject(NgbDateParserFormatter), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(NgbCalendar), ɵngcc0.ɵɵdirectiveInject(NgbDateAdapter), ɵngcc0.ɵɵdirectiveInject(DOCUMENT), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(NgbInputDatepickerConfig)); };\nNgbInputDatepicker.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbInputDatepicker, selectors: [[\"input\", \"ngbDatepicker\", \"\"]], hostVars: 1, hostBindings: function NgbInputDatepicker_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"input\", function NgbInputDatepicker_input_HostBindingHandler($event) { return ctx.manualDateChange($event.target.value); })(\"change\", function NgbInputDatepicker_change_HostBindingHandler($event) { return ctx.manualDateChange($event.target.value, true); })(\"focus\", function NgbInputDatepicker_focus_HostBindingHandler() { return ctx.onFocus(); })(\"blur\", function NgbInputDatepicker_blur_HostBindingHandler() { return ctx.onBlur(); });\n } if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"disabled\", ctx.disabled);\n } }, inputs: { showWeekdays: \"showWeekdays\", weekdays: \"weekdays\", disabled: \"disabled\", autoClose: \"autoClose\", datepickerClass: \"datepickerClass\", dayTemplate: \"dayTemplate\", dayTemplateData: \"dayTemplateData\", displayMonths: \"displayMonths\", firstDayOfWeek: \"firstDayOfWeek\", footerTemplate: \"footerTemplate\", markDisabled: \"markDisabled\", minDate: \"minDate\", maxDate: \"maxDate\", navigation: \"navigation\", outsideDays: \"outsideDays\", placement: \"placement\", restoreFocus: \"restoreFocus\", showWeekNumbers: \"showWeekNumbers\", startDate: \"startDate\", container: \"container\", positionTarget: \"positionTarget\" }, outputs: { dateSelect: \"dateSelect\", navigate: \"navigate\", closed: \"closed\" }, exportAs: [\"ngbDatepicker\"], features: [ɵngcc0.ɵɵProvidersFeature([\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbInputDatepicker), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => NgbInputDatepicker), multi: true },\n { provide: NgbDatepickerConfig, useExisting: NgbInputDatepickerConfig }\n ]), ɵngcc0.ɵɵNgOnChangesFeature] });\r\nNgbInputDatepicker.ctorParameters = () => [\r\n { type: NgbDateParserFormatter },\r\n { type: ElementRef },\r\n { type: ViewContainerRef },\r\n { type: Renderer2 },\r\n { type: ComponentFactoryResolver },\r\n { type: NgZone },\r\n { type: NgbCalendar },\r\n { type: NgbDateAdapter },\r\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\r\n { type: ChangeDetectorRef },\r\n { type: NgbInputDatepickerConfig }\r\n];\r\nNgbInputDatepicker.propDecorators = {\r\n autoClose: [{ type: Input }],\r\n datepickerClass: [{ type: Input }],\r\n dayTemplate: [{ type: Input }],\r\n dayTemplateData: [{ type: Input }],\r\n displayMonths: [{ type: Input }],\r\n firstDayOfWeek: [{ type: Input }],\r\n footerTemplate: [{ type: Input }],\r\n markDisabled: [{ type: Input }],\r\n minDate: [{ type: Input }],\r\n maxDate: [{ type: Input }],\r\n navigation: [{ type: Input }],\r\n outsideDays: [{ type: Input }],\r\n placement: [{ type: Input }],\r\n restoreFocus: [{ type: Input }],\r\n showWeekdays: [{ type: Input }],\r\n showWeekNumbers: [{ type: Input }],\r\n startDate: [{ type: Input }],\r\n container: [{ type: Input }],\r\n positionTarget: [{ type: Input }],\r\n weekdays: [{ type: Input }],\r\n dateSelect: [{ type: Output }],\r\n navigate: [{ type: Output }],\r\n closed: [{ type: Output }],\r\n disabled: [{ type: Input }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbInputDatepicker, [{\n type: Directive,\n args: [{\n selector: 'input[ngbDatepicker]',\n exportAs: 'ngbDatepicker',\n host: {\n '(input)': 'manualDateChange($event.target.value)',\n '(change)': 'manualDateChange($event.target.value, true)',\n '(focus)': 'onFocus()',\n '(blur)': 'onBlur()',\n '[disabled]': 'disabled'\n },\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbInputDatepicker), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => NgbInputDatepicker), multi: true },\n { provide: NgbDatepickerConfig, useExisting: NgbInputDatepickerConfig }\n ]\n }]\n }], function () { return [{ type: NgbDateParserFormatter }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.ViewContainerRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ComponentFactoryResolver }, { type: ɵngcc0.NgZone }, { type: NgbCalendar }, { type: NgbDateAdapter }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ɵngcc0.ChangeDetectorRef }, { type: NgbInputDatepickerConfig }]; }, { dateSelect: [{\n type: Output\n }], navigate: [{\n type: Output\n }], closed: [{\n type: Output\n }], showWeekdays: [{\n type: Input\n }], weekdays: [{\n type: Input\n }], disabled: [{\n type: Input\n }], autoClose: [{\n type: Input\n }], datepickerClass: [{\n type: Input\n }], dayTemplate: [{\n type: Input\n }], dayTemplateData: [{\n type: Input\n }], displayMonths: [{\n type: Input\n }], firstDayOfWeek: [{\n type: Input\n }], footerTemplate: [{\n type: Input\n }], markDisabled: [{\n type: Input\n }], minDate: [{\n type: Input\n }], maxDate: [{\n type: Input\n }], navigation: [{\n type: Input\n }], outsideDays: [{\n type: Input\n }], placement: [{\n type: Input\n }], restoreFocus: [{\n type: Input\n }], showWeekNumbers: [{\n type: Input\n }], startDate: [{\n type: Input\n }], container: [{\n type: Input\n }], positionTarget: [{\n type: Input\n }] }); })();\n\nclass NgbDatepickerDayView {\r\n constructor(i18n) {\r\n this.i18n = i18n;\r\n }\r\n isMuted() { return !this.selected && (this.date.month !== this.currentMonth || this.disabled); }\r\n}\nNgbDatepickerDayView.ɵfac = function NgbDatepickerDayView_Factory(t) { return new (t || NgbDatepickerDayView)(ɵngcc0.ɵɵdirectiveInject(NgbDatepickerI18n)); };\nNgbDatepickerDayView.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbDatepickerDayView, selectors: [[\"\", \"ngbDatepickerDayView\", \"\"]], hostAttrs: [1, \"btn-light\"], hostVars: 10, hostBindings: function NgbDatepickerDayView_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"bg-primary\", ctx.selected)(\"text-white\", ctx.selected)(\"text-muted\", ctx.isMuted())(\"outside\", ctx.isMuted())(\"active\", ctx.focused);\n } }, inputs: { currentMonth: \"currentMonth\", date: \"date\", disabled: \"disabled\", focused: \"focused\", selected: \"selected\" }, attrs: _c20, decls: 1, vars: 1, template: function NgbDatepickerDayView_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n } if (rf & 2) {\n ɵngcc0.ɵɵtextInterpolate(ctx.i18n.getDayNumerals(ctx.date));\n } }, styles: [\"[ngbDatepickerDayView]{background:transparent;border-radius:.25rem;height:2rem;line-height:2rem;text-align:center;width:2rem}[ngbDatepickerDayView].outside{opacity:.5}\"], encapsulation: 2, changeDetection: 0 });\r\nNgbDatepickerDayView.ctorParameters = () => [\r\n { type: NgbDatepickerI18n }\r\n];\r\nNgbDatepickerDayView.propDecorators = {\r\n currentMonth: [{ type: Input }],\r\n date: [{ type: Input }],\r\n disabled: [{ type: Input }],\r\n focused: [{ type: Input }],\r\n selected: [{ type: Input }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerDayView, [{\n type: Component,\n args: [{\n selector: '[ngbDatepickerDayView]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'btn-light',\n '[class.bg-primary]': 'selected',\n '[class.text-white]': 'selected',\n '[class.text-muted]': 'isMuted()',\n '[class.outside]': 'isMuted()',\n '[class.active]': 'focused'\n },\n template: `{{ i18n.getDayNumerals(date) }}`,\n styles: [\"[ngbDatepickerDayView]{background:transparent;border-radius:.25rem;height:2rem;line-height:2rem;text-align:center;width:2rem}[ngbDatepickerDayView].outside{opacity:.5}\"]\n }]\n }], function () { return [{ type: NgbDatepickerI18n }]; }, { currentMonth: [{\n type: Input\n }], date: [{\n type: Input\n }], disabled: [{\n type: Input\n }], focused: [{\n type: Input\n }], selected: [{\n type: Input\n }] }); })();\n\nclass NgbDatepickerNavigationSelect {\r\n constructor(i18n, _renderer) {\r\n this.i18n = i18n;\r\n this._renderer = _renderer;\r\n this.select = new EventEmitter();\r\n this._month = -1;\r\n this._year = -1;\r\n }\r\n changeMonth(month) { this.select.emit(new NgbDate(this.date.year, toInteger(month), 1)); }\r\n changeYear(year) { this.select.emit(new NgbDate(toInteger(year), this.date.month, 1)); }\r\n ngAfterViewChecked() {\r\n if (this.date) {\r\n if (this.date.month !== this._month) {\r\n this._month = this.date.month;\r\n this._renderer.setProperty(this.monthSelect.nativeElement, 'value', this._month);\r\n }\r\n if (this.date.year !== this._year) {\r\n this._year = this.date.year;\r\n this._renderer.setProperty(this.yearSelect.nativeElement, 'value', this._year);\r\n }\r\n }\r\n }\r\n}\nNgbDatepickerNavigationSelect.ɵfac = function NgbDatepickerNavigationSelect_Factory(t) { return new (t || NgbDatepickerNavigationSelect)(ɵngcc0.ɵɵdirectiveInject(NgbDatepickerI18n), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nNgbDatepickerNavigationSelect.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbDatepickerNavigationSelect, selectors: [[\"ngb-datepicker-navigation-select\"]], viewQuery: function NgbDatepickerNavigationSelect_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c21, 7, ElementRef);\n ɵngcc0.ɵɵviewQuery(_c22, 7, ElementRef);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.monthSelect = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.yearSelect = _t.first);\n } }, inputs: { date: \"date\", disabled: \"disabled\", months: \"months\", years: \"years\" }, outputs: { select: \"select\" }, decls: 6, vars: 4, consts: function () { let i18n_23; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_datepicker_select_month$$FESM2015_NG_BOOTSTRAP_JS_24 = goog.getMsg(\"Select month\");\n i18n_23 = MSG_EXTERNAL_ngb_datepicker_select_month$$FESM2015_NG_BOOTSTRAP_JS_24;\n }\n else {\n i18n_23 = $localize `:@@ngb.datepicker.select-month␟1dbc84807f35518112f62e5775d1daebd3d8462b␟2253869508135064750:Select month`;\n } let i18n_25; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_datepicker_select_month$$FESM2015_NG_BOOTSTRAP_JS_26 = goog.getMsg(\"Select month\");\n i18n_25 = MSG_EXTERNAL_ngb_datepicker_select_month$$FESM2015_NG_BOOTSTRAP_JS_26;\n }\n else {\n i18n_25 = $localize `:@@ngb.datepicker.select-month␟1dbc84807f35518112f62e5775d1daebd3d8462b␟2253869508135064750:Select month`;\n } let i18n_27; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_datepicker_select_year$$FESM2015_NG_BOOTSTRAP_JS_28 = goog.getMsg(\"Select year\");\n i18n_27 = MSG_EXTERNAL_ngb_datepicker_select_year$$FESM2015_NG_BOOTSTRAP_JS_28;\n }\n else {\n i18n_27 = $localize `:@@ngb.datepicker.select-year␟8ceb09d002bf0c5d1cac171dfbffe1805d2b3962␟8852264961585484321:Select year`;\n } let i18n_29; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_datepicker_select_year$$FESM2015_NG_BOOTSTRAP_JS_30 = goog.getMsg(\"Select year\");\n i18n_29 = MSG_EXTERNAL_ngb_datepicker_select_year$$FESM2015_NG_BOOTSTRAP_JS_30;\n }\n else {\n i18n_29 = $localize `:@@ngb.datepicker.select-year␟8ceb09d002bf0c5d1cac171dfbffe1805d2b3962␟8852264961585484321:Select year`;\n } return [[\"aria-label\", i18n_23, \"title\", i18n_25, 1, \"custom-select\", 3, \"disabled\", \"change\"], [\"month\", \"\"], [3, \"value\", 4, \"ngFor\", \"ngForOf\"], [\"aria-label\", i18n_27, \"title\", i18n_29, 1, \"custom-select\", 3, \"disabled\", \"change\"], [\"year\", \"\"], [3, \"value\"]]; }, template: function NgbDatepickerNavigationSelect_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"select\", 0, 1);\n ɵngcc0.ɵɵlistener(\"change\", function NgbDatepickerNavigationSelect_Template_select_change_0_listener($event) { return ctx.changeMonth($event.target.value); });\n ɵngcc0.ɵɵtemplate(2, NgbDatepickerNavigationSelect_option_2_Template, 2, 3, \"option\", 2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(3, \"select\", 3, 4);\n ɵngcc0.ɵɵlistener(\"change\", function NgbDatepickerNavigationSelect_Template_select_change_3_listener($event) { return ctx.changeYear($event.target.value); });\n ɵngcc0.ɵɵtemplate(5, NgbDatepickerNavigationSelect_option_5_Template, 2, 2, \"option\", 2);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"disabled\", ctx.disabled);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.months);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx.disabled);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.years);\n } }, directives: [ɵngcc1.NgForOf, ɵngcc2.NgSelectOption, ɵngcc2.ɵNgSelectMultipleOption], styles: [\"ngb-datepicker-navigation-select>.custom-select{flex:1 1 auto;font-size:.875rem;height:1.85rem;padding:0 .5rem}ngb-datepicker-navigation-select>.custom-select:focus{z-index:1}ngb-datepicker-navigation-select>.custom-select::-ms-value{background-color:transparent!important}\"], encapsulation: 2, changeDetection: 0 });\r\nNgbDatepickerNavigationSelect.ctorParameters = () => [\r\n { type: NgbDatepickerI18n },\r\n { type: Renderer2 }\r\n];\r\nNgbDatepickerNavigationSelect.propDecorators = {\r\n date: [{ type: Input }],\r\n disabled: [{ type: Input }],\r\n months: [{ type: Input }],\r\n years: [{ type: Input }],\r\n select: [{ type: Output }],\r\n monthSelect: [{ type: ViewChild, args: ['month', { static: true, read: ElementRef },] }],\r\n yearSelect: [{ type: ViewChild, args: ['year', { static: true, read: ElementRef },] }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerNavigationSelect, [{\n type: Component,\n args: [{\n selector: 'ngb-datepicker-navigation-select',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `\r\n \r\n `,\n styles: [\"ngb-datepicker-navigation-select>.custom-select{flex:1 1 auto;font-size:.875rem;height:1.85rem;padding:0 .5rem}ngb-datepicker-navigation-select>.custom-select:focus{z-index:1}ngb-datepicker-navigation-select>.custom-select::-ms-value{background-color:transparent!important}\"]\n }]\n }], function () { return [{ type: NgbDatepickerI18n }, { type: ɵngcc0.Renderer2 }]; }, { select: [{\n type: Output\n }], date: [{\n type: Input\n }], disabled: [{\n type: Input\n }], months: [{\n type: Input\n }], years: [{\n type: Input\n }], monthSelect: [{\n type: ViewChild,\n args: ['month', { static: true, read: ElementRef }]\n }], yearSelect: [{\n type: ViewChild,\n args: ['year', { static: true, read: ElementRef }]\n }] }); })();\n\nclass NgbCalendarHijri extends NgbCalendar {\r\n getDaysPerWeek() { return 7; }\r\n getMonths() { return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]; }\r\n getWeeksPerMonth() { return 6; }\r\n getNext(date, period = 'd', number = 1) {\r\n date = new NgbDate(date.year, date.month, date.day);\r\n switch (period) {\r\n case 'y':\r\n date = this._setYear(date, date.year + number);\r\n date.month = 1;\r\n date.day = 1;\r\n return date;\r\n case 'm':\r\n date = this._setMonth(date, date.month + number);\r\n date.day = 1;\r\n return date;\r\n case 'd':\r\n return this._setDay(date, date.day + number);\r\n default:\r\n return date;\r\n }\r\n }\r\n getPrev(date, period = 'd', number = 1) { return this.getNext(date, period, -number); }\r\n getWeekday(date) {\r\n const day = this.toGregorian(date).getDay();\r\n // in JS Date Sun=0, in ISO 8601 Sun=7\r\n return day === 0 ? 7 : day;\r\n }\r\n getWeekNumber(week, firstDayOfWeek) {\r\n // in JS Date Sun=0, in ISO 8601 Sun=7\r\n if (firstDayOfWeek === 7) {\r\n firstDayOfWeek = 0;\r\n }\r\n const thursdayIndex = (4 + 7 - firstDayOfWeek) % 7;\r\n const date = week[thursdayIndex];\r\n const jsDate = this.toGregorian(date);\r\n jsDate.setDate(jsDate.getDate() + 4 - (jsDate.getDay() || 7)); // Thursday\r\n const time = jsDate.getTime();\r\n const MuhDate = this.toGregorian(new NgbDate(date.year, 1, 1)); // Compare with Muharram 1\r\n return Math.floor(Math.round((time - MuhDate.getTime()) / 86400000) / 7) + 1;\r\n }\r\n getToday() { return this.fromGregorian(new Date()); }\r\n isValid(date) {\r\n return date != null && isNumber(date.year) && isNumber(date.month) && isNumber(date.day) &&\r\n !isNaN(this.toGregorian(date).getTime());\r\n }\r\n _setDay(date, day) {\r\n day = +day;\r\n let mDays = this.getDaysPerMonth(date.month, date.year);\r\n if (day <= 0) {\r\n while (day <= 0) {\r\n date = this._setMonth(date, date.month - 1);\r\n mDays = this.getDaysPerMonth(date.month, date.year);\r\n day += mDays;\r\n }\r\n }\r\n else if (day > mDays) {\r\n while (day > mDays) {\r\n day -= mDays;\r\n date = this._setMonth(date, date.month + 1);\r\n mDays = this.getDaysPerMonth(date.month, date.year);\r\n }\r\n }\r\n date.day = day;\r\n return date;\r\n }\r\n _setMonth(date, month) {\r\n month = +month;\r\n date.year = date.year + Math.floor((month - 1) / 12);\r\n date.month = Math.floor(((month - 1) % 12 + 12) % 12) + 1;\r\n return date;\r\n }\r\n _setYear(date, year) {\r\n date.year = +year;\r\n return date;\r\n }\r\n}\nNgbCalendarHijri.ɵfac = /*@__PURE__*/ function () { let ɵNgbCalendarHijri_BaseFactory; return function NgbCalendarHijri_Factory(t) { return (ɵNgbCalendarHijri_BaseFactory || (ɵNgbCalendarHijri_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbCalendarHijri)))(t || NgbCalendarHijri); }; }();\nNgbCalendarHijri.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbCalendarHijri, factory: NgbCalendarHijri.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCalendarHijri, [{\n type: Injectable\n }], null, null); })();\n\n/**\r\n * Checks if islamic year is a leap year\r\n */\r\nfunction isIslamicLeapYear(hYear) {\r\n return (14 + 11 * hYear) % 30 < 11;\r\n}\r\n/**\r\n * Checks if gregorian years is a leap year\r\n */\r\nfunction isGregorianLeapYear(gDate) {\r\n const year = gDate.getFullYear();\r\n return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\r\n}\r\n/**\r\n * Returns the start of Hijri Month.\r\n * `hMonth` is 0 for Muharram, 1 for Safar, etc.\r\n * `hYear` is any Hijri hYear.\r\n */\r\nfunction getIslamicMonthStart(hYear, hMonth) {\r\n return Math.ceil(29.5 * hMonth) + (hYear - 1) * 354 + Math.floor((3 + 11 * hYear) / 30.0);\r\n}\r\n/**\r\n * Returns the start of Hijri year.\r\n * `year` is any Hijri year.\r\n */\r\nfunction getIslamicYearStart(year) {\r\n return (year - 1) * 354 + Math.floor((3 + 11 * year) / 30.0);\r\n}\r\nfunction mod(a, b) {\r\n return a - b * Math.floor(a / b);\r\n}\r\n/**\r\n * The civil calendar is one type of Hijri calendars used in islamic countries.\r\n * Uses a fixed cycle of alternating 29- and 30-day months,\r\n * with a leap day added to the last month of 11 out of every 30 years.\r\n * http://cldr.unicode.org/development/development-process/design-proposals/islamic-calendar-types\r\n * All the calculations here are based on the equations from \"Calendrical Calculations\" By Edward M. Reingold, Nachum\r\n * Dershowitz.\r\n */\r\nconst GREGORIAN_EPOCH = 1721425.5;\r\nconst ISLAMIC_EPOCH = 1948439.5;\r\nclass NgbCalendarIslamicCivil extends NgbCalendarHijri {\r\n /**\r\n * Returns the equivalent islamic(civil) date value for a give input Gregorian date.\r\n * `gDate` is a JS Date to be converted to Hijri.\r\n */\r\n fromGregorian(gDate) {\r\n const gYear = gDate.getFullYear(), gMonth = gDate.getMonth(), gDay = gDate.getDate();\r\n let julianDay = GREGORIAN_EPOCH - 1 + 365 * (gYear - 1) + Math.floor((gYear - 1) / 4) +\r\n -Math.floor((gYear - 1) / 100) + Math.floor((gYear - 1) / 400) +\r\n Math.floor((367 * (gMonth + 1) - 362) / 12 + (gMonth + 1 <= 2 ? 0 : isGregorianLeapYear(gDate) ? -1 : -2) + gDay);\r\n julianDay = Math.floor(julianDay) + 0.5;\r\n const days = julianDay - ISLAMIC_EPOCH;\r\n const hYear = Math.floor((30 * days + 10646) / 10631.0);\r\n let hMonth = Math.ceil((days - 29 - getIslamicYearStart(hYear)) / 29.5);\r\n hMonth = Math.min(hMonth, 11);\r\n const hDay = Math.ceil(days - getIslamicMonthStart(hYear, hMonth)) + 1;\r\n return new NgbDate(hYear, hMonth + 1, hDay);\r\n }\r\n /**\r\n * Returns the equivalent JS date value for a give input islamic(civil) date.\r\n * `hDate` is an islamic(civil) date to be converted to Gregorian.\r\n */\r\n toGregorian(hDate) {\r\n const hYear = hDate.year;\r\n const hMonth = hDate.month - 1;\r\n const hDay = hDate.day;\r\n const julianDay = hDay + Math.ceil(29.5 * hMonth) + (hYear - 1) * 354 + Math.floor((3 + 11 * hYear) / 30) + ISLAMIC_EPOCH - 1;\r\n const wjd = Math.floor(julianDay - 0.5) + 0.5, depoch = wjd - GREGORIAN_EPOCH, quadricent = Math.floor(depoch / 146097), dqc = mod(depoch, 146097), cent = Math.floor(dqc / 36524), dcent = mod(dqc, 36524), quad = Math.floor(dcent / 1461), dquad = mod(dcent, 1461), yindex = Math.floor(dquad / 365);\r\n let year = quadricent * 400 + cent * 100 + quad * 4 + yindex;\r\n if (!(cent === 4 || yindex === 4)) {\r\n year++;\r\n }\r\n const gYearStart = GREGORIAN_EPOCH + 365 * (year - 1) + Math.floor((year - 1) / 4) - Math.floor((year - 1) / 100) +\r\n Math.floor((year - 1) / 400);\r\n const yearday = wjd - gYearStart;\r\n const tjd = GREGORIAN_EPOCH - 1 + 365 * (year - 1) + Math.floor((year - 1) / 4) - Math.floor((year - 1) / 100) +\r\n Math.floor((year - 1) / 400) + Math.floor(739 / 12 + (isGregorianLeapYear(new Date(year, 3, 1)) ? -1 : -2) + 1);\r\n const leapadj = wjd < tjd ? 0 : isGregorianLeapYear(new Date(year, 3, 1)) ? 1 : 2;\r\n const month = Math.floor(((yearday + leapadj) * 12 + 373) / 367);\r\n const tjd2 = GREGORIAN_EPOCH - 1 + 365 * (year - 1) + Math.floor((year - 1) / 4) - Math.floor((year - 1) / 100) +\r\n Math.floor((year - 1) / 400) +\r\n Math.floor((367 * month - 362) / 12 + (month <= 2 ? 0 : isGregorianLeapYear(new Date(year, month - 1, 1)) ? -1 : -2) +\r\n 1);\r\n const day = wjd - tjd2 + 1;\r\n return new Date(year, month - 1, day);\r\n }\r\n /**\r\n * Returns the number of days in a specific Hijri month.\r\n * `month` is 1 for Muharram, 2 for Safar, etc.\r\n * `year` is any Hijri year.\r\n */\r\n getDaysPerMonth(month, year) {\r\n year = year + Math.floor(month / 13);\r\n month = ((month - 1) % 12) + 1;\r\n let length = 29 + month % 2;\r\n if (month === 12 && isIslamicLeapYear(year)) {\r\n length++;\r\n }\r\n return length;\r\n }\r\n}\nNgbCalendarIslamicCivil.ɵfac = /*@__PURE__*/ function () { let ɵNgbCalendarIslamicCivil_BaseFactory; return function NgbCalendarIslamicCivil_Factory(t) { return (ɵNgbCalendarIslamicCivil_BaseFactory || (ɵNgbCalendarIslamicCivil_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbCalendarIslamicCivil)))(t || NgbCalendarIslamicCivil); }; }();\nNgbCalendarIslamicCivil.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbCalendarIslamicCivil, factory: NgbCalendarIslamicCivil.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCalendarIslamicCivil, [{\n type: Injectable\n }], null, null); })();\n\n/**\r\n * Umalqura calendar is one type of Hijri calendars used in islamic countries.\r\n * This Calendar is used by Saudi Arabia for administrative purpose.\r\n * Unlike tabular calendars, the algorithm involves astronomical calculation, but it's still deterministic.\r\n * http://cldr.unicode.org/development/development-process/design-proposals/islamic-calendar-types\r\n */\r\nconst GREGORIAN_FIRST_DATE = new Date(1882, 10, 12);\r\nconst GREGORIAN_LAST_DATE = new Date(2174, 10, 25);\r\nconst HIJRI_BEGIN = 1300;\r\nconst HIJRI_END = 1600;\r\nconst ONE_DAY = 1000 * 60 * 60 * 24;\r\nconst MONTH_LENGTH = [\r\n // 1300-1304\r\n '101010101010', '110101010100', '111011001001', '011011010100', '011011101010',\r\n // 1305-1309\r\n '001101101100', '101010101101', '010101010101', '011010101001', '011110010010',\r\n // 1310-1314\r\n '101110101001', '010111010100', '101011011010', '010101011100', '110100101101',\r\n // 1315-1319\r\n '011010010101', '011101001010', '101101010100', '101101101010', '010110101101',\r\n // 1320-1324\r\n '010010101110', '101001001111', '010100010111', '011010001011', '011010100101',\r\n // 1325-1329\r\n '101011010101', '001011010110', '100101011011', '010010011101', '101001001101',\r\n // 1330-1334\r\n '110100100110', '110110010101', '010110101100', '100110110110', '001010111010',\r\n // 1335-1339\r\n '101001011011', '010100101011', '101010010101', '011011001010', '101011101001',\r\n // 1340-1344\r\n '001011110100', '100101110110', '001010110110', '100101010110', '101011001010',\r\n // 1345-1349\r\n '101110100100', '101111010010', '010111011001', '001011011100', '100101101101',\r\n // 1350-1354\r\n '010101001101', '101010100101', '101101010010', '101110100101', '010110110100',\r\n // 1355-1359\r\n '100110110110', '010101010111', '001010010111', '010101001011', '011010100011',\r\n // 1360-1364\r\n '011101010010', '101101100101', '010101101010', '101010101011', '010100101011',\r\n // 1365-1369\r\n '110010010101', '110101001010', '110110100101', '010111001010', '101011010110',\r\n // 1370-1374\r\n '100101010111', '010010101011', '100101001011', '101010100101', '101101010010',\r\n // 1375-1379\r\n '101101101010', '010101110101', '001001110110', '100010110111', '010001011011',\r\n // 1380-1384\r\n '010101010101', '010110101001', '010110110100', '100111011010', '010011011101',\r\n // 1385-1389\r\n '001001101110', '100100110110', '101010101010', '110101010100', '110110110010',\r\n // 1390-1394\r\n '010111010101', '001011011010', '100101011011', '010010101011', '101001010101',\r\n // 1395-1399\r\n '101101001001', '101101100100', '101101110001', '010110110100', '101010110101',\r\n // 1400-1404\r\n '101001010101', '110100100101', '111010010010', '111011001001', '011011010100',\r\n // 1405-1409\r\n '101011101001', '100101101011', '010010101011', '101010010011', '110101001001',\r\n // 1410-1414\r\n '110110100100', '110110110010', '101010111001', '010010111010', '101001011011',\r\n // 1415-1419\r\n '010100101011', '101010010101', '101100101010', '101101010101', '010101011100',\r\n // 1420-1424\r\n '010010111101', '001000111101', '100100011101', '101010010101', '101101001010',\r\n // 1425-1429\r\n '101101011010', '010101101101', '001010110110', '100100111011', '010010011011',\r\n // 1430-1434\r\n '011001010101', '011010101001', '011101010100', '101101101010', '010101101100',\r\n // 1435-1439\r\n '101010101101', '010101010101', '101100101001', '101110010010', '101110101001',\r\n // 1440-1444\r\n '010111010100', '101011011010', '010101011010', '101010101011', '010110010101',\r\n // 1445-1449\r\n '011101001001', '011101100100', '101110101010', '010110110101', '001010110110',\r\n // 1450-1454\r\n '101001010110', '111001001101', '101100100101', '101101010010', '101101101010',\r\n // 1455-1459\r\n '010110101101', '001010101110', '100100101111', '010010010111', '011001001011',\r\n // 1460-1464\r\n '011010100101', '011010101100', '101011010110', '010101011101', '010010011101',\r\n // 1465-1469\r\n '101001001101', '110100010110', '110110010101', '010110101010', '010110110101',\r\n // 1470-1474\r\n '001011011010', '100101011011', '010010101101', '010110010101', '011011001010',\r\n // 1475-1479\r\n '011011100100', '101011101010', '010011110101', '001010110110', '100101010110',\r\n // 1480-1484\r\n '101010101010', '101101010100', '101111010010', '010111011001', '001011101010',\r\n // 1485-1489\r\n '100101101101', '010010101101', '101010010101', '101101001010', '101110100101',\r\n // 1490-1494\r\n '010110110010', '100110110101', '010011010110', '101010010111', '010101000111',\r\n // 1495-1499\r\n '011010010011', '011101001001', '101101010101', '010101101010', '101001101011',\r\n // 1500-1504\r\n '010100101011', '101010001011', '110101000110', '110110100011', '010111001010',\r\n // 1505-1509\r\n '101011010110', '010011011011', '001001101011', '100101001011', '101010100101',\r\n // 1510-1514\r\n '101101010010', '101101101001', '010101110101', '000101110110', '100010110111',\r\n // 1515-1519\r\n '001001011011', '010100101011', '010101100101', '010110110100', '100111011010',\r\n // 1520-1524\r\n '010011101101', '000101101101', '100010110110', '101010100110', '110101010010',\r\n // 1525-1529\r\n '110110101001', '010111010100', '101011011010', '100101011011', '010010101011',\r\n // 1530-1534\r\n '011001010011', '011100101001', '011101100010', '101110101001', '010110110010',\r\n // 1535-1539\r\n '101010110101', '010101010101', '101100100101', '110110010010', '111011001001',\r\n // 1540-1544\r\n '011011010010', '101011101001', '010101101011', '010010101011', '101001010101',\r\n // 1545-1549\r\n '110100101001', '110101010100', '110110101010', '100110110101', '010010111010',\r\n // 1550-1554\r\n '101000111011', '010010011011', '101001001101', '101010101010', '101011010101',\r\n // 1555-1559\r\n '001011011010', '100101011101', '010001011110', '101000101110', '110010011010',\r\n // 1560-1564\r\n '110101010101', '011010110010', '011010111001', '010010111010', '101001011101',\r\n // 1565-1569\r\n '010100101101', '101010010101', '101101010010', '101110101000', '101110110100',\r\n // 1570-1574\r\n '010110111001', '001011011010', '100101011010', '101101001010', '110110100100',\r\n // 1575-1579\r\n '111011010001', '011011101000', '101101101010', '010101101101', '010100110101',\r\n // 1580-1584\r\n '011010010101', '110101001010', '110110101000', '110111010100', '011011011010',\r\n // 1585-1589\r\n '010101011011', '001010011101', '011000101011', '101100010101', '101101001010',\r\n // 1590-1594\r\n '101110010101', '010110101010', '101010101110', '100100101110', '110010001111',\r\n // 1595-1599\r\n '010100100111', '011010010101', '011010101010', '101011010110', '010101011101',\r\n // 1600\r\n '001010011101'\r\n];\r\nfunction getDaysDiff(date1, date2) {\r\n // Ignores the time part in date1 and date2:\r\n const time1 = Date.UTC(date1.getFullYear(), date1.getMonth(), date1.getDate());\r\n const time2 = Date.UTC(date2.getFullYear(), date2.getMonth(), date2.getDate());\r\n const diff = Math.abs(time1 - time2);\r\n return Math.round(diff / ONE_DAY);\r\n}\r\nclass NgbCalendarIslamicUmalqura extends NgbCalendarIslamicCivil {\r\n /**\r\n * Returns the equivalent islamic(Umalqura) date value for a give input Gregorian date.\r\n * `gdate` is s JS Date to be converted to Hijri.\r\n */\r\n fromGregorian(gDate) {\r\n let hDay = 1, hMonth = 0, hYear = 1300;\r\n let daysDiff = getDaysDiff(gDate, GREGORIAN_FIRST_DATE);\r\n if (gDate.getTime() - GREGORIAN_FIRST_DATE.getTime() >= 0 && gDate.getTime() - GREGORIAN_LAST_DATE.getTime() <= 0) {\r\n let year = 1300;\r\n for (let i = 0; i < MONTH_LENGTH.length; i++, year++) {\r\n for (let j = 0; j < 12; j++) {\r\n let numOfDays = +MONTH_LENGTH[i][j] + 29;\r\n if (daysDiff <= numOfDays) {\r\n hDay = daysDiff + 1;\r\n if (hDay > numOfDays) {\r\n hDay = 1;\r\n j++;\r\n }\r\n if (j > 11) {\r\n j = 0;\r\n year++;\r\n }\r\n hMonth = j;\r\n hYear = year;\r\n return new NgbDate(hYear, hMonth + 1, hDay);\r\n }\r\n daysDiff = daysDiff - numOfDays;\r\n }\r\n }\r\n return null;\r\n }\r\n else {\r\n return super.fromGregorian(gDate);\r\n }\r\n }\r\n /**\r\n * Converts the current Hijri date to Gregorian.\r\n */\r\n toGregorian(hDate) {\r\n const hYear = hDate.year;\r\n const hMonth = hDate.month - 1;\r\n const hDay = hDate.day;\r\n let gDate = new Date(GREGORIAN_FIRST_DATE);\r\n let dayDiff = hDay - 1;\r\n if (hYear >= HIJRI_BEGIN && hYear <= HIJRI_END) {\r\n for (let y = 0; y < hYear - HIJRI_BEGIN; y++) {\r\n for (let m = 0; m < 12; m++) {\r\n dayDiff += +MONTH_LENGTH[y][m] + 29;\r\n }\r\n }\r\n for (let m = 0; m < hMonth; m++) {\r\n dayDiff += +MONTH_LENGTH[hYear - HIJRI_BEGIN][m] + 29;\r\n }\r\n gDate.setDate(GREGORIAN_FIRST_DATE.getDate() + dayDiff);\r\n }\r\n else {\r\n gDate = super.toGregorian(hDate);\r\n }\r\n return gDate;\r\n }\r\n /**\r\n * Returns the number of days in a specific Hijri hMonth.\r\n * `hMonth` is 1 for Muharram, 2 for Safar, etc.\r\n * `hYear` is any Hijri hYear.\r\n */\r\n getDaysPerMonth(hMonth, hYear) {\r\n if (hYear >= HIJRI_BEGIN && hYear <= HIJRI_END) {\r\n const pos = hYear - HIJRI_BEGIN;\r\n return +MONTH_LENGTH[pos][hMonth - 1] + 29;\r\n }\r\n return super.getDaysPerMonth(hMonth, hYear);\r\n }\r\n}\nNgbCalendarIslamicUmalqura.ɵfac = /*@__PURE__*/ function () { let ɵNgbCalendarIslamicUmalqura_BaseFactory; return function NgbCalendarIslamicUmalqura_Factory(t) { return (ɵNgbCalendarIslamicUmalqura_BaseFactory || (ɵNgbCalendarIslamicUmalqura_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbCalendarIslamicUmalqura)))(t || NgbCalendarIslamicUmalqura); }; }();\nNgbCalendarIslamicUmalqura.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbCalendarIslamicUmalqura, factory: NgbCalendarIslamicUmalqura.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCalendarIslamicUmalqura, [{\n type: Injectable\n }], null, null); })();\n\n/**\r\n * Returns the equivalent JS date value for a give input Jalali date.\r\n * `jalaliDate` is an Jalali date to be converted to Gregorian.\r\n */\r\nfunction toGregorian(jalaliDate) {\r\n let jdn = jalaliToJulian(jalaliDate.year, jalaliDate.month, jalaliDate.day);\r\n let date = julianToGregorian(jdn);\r\n date.setHours(6, 30, 3, 200);\r\n return date;\r\n}\r\n/**\r\n * Returns the equivalent jalali date value for a give input Gregorian date.\r\n * `gdate` is a JS Date to be converted to jalali.\r\n * utc to local\r\n */\r\nfunction fromGregorian(gdate) {\r\n let g2d = gregorianToJulian(gdate.getFullYear(), gdate.getMonth() + 1, gdate.getDate());\r\n return julianToJalali(g2d);\r\n}\r\nfunction setJalaliYear(date, yearValue) {\r\n date.year = +yearValue;\r\n return date;\r\n}\r\nfunction setJalaliMonth(date, month) {\r\n month = +month;\r\n date.year = date.year + Math.floor((month - 1) / 12);\r\n date.month = Math.floor(((month - 1) % 12 + 12) % 12) + 1;\r\n return date;\r\n}\r\nfunction setJalaliDay(date, day) {\r\n let mDays = getDaysPerMonth(date.month, date.year);\r\n if (day <= 0) {\r\n while (day <= 0) {\r\n date = setJalaliMonth(date, date.month - 1);\r\n mDays = getDaysPerMonth(date.month, date.year);\r\n day += mDays;\r\n }\r\n }\r\n else if (day > mDays) {\r\n while (day > mDays) {\r\n day -= mDays;\r\n date = setJalaliMonth(date, date.month + 1);\r\n mDays = getDaysPerMonth(date.month, date.year);\r\n }\r\n }\r\n date.day = day;\r\n return date;\r\n}\r\nfunction mod$1(a, b) {\r\n return a - b * Math.floor(a / b);\r\n}\r\nfunction div(a, b) {\r\n return Math.trunc(a / b);\r\n}\r\n/*\r\n This function determines if the Jalali (Persian) year is\r\n leap (366-day long) or is the common year (365 days), and\r\n finds the day in March (Gregorian calendar) of the first\r\n day of the Jalali year (jalaliYear).\r\n @param jalaliYear Jalali calendar year (-61 to 3177)\r\n @return\r\n leap: number of years since the last leap year (0 to 4)\r\n gYear: Gregorian year of the beginning of Jalali year\r\n march: the March day of Farvardin the 1st (1st day of jalaliYear)\r\n @see: http://www.astro.uni.torun.pl/~kb/Papers/EMP/PersianC-EMP.htm\r\n @see: http://www.fourmilab.ch/documents/calendar/\r\n */\r\nfunction jalCal(jalaliYear) {\r\n // Jalali years starting the 33-year rule.\r\n let breaks = [-61, 9, 38, 199, 426, 686, 756, 818, 1111, 1181, 1210, 1635, 2060, 2097, 2192, 2262, 2324, 2394, 2456, 3178];\r\n const breaksLength = breaks.length;\r\n const gYear = jalaliYear + 621;\r\n let leapJ = -14;\r\n let jp = breaks[0];\r\n if (jalaliYear < jp || jalaliYear >= breaks[breaksLength - 1]) {\r\n throw new Error('Invalid Jalali year ' + jalaliYear);\r\n }\r\n // Find the limiting years for the Jalali year jalaliYear.\r\n let jump;\r\n for (let i = 1; i < breaksLength; i += 1) {\r\n const jm = breaks[i];\r\n jump = jm - jp;\r\n if (jalaliYear < jm) {\r\n break;\r\n }\r\n leapJ = leapJ + div(jump, 33) * 8 + div(mod$1(jump, 33), 4);\r\n jp = jm;\r\n }\r\n let n = jalaliYear - jp;\r\n // Find the number of leap years from AD 621 to the beginning\r\n // of the current Jalali year in the Persian calendar.\r\n leapJ = leapJ + div(n, 33) * 8 + div(mod$1(n, 33) + 3, 4);\r\n if (mod$1(jump, 33) === 4 && jump - n === 4) {\r\n leapJ += 1;\r\n }\r\n // And the same in the Gregorian calendar (until the year gYear).\r\n const leapG = div(gYear, 4) - div((div(gYear, 100) + 1) * 3, 4) - 150;\r\n // Determine the Gregorian date of Farvardin the 1st.\r\n const march = 20 + leapJ - leapG;\r\n // Find how many years have passed since the last leap year.\r\n if (jump - n < 6) {\r\n n = n - jump + div(jump + 4, 33) * 33;\r\n }\r\n let leap = mod$1(mod$1(n + 1, 33) - 1, 4);\r\n if (leap === -1) {\r\n leap = 4;\r\n }\r\n return { leap: leap, gy: gYear, march: march };\r\n}\r\n/*\r\n Calculates Gregorian and Julian calendar dates from the Julian Day number\r\n (jdn) for the period since jdn=-34839655 (i.e. the year -100100 of both\r\n calendars) to some millions years ahead of the present.\r\n @param jdn Julian Day number\r\n @return\r\n gYear: Calendar year (years BC numbered 0, -1, -2, ...)\r\n gMonth: Calendar month (1 to 12)\r\n gDay: Calendar day of the month M (1 to 28/29/30/31)\r\n */\r\nfunction julianToGregorian(julianDayNumber) {\r\n let j = 4 * julianDayNumber + 139361631;\r\n j = j + div(div(4 * julianDayNumber + 183187720, 146097) * 3, 4) * 4 - 3908;\r\n const i = div(mod$1(j, 1461), 4) * 5 + 308;\r\n const gDay = div(mod$1(i, 153), 5) + 1;\r\n const gMonth = mod$1(div(i, 153), 12) + 1;\r\n const gYear = div(j, 1461) - 100100 + div(8 - gMonth, 6);\r\n return new Date(gYear, gMonth - 1, gDay);\r\n}\r\n/*\r\n Converts a date of the Jalali calendar to the Julian Day number.\r\n @param jy Jalali year (1 to 3100)\r\n @param jm Jalali month (1 to 12)\r\n @param jd Jalali day (1 to 29/31)\r\n @return Julian Day number\r\n */\r\nfunction gregorianToJulian(gy, gm, gd) {\r\n let d = div((gy + div(gm - 8, 6) + 100100) * 1461, 4) + div(153 * mod$1(gm + 9, 12) + 2, 5) + gd - 34840408;\r\n d = d - div(div(gy + 100100 + div(gm - 8, 6), 100) * 3, 4) + 752;\r\n return d;\r\n}\r\n/*\r\n Converts the Julian Day number to a date in the Jalali calendar.\r\n @param julianDayNumber Julian Day number\r\n @return\r\n jalaliYear: Jalali year (1 to 3100)\r\n jalaliMonth: Jalali month (1 to 12)\r\n jalaliDay: Jalali day (1 to 29/31)\r\n */\r\nfunction julianToJalali(julianDayNumber) {\r\n let gy = julianToGregorian(julianDayNumber).getFullYear() // Calculate Gregorian year (gy).\r\n , jalaliYear = gy - 621, r = jalCal(jalaliYear), gregorianDay = gregorianToJulian(gy, 3, r.march), jalaliDay, jalaliMonth, numberOfDays;\r\n // Find number of days that passed since 1 Farvardin.\r\n numberOfDays = julianDayNumber - gregorianDay;\r\n if (numberOfDays >= 0) {\r\n if (numberOfDays <= 185) {\r\n // The first 6 months.\r\n jalaliMonth = 1 + div(numberOfDays, 31);\r\n jalaliDay = mod$1(numberOfDays, 31) + 1;\r\n return new NgbDate(jalaliYear, jalaliMonth, jalaliDay);\r\n }\r\n else {\r\n // The remaining months.\r\n numberOfDays -= 186;\r\n }\r\n }\r\n else {\r\n // Previous Jalali year.\r\n jalaliYear -= 1;\r\n numberOfDays += 179;\r\n if (r.leap === 1) {\r\n numberOfDays += 1;\r\n }\r\n }\r\n jalaliMonth = 7 + div(numberOfDays, 30);\r\n jalaliDay = mod$1(numberOfDays, 30) + 1;\r\n return new NgbDate(jalaliYear, jalaliMonth, jalaliDay);\r\n}\r\n/*\r\n Converts a date of the Jalali calendar to the Julian Day number.\r\n @param jYear Jalali year (1 to 3100)\r\n @param jMonth Jalali month (1 to 12)\r\n @param jDay Jalali day (1 to 29/31)\r\n @return Julian Day number\r\n */\r\nfunction jalaliToJulian(jYear, jMonth, jDay) {\r\n let r = jalCal(jYear);\r\n return gregorianToJulian(r.gy, 3, r.march) + (jMonth - 1) * 31 - div(jMonth, 7) * (jMonth - 7) + jDay - 1;\r\n}\r\n/**\r\n * Returns the number of days in a specific jalali month.\r\n */\r\nfunction getDaysPerMonth(month, year) {\r\n if (month <= 6) {\r\n return 31;\r\n }\r\n if (month <= 11) {\r\n return 30;\r\n }\r\n if (jalCal(year).leap === 0) {\r\n return 30;\r\n }\r\n return 29;\r\n}\n\nclass NgbCalendarPersian extends NgbCalendar {\r\n getDaysPerWeek() { return 7; }\r\n getMonths() { return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]; }\r\n getWeeksPerMonth() { return 6; }\r\n getNext(date, period = 'd', number = 1) {\r\n date = new NgbDate(date.year, date.month, date.day);\r\n switch (period) {\r\n case 'y':\r\n date = setJalaliYear(date, date.year + number);\r\n date.month = 1;\r\n date.day = 1;\r\n return date;\r\n case 'm':\r\n date = setJalaliMonth(date, date.month + number);\r\n date.day = 1;\r\n return date;\r\n case 'd':\r\n return setJalaliDay(date, date.day + number);\r\n default:\r\n return date;\r\n }\r\n }\r\n getPrev(date, period = 'd', number = 1) { return this.getNext(date, period, -number); }\r\n getWeekday(date) {\r\n const day = toGregorian(date).getDay();\r\n // in JS Date Sun=0, in ISO 8601 Sun=7\r\n return day === 0 ? 7 : day;\r\n }\r\n getWeekNumber(week, firstDayOfWeek) {\r\n // in JS Date Sun=0, in ISO 8601 Sun=7\r\n if (firstDayOfWeek === 7) {\r\n firstDayOfWeek = 0;\r\n }\r\n const thursdayIndex = (4 + 7 - firstDayOfWeek) % 7;\r\n const date = week[thursdayIndex];\r\n const jsDate = toGregorian(date);\r\n jsDate.setDate(jsDate.getDate() + 4 - (jsDate.getDay() || 7)); // Thursday\r\n const time = jsDate.getTime();\r\n const startDate = toGregorian(new NgbDate(date.year, 1, 1));\r\n return Math.floor(Math.round((time - startDate.getTime()) / 86400000) / 7) + 1;\r\n }\r\n getToday() { return fromGregorian(new Date()); }\r\n isValid(date) {\r\n return date != null && isInteger(date.year) && isInteger(date.month) && isInteger(date.day) &&\r\n !isNaN(toGregorian(date).getTime());\r\n }\r\n}\nNgbCalendarPersian.ɵfac = /*@__PURE__*/ function () { let ɵNgbCalendarPersian_BaseFactory; return function NgbCalendarPersian_Factory(t) { return (ɵNgbCalendarPersian_BaseFactory || (ɵNgbCalendarPersian_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbCalendarPersian)))(t || NgbCalendarPersian); }; }();\nNgbCalendarPersian.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbCalendarPersian, factory: NgbCalendarPersian.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCalendarPersian, [{\n type: Injectable\n }], null, null); })();\n\nconst PARTS_PER_HOUR = 1080;\r\nconst PARTS_PER_DAY = 24 * PARTS_PER_HOUR;\r\nconst PARTS_FRACTIONAL_MONTH = 12 * PARTS_PER_HOUR + 793;\r\nconst PARTS_PER_MONTH = 29 * PARTS_PER_DAY + PARTS_FRACTIONAL_MONTH;\r\nconst BAHARAD = 11 * PARTS_PER_HOUR + 204;\r\nconst HEBREW_DAY_ON_JAN_1_1970 = 2092591;\r\nconst GREGORIAN_EPOCH$1 = 1721425.5;\r\nfunction isGregorianLeapYear$1(year) {\r\n return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\r\n}\r\nfunction numberOfFirstDayInYear(year) {\r\n let monthsBeforeYear = Math.floor((235 * year - 234) / 19);\r\n let fractionalMonthsBeforeYear = monthsBeforeYear * PARTS_FRACTIONAL_MONTH + BAHARAD;\r\n let dayNumber = monthsBeforeYear * 29 + Math.floor(fractionalMonthsBeforeYear / PARTS_PER_DAY);\r\n let timeOfDay = fractionalMonthsBeforeYear % PARTS_PER_DAY;\r\n let dayOfWeek = dayNumber % 7; // 0 == Monday\r\n if (dayOfWeek === 2 || dayOfWeek === 4 || dayOfWeek === 6) {\r\n dayNumber++;\r\n dayOfWeek = dayNumber % 7;\r\n }\r\n if (dayOfWeek === 1 && timeOfDay > 15 * PARTS_PER_HOUR + 204 && !isHebrewLeapYear(year)) {\r\n dayNumber += 2;\r\n }\r\n else if (dayOfWeek === 0 && timeOfDay > 21 * PARTS_PER_HOUR + 589 && isHebrewLeapYear(year - 1)) {\r\n dayNumber++;\r\n }\r\n return dayNumber;\r\n}\r\nfunction getDaysInGregorianMonth(month, year) {\r\n let days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\r\n if (isGregorianLeapYear$1(year)) {\r\n days[1]++;\r\n }\r\n return days[month - 1];\r\n}\r\nfunction getHebrewMonths(year) {\r\n return isHebrewLeapYear(year) ? 13 : 12;\r\n}\r\n/**\r\n * Returns the number of days in a specific Hebrew year.\r\n * `year` is any Hebrew year.\r\n */\r\nfunction getDaysInHebrewYear(year) {\r\n return numberOfFirstDayInYear(year + 1) - numberOfFirstDayInYear(year);\r\n}\r\nfunction isHebrewLeapYear(year) {\r\n if (year != null) {\r\n let b = (year * 12 + 17) % 19;\r\n return b >= ((b < 0) ? -7 : 12);\r\n }\r\n return false;\r\n}\r\n/**\r\n * Returns the number of days in a specific Hebrew month.\r\n * `month` is 1 for Nisan, 2 for Iyar etc. Note: Hebrew leap year contains 13 months.\r\n * `year` is any Hebrew year.\r\n */\r\nfunction getDaysInHebrewMonth(month, year) {\r\n let yearLength = numberOfFirstDayInYear(year + 1) - numberOfFirstDayInYear(year);\r\n let yearType = (yearLength <= 380 ? yearLength : (yearLength - 30)) - 353;\r\n let leapYear = isHebrewLeapYear(year);\r\n let daysInMonth = leapYear ? [30, 29, 29, 29, 30, 30, 29, 30, 29, 30, 29, 30, 29] :\r\n [30, 29, 29, 29, 30, 29, 30, 29, 30, 29, 30, 29];\r\n if (yearType > 0) {\r\n daysInMonth[2]++; // Kislev gets an extra day in normal or complete years.\r\n }\r\n if (yearType > 1) {\r\n daysInMonth[1]++; // Heshvan gets an extra day in complete years only.\r\n }\r\n return daysInMonth[month - 1];\r\n}\r\nfunction getDayNumberInHebrewYear(date) {\r\n let numberOfDay = 0;\r\n for (let i = 1; i < date.month; i++) {\r\n numberOfDay += getDaysInHebrewMonth(i, date.year);\r\n }\r\n return numberOfDay + date.day;\r\n}\r\nfunction setHebrewMonth(date, val) {\r\n let after = val >= 0;\r\n if (!after) {\r\n val = -val;\r\n }\r\n while (val > 0) {\r\n if (after) {\r\n if (val > getHebrewMonths(date.year) - date.month) {\r\n val -= getHebrewMonths(date.year) - date.month + 1;\r\n date.year++;\r\n date.month = 1;\r\n }\r\n else {\r\n date.month += val;\r\n val = 0;\r\n }\r\n }\r\n else {\r\n if (val >= date.month) {\r\n date.year--;\r\n val -= date.month;\r\n date.month = getHebrewMonths(date.year);\r\n }\r\n else {\r\n date.month -= val;\r\n val = 0;\r\n }\r\n }\r\n }\r\n return date;\r\n}\r\nfunction setHebrewDay(date, val) {\r\n let after = val >= 0;\r\n if (!after) {\r\n val = -val;\r\n }\r\n while (val > 0) {\r\n if (after) {\r\n if (val > getDaysInHebrewYear(date.year) - getDayNumberInHebrewYear(date)) {\r\n val -= getDaysInHebrewYear(date.year) - getDayNumberInHebrewYear(date) + 1;\r\n date.year++;\r\n date.month = 1;\r\n date.day = 1;\r\n }\r\n else if (val > getDaysInHebrewMonth(date.month, date.year) - date.day) {\r\n val -= getDaysInHebrewMonth(date.month, date.year) - date.day + 1;\r\n date.month++;\r\n date.day = 1;\r\n }\r\n else {\r\n date.day += val;\r\n val = 0;\r\n }\r\n }\r\n else {\r\n if (val >= date.day) {\r\n val -= date.day;\r\n date.month--;\r\n if (date.month === 0) {\r\n date.year--;\r\n date.month = getHebrewMonths(date.year);\r\n }\r\n date.day = getDaysInHebrewMonth(date.month, date.year);\r\n }\r\n else {\r\n date.day -= val;\r\n val = 0;\r\n }\r\n }\r\n }\r\n return date;\r\n}\r\n/**\r\n * Returns the equivalent Hebrew date value for a give input Gregorian date.\r\n * `gdate` is a JS Date to be converted to Hebrew date.\r\n */\r\nfunction fromGregorian$1(gdate) {\r\n const date = new Date(gdate);\r\n const gYear = date.getFullYear(), gMonth = date.getMonth(), gDay = date.getDate();\r\n let julianDay = GREGORIAN_EPOCH$1 - 1 + 365 * (gYear - 1) + Math.floor((gYear - 1) / 4) -\r\n Math.floor((gYear - 1) / 100) + Math.floor((gYear - 1) / 400) +\r\n Math.floor((367 * (gMonth + 1) - 362) / 12 + (gMonth + 1 <= 2 ? 0 : isGregorianLeapYear$1(gYear) ? -1 : -2) + gDay);\r\n julianDay = Math.floor(julianDay + 0.5);\r\n let daysSinceHebEpoch = julianDay - 347997;\r\n let monthsSinceHebEpoch = Math.floor(daysSinceHebEpoch * PARTS_PER_DAY / PARTS_PER_MONTH);\r\n let hYear = Math.floor((monthsSinceHebEpoch * 19 + 234) / 235) + 1;\r\n let firstDayOfThisYear = numberOfFirstDayInYear(hYear);\r\n let dayOfYear = daysSinceHebEpoch - firstDayOfThisYear;\r\n while (dayOfYear < 1) {\r\n hYear--;\r\n firstDayOfThisYear = numberOfFirstDayInYear(hYear);\r\n dayOfYear = daysSinceHebEpoch - firstDayOfThisYear;\r\n }\r\n let hMonth = 1;\r\n let hDay = dayOfYear;\r\n while (hDay > getDaysInHebrewMonth(hMonth, hYear)) {\r\n hDay -= getDaysInHebrewMonth(hMonth, hYear);\r\n hMonth++;\r\n }\r\n return new NgbDate(hYear, hMonth, hDay);\r\n}\r\n/**\r\n * Returns the equivalent JS date value for a given Hebrew date.\r\n * `hebrewDate` is an Hebrew date to be converted to Gregorian.\r\n */\r\nfunction toGregorian$1(hebrewDate) {\r\n const hYear = hebrewDate.year;\r\n const hMonth = hebrewDate.month;\r\n const hDay = hebrewDate.day;\r\n let days = numberOfFirstDayInYear(hYear);\r\n for (let i = 1; i < hMonth; i++) {\r\n days += getDaysInHebrewMonth(i, hYear);\r\n }\r\n days += hDay;\r\n let diffDays = days - HEBREW_DAY_ON_JAN_1_1970;\r\n let after = diffDays >= 0;\r\n if (!after) {\r\n diffDays = -diffDays;\r\n }\r\n let gYear = 1970;\r\n let gMonth = 1;\r\n let gDay = 1;\r\n while (diffDays > 0) {\r\n if (after) {\r\n if (diffDays >= (isGregorianLeapYear$1(gYear) ? 366 : 365)) {\r\n diffDays -= isGregorianLeapYear$1(gYear) ? 366 : 365;\r\n gYear++;\r\n }\r\n else if (diffDays >= getDaysInGregorianMonth(gMonth, gYear)) {\r\n diffDays -= getDaysInGregorianMonth(gMonth, gYear);\r\n gMonth++;\r\n }\r\n else {\r\n gDay += diffDays;\r\n diffDays = 0;\r\n }\r\n }\r\n else {\r\n if (diffDays >= (isGregorianLeapYear$1(gYear - 1) ? 366 : 365)) {\r\n diffDays -= isGregorianLeapYear$1(gYear - 1) ? 366 : 365;\r\n gYear--;\r\n }\r\n else {\r\n if (gMonth > 1) {\r\n gMonth--;\r\n }\r\n else {\r\n gMonth = 12;\r\n gYear--;\r\n }\r\n if (diffDays >= getDaysInGregorianMonth(gMonth, gYear)) {\r\n diffDays -= getDaysInGregorianMonth(gMonth, gYear);\r\n }\r\n else {\r\n gDay = getDaysInGregorianMonth(gMonth, gYear) - diffDays + 1;\r\n diffDays = 0;\r\n }\r\n }\r\n }\r\n }\r\n return new Date(gYear, gMonth - 1, gDay);\r\n}\r\nfunction hebrewNumerals(numerals) {\r\n if (!numerals) {\r\n return '';\r\n }\r\n const hArray0_9 = ['', '\\u05d0', '\\u05d1', '\\u05d2', '\\u05d3', '\\u05d4', '\\u05d5', '\\u05d6', '\\u05d7', '\\u05d8'];\r\n const hArray10_19 = [\r\n '\\u05d9', '\\u05d9\\u05d0', '\\u05d9\\u05d1', '\\u05d9\\u05d2', '\\u05d9\\u05d3', '\\u05d8\\u05d5', '\\u05d8\\u05d6',\r\n '\\u05d9\\u05d6', '\\u05d9\\u05d7', '\\u05d9\\u05d8'\r\n ];\r\n const hArray20_90 = ['', '', '\\u05db', '\\u05dc', '\\u05de', '\\u05e0', '\\u05e1', '\\u05e2', '\\u05e4', '\\u05e6'];\r\n const hArray100_900 = [\r\n '', '\\u05e7', '\\u05e8', '\\u05e9', '\\u05ea', '\\u05ea\\u05e7', '\\u05ea\\u05e8', '\\u05ea\\u05e9', '\\u05ea\\u05ea',\r\n '\\u05ea\\u05ea\\u05e7'\r\n ];\r\n const hArray1000_9000 = [\r\n '', '\\u05d0', '\\u05d1', '\\u05d1\\u05d0', '\\u05d1\\u05d1', '\\u05d4', '\\u05d4\\u05d0', '\\u05d4\\u05d1',\r\n '\\u05d4\\u05d1\\u05d0', '\\u05d4\\u05d1\\u05d1'\r\n ];\r\n const geresh = '\\u05f3', gershaim = '\\u05f4';\r\n let mem = 0;\r\n let result = [];\r\n let step = 0;\r\n while (numerals > 0) {\r\n let m = numerals % 10;\r\n if (step === 0) {\r\n mem = m;\r\n }\r\n else if (step === 1) {\r\n if (m !== 1) {\r\n result.unshift(hArray20_90[m], hArray0_9[mem]);\r\n }\r\n else {\r\n result.unshift(hArray10_19[mem]);\r\n }\r\n }\r\n else if (step === 2) {\r\n result.unshift(hArray100_900[m]);\r\n }\r\n else {\r\n if (m !== 5) {\r\n result.unshift(hArray1000_9000[m], geresh, ' ');\r\n }\r\n break;\r\n }\r\n numerals = Math.floor(numerals / 10);\r\n if (step === 0 && numerals === 0) {\r\n result.unshift(hArray0_9[m]);\r\n }\r\n step++;\r\n }\r\n result = result.join('').split('');\r\n if (result.length === 1) {\r\n result.push(geresh);\r\n }\r\n else if (result.length > 1) {\r\n result.splice(result.length - 1, 0, gershaim);\r\n }\r\n return result.join('');\r\n}\n\n/**\r\n * @since 3.2.0\r\n */\r\nclass NgbCalendarHebrew extends NgbCalendar {\r\n getDaysPerWeek() { return 7; }\r\n getMonths(year) {\r\n if (year && isHebrewLeapYear(year)) {\r\n return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13];\r\n }\r\n else {\r\n return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\r\n }\r\n }\r\n getWeeksPerMonth() { return 6; }\r\n isValid(date) {\r\n if (date != null) {\r\n let b = isNumber(date.year) && isNumber(date.month) && isNumber(date.day);\r\n b = b && date.month > 0 && date.month <= (isHebrewLeapYear(date.year) ? 13 : 12);\r\n b = b && date.day > 0 && date.day <= getDaysInHebrewMonth(date.month, date.year);\r\n return b && !isNaN(toGregorian$1(date).getTime());\r\n }\r\n return false;\r\n }\r\n getNext(date, period = 'd', number = 1) {\r\n date = new NgbDate(date.year, date.month, date.day);\r\n switch (period) {\r\n case 'y':\r\n date.year += number;\r\n date.month = 1;\r\n date.day = 1;\r\n return date;\r\n case 'm':\r\n date = setHebrewMonth(date, number);\r\n date.day = 1;\r\n return date;\r\n case 'd':\r\n return setHebrewDay(date, number);\r\n default:\r\n return date;\r\n }\r\n }\r\n getPrev(date, period = 'd', number = 1) { return this.getNext(date, period, -number); }\r\n getWeekday(date) {\r\n const day = toGregorian$1(date).getDay();\r\n // in JS Date Sun=0, in ISO 8601 Sun=7\r\n return day === 0 ? 7 : day;\r\n }\r\n getWeekNumber(week, firstDayOfWeek) {\r\n const date = week[week.length - 1];\r\n return Math.ceil(getDayNumberInHebrewYear(date) / 7);\r\n }\r\n getToday() { return fromGregorian$1(new Date()); }\r\n /**\r\n * @since 3.4.0\r\n */\r\n toGregorian(date) { return fromJSDate(toGregorian$1(date)); }\r\n /**\r\n * @since 3.4.0\r\n */\r\n fromGregorian(date) { return fromGregorian$1(toJSDate(date)); }\r\n}\nNgbCalendarHebrew.ɵfac = /*@__PURE__*/ function () { let ɵNgbCalendarHebrew_BaseFactory; return function NgbCalendarHebrew_Factory(t) { return (ɵNgbCalendarHebrew_BaseFactory || (ɵNgbCalendarHebrew_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbCalendarHebrew)))(t || NgbCalendarHebrew); }; }();\nNgbCalendarHebrew.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbCalendarHebrew, factory: NgbCalendarHebrew.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCalendarHebrew, [{\n type: Injectable\n }], null, null); })();\n\nconst WEEKDAYS = ['שני', 'שלישי', 'רביעי', 'חמישי', 'שישי', 'שבת', 'ראשון'];\r\nconst MONTHS = ['תשרי', 'חשון', 'כסלו', 'טבת', 'שבט', 'אדר', 'ניסן', 'אייר', 'סיון', 'תמוז', 'אב', 'אלול'];\r\nconst MONTHS_LEAP = ['תשרי', 'חשון', 'כסלו', 'טבת', 'שבט', 'אדר א׳', 'אדר ב׳', 'ניסן', 'אייר', 'סיון', 'תמוז', 'אב', 'אלול'];\r\n/**\r\n * @since 3.2.0\r\n */\r\nclass NgbDatepickerI18nHebrew extends NgbDatepickerI18n {\r\n getMonthShortName(month, year) { return this.getMonthFullName(month, year); }\r\n getMonthFullName(month, year) {\r\n return isHebrewLeapYear(year) ? MONTHS_LEAP[month - 1] || '' : MONTHS[month - 1] || '';\r\n }\r\n getWeekdayShortName(weekday) { return WEEKDAYS[weekday - 1] || ''; }\r\n getDayAriaLabel(date) {\r\n return `${hebrewNumerals(date.day)} ${this.getMonthFullName(date.month, date.year)} ${hebrewNumerals(date.year)}`;\r\n }\r\n getDayNumerals(date) { return hebrewNumerals(date.day); }\r\n getWeekNumerals(weekNumber) { return hebrewNumerals(weekNumber); }\r\n getYearNumerals(year) { return hebrewNumerals(year); }\r\n}\nNgbDatepickerI18nHebrew.ɵfac = /*@__PURE__*/ function () { let ɵNgbDatepickerI18nHebrew_BaseFactory; return function NgbDatepickerI18nHebrew_Factory(t) { return (ɵNgbDatepickerI18nHebrew_BaseFactory || (ɵNgbDatepickerI18nHebrew_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbDatepickerI18nHebrew)))(t || NgbDatepickerI18nHebrew); }; }();\nNgbDatepickerI18nHebrew.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbDatepickerI18nHebrew, factory: NgbDatepickerI18nHebrew.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerI18nHebrew, [{\n type: Injectable\n }], null, null); })();\n\n/**\r\n * Returns the equivalent JS date value for a give input Buddhist date.\r\n * `date` is an Buddhist date to be converted to Gregorian.\r\n */\r\nfunction toGregorian$2(date) {\r\n return new Date(date.year - 543, date.month - 1, date.day);\r\n}\r\n/**\r\n * Returns the equivalent Buddhist date value for a give input Gregorian date.\r\n * `gdate` is a JS Date to be converted to Buddhist.\r\n * utc to local\r\n */\r\nfunction fromGregorian$2(gdate) {\r\n return new NgbDate(gdate.getFullYear() + 543, gdate.getMonth() + 1, gdate.getDate());\r\n}\n\n/**\r\n * @since 9.1.0\r\n */\r\nclass NgbCalendarBuddhist extends NgbCalendarGregorian {\r\n getToday() { return fromGregorian$2(new Date()); }\r\n getNext(date, period = 'd', number = 1) {\r\n let jsDate = toGregorian$2(date);\r\n let checkMonth = true;\r\n let expectedMonth = jsDate.getMonth();\r\n switch (period) {\r\n case 'y':\r\n jsDate.setFullYear(jsDate.getFullYear() + number);\r\n break;\r\n case 'm':\r\n expectedMonth += number;\r\n jsDate.setMonth(expectedMonth);\r\n expectedMonth = expectedMonth % 12;\r\n if (expectedMonth < 0) {\r\n expectedMonth = expectedMonth + 12;\r\n }\r\n break;\r\n case 'd':\r\n jsDate.setDate(jsDate.getDate() + number);\r\n checkMonth = false;\r\n break;\r\n default:\r\n return date;\r\n }\r\n if (checkMonth && jsDate.getMonth() !== expectedMonth) {\r\n // this means the destination month has less days than the initial month\r\n // let's go back to the end of the previous month:\r\n jsDate.setDate(0);\r\n }\r\n return fromGregorian$2(jsDate);\r\n }\r\n getPrev(date, period = 'd', number = 1) { return this.getNext(date, period, -number); }\r\n getWeekday(date) {\r\n let jsDate = toGregorian$2(date);\r\n let day = jsDate.getDay();\r\n // in JS Date Sun=0, in ISO 8601 Sun=7\r\n return day === 0 ? 7 : day;\r\n }\r\n getWeekNumber(week, firstDayOfWeek) {\r\n // in JS Date Sun=0, in ISO 8601 Sun=7\r\n if (firstDayOfWeek === 7) {\r\n firstDayOfWeek = 0;\r\n }\r\n const thursdayIndex = (4 + 7 - firstDayOfWeek) % 7;\r\n let date = week[thursdayIndex];\r\n const jsDate = toGregorian$2(date);\r\n jsDate.setDate(jsDate.getDate() + 4 - (jsDate.getDay() || 7)); // Thursday\r\n const time = jsDate.getTime();\r\n jsDate.setMonth(0); // Compare with Jan 1\r\n jsDate.setDate(1);\r\n return Math.floor(Math.round((time - jsDate.getTime()) / 86400000) / 7) + 1;\r\n }\r\n isValid(date) {\r\n if (!date || !isInteger(date.year) || !isInteger(date.month) || !isInteger(date.day)) {\r\n return false;\r\n }\r\n // year 0 doesn't exist in Gregorian calendar\r\n if (date.year === 0) {\r\n return false;\r\n }\r\n const jsDate = toGregorian$2(date);\r\n return !isNaN(jsDate.getTime()) && jsDate.getFullYear() === date.year - 543 &&\r\n jsDate.getMonth() + 1 === date.month && jsDate.getDate() === date.day;\r\n }\r\n}\nNgbCalendarBuddhist.ɵfac = /*@__PURE__*/ function () { let ɵNgbCalendarBuddhist_BaseFactory; return function NgbCalendarBuddhist_Factory(t) { return (ɵNgbCalendarBuddhist_BaseFactory || (ɵNgbCalendarBuddhist_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbCalendarBuddhist)))(t || NgbCalendarBuddhist); }; }();\nNgbCalendarBuddhist.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbCalendarBuddhist, factory: NgbCalendarBuddhist.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCalendarBuddhist, [{\n type: Injectable\n }], null, null); })();\n\n/**\r\n * [`NgbDateAdapter`](#/components/datepicker/api#NgbDateAdapter) implementation that uses\r\n * native javascript dates as a user date model.\r\n */\r\nclass NgbDateNativeAdapter extends NgbDateAdapter {\r\n /**\r\n * Converts a native `Date` to a `NgbDateStruct`.\r\n */\r\n fromModel(date) {\r\n return (date instanceof Date && !isNaN(date.getTime())) ? this._fromNativeDate(date) : null;\r\n }\r\n /**\r\n * Converts a `NgbDateStruct` to a native `Date`.\r\n */\r\n toModel(date) {\r\n return date && isInteger(date.year) && isInteger(date.month) && isInteger(date.day) ? this._toNativeDate(date) :\r\n null;\r\n }\r\n _fromNativeDate(date) {\r\n return { year: date.getFullYear(), month: date.getMonth() + 1, day: date.getDate() };\r\n }\r\n _toNativeDate(date) {\r\n const jsDate = new Date(date.year, date.month - 1, date.day, 12);\r\n // avoid 30 -> 1930 conversion\r\n jsDate.setFullYear(date.year);\r\n return jsDate;\r\n }\r\n}\nNgbDateNativeAdapter.ɵfac = /*@__PURE__*/ function () { let ɵNgbDateNativeAdapter_BaseFactory; return function NgbDateNativeAdapter_Factory(t) { return (ɵNgbDateNativeAdapter_BaseFactory || (ɵNgbDateNativeAdapter_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbDateNativeAdapter)))(t || NgbDateNativeAdapter); }; }();\nNgbDateNativeAdapter.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbDateNativeAdapter, factory: NgbDateNativeAdapter.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDateNativeAdapter, [{\n type: Injectable\n }], null, null); })();\n\n/**\r\n * Same as [`NgbDateNativeAdapter`](#/components/datepicker/api#NgbDateNativeAdapter), but with UTC dates.\r\n *\r\n * @since 3.2.0\r\n */\r\nclass NgbDateNativeUTCAdapter extends NgbDateNativeAdapter {\r\n _fromNativeDate(date) {\r\n return { year: date.getUTCFullYear(), month: date.getUTCMonth() + 1, day: date.getUTCDate() };\r\n }\r\n _toNativeDate(date) {\r\n const jsDate = new Date(Date.UTC(date.year, date.month - 1, date.day));\r\n // avoid 30 -> 1930 conversion\r\n jsDate.setUTCFullYear(date.year);\r\n return jsDate;\r\n }\r\n}\nNgbDateNativeUTCAdapter.ɵfac = /*@__PURE__*/ function () { let ɵNgbDateNativeUTCAdapter_BaseFactory; return function NgbDateNativeUTCAdapter_Factory(t) { return (ɵNgbDateNativeUTCAdapter_BaseFactory || (ɵNgbDateNativeUTCAdapter_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbDateNativeUTCAdapter)))(t || NgbDateNativeUTCAdapter); }; }();\nNgbDateNativeUTCAdapter.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbDateNativeUTCAdapter, factory: NgbDateNativeUTCAdapter.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDateNativeUTCAdapter, [{\n type: Injectable\n }], null, null); })();\n\nclass NgbDatepickerModule {\r\n}\nNgbDatepickerModule.ɵfac = function NgbDatepickerModule_Factory(t) { return new (t || NgbDatepickerModule)(); };\nNgbDatepickerModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbDatepickerModule });\nNgbDatepickerModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule, FormsModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerModule, [{\n type: NgModule,\n args: [{\n declarations: [\n NgbDatepicker, NgbDatepickerContent, NgbDatepickerMonth, NgbDatepickerNavigation, NgbDatepickerNavigationSelect,\n NgbDatepickerDayView, NgbInputDatepicker\n ],\n exports: [NgbDatepicker, NgbDatepickerContent, NgbInputDatepicker, NgbDatepickerMonth],\n imports: [CommonModule, FormsModule],\n entryComponents: [NgbDatepicker]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbDatepickerModule, { declarations: function () { return [NgbDatepicker, NgbDatepickerContent, NgbDatepickerMonth, NgbDatepickerNavigation, NgbDatepickerNavigationSelect, NgbDatepickerDayView, NgbInputDatepicker]; }, imports: function () { return [CommonModule, FormsModule]; }, exports: function () { return [NgbDatepicker, NgbDatepickerContent, NgbInputDatepicker, NgbDatepickerMonth]; } }); })();\n\n/**\r\n * A configuration service for the [`NgbDropdown`](#/components/dropdown/api#NgbDropdown) component.\r\n *\r\n * You can inject this service, typically in your root component, and customize the values of its properties in\r\n * order to provide default values for all the dropdowns used in the application.\r\n */\r\nclass NgbDropdownConfig {\r\n constructor() {\r\n this.autoClose = true;\r\n this.placement = ['bottom-left', 'bottom-right', 'top-left', 'top-right'];\r\n }\r\n}\nNgbDropdownConfig.ɵfac = function NgbDropdownConfig_Factory(t) { return new (t || NgbDropdownConfig)(); };\r\nNgbDropdownConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgbDropdownConfig_Factory() { return new NgbDropdownConfig(); }, token: NgbDropdownConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDropdownConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n\nclass NgbNavbar {\r\n}\nNgbNavbar.ɵfac = function NgbNavbar_Factory(t) { return new (t || NgbNavbar)(); };\nNgbNavbar.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbNavbar, selectors: [[\"\", 8, \"navbar\"]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbNavbar, [{\n type: Directive,\n args: [{ selector: '.navbar' }]\n }], null, null); })();\r\n/**\r\n * A directive you should put on a dropdown item to enable keyboard navigation.\r\n * Arrow keys will move focus between items marked with this directive.\r\n *\r\n * @since 4.1.0\r\n */\r\nclass NgbDropdownItem {\r\n constructor(elementRef) {\r\n this.elementRef = elementRef;\r\n this._disabled = false;\r\n }\r\n set disabled(value) {\r\n this._disabled = value === '' || value === true; // accept an empty attribute as true\r\n }\r\n get disabled() { return this._disabled; }\r\n}\nNgbDropdownItem.ɵfac = function NgbDropdownItem_Factory(t) { return new (t || NgbDropdownItem)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nNgbDropdownItem.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbDropdownItem, selectors: [[\"\", \"ngbDropdownItem\", \"\"]], hostAttrs: [1, \"dropdown-item\"], hostVars: 2, hostBindings: function NgbDropdownItem_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"disabled\", ctx.disabled);\n } }, inputs: { disabled: \"disabled\" } });\r\nNgbDropdownItem.ctorParameters = () => [\r\n { type: ElementRef }\r\n];\r\nNgbDropdownItem.propDecorators = {\r\n disabled: [{ type: Input }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDropdownItem, [{\n type: Directive,\n args: [{ selector: '[ngbDropdownItem]', host: { 'class': 'dropdown-item', '[class.disabled]': 'disabled' } }]\n }], function () { return [{ type: ɵngcc0.ElementRef }]; }, { disabled: [{\n type: Input\n }] }); })();\r\n/**\r\n * A directive that wraps dropdown menu content and dropdown items.\r\n */\r\nclass NgbDropdownMenu {\r\n constructor(dropdown, _elementRef) {\r\n this.dropdown = dropdown;\r\n this.placement = 'bottom';\r\n this.isOpen = false;\r\n this.nativeElement = _elementRef.nativeElement;\r\n }\r\n}\nNgbDropdownMenu.ɵfac = function NgbDropdownMenu_Factory(t) { return new (t || NgbDropdownMenu)(ɵngcc0.ɵɵdirectiveInject(forwardRef(() => NgbDropdown)), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nNgbDropdownMenu.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbDropdownMenu, selectors: [[\"\", \"ngbDropdownMenu\", \"\"]], contentQueries: function NgbDropdownMenu_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbDropdownItem, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.menuItems = _t);\n } }, hostVars: 5, hostBindings: function NgbDropdownMenu_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"keydown.ArrowUp\", function NgbDropdownMenu_keydown_ArrowUp_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); })(\"keydown.ArrowDown\", function NgbDropdownMenu_keydown_ArrowDown_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); })(\"keydown.Home\", function NgbDropdownMenu_keydown_Home_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); })(\"keydown.End\", function NgbDropdownMenu_keydown_End_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); })(\"keydown.Enter\", function NgbDropdownMenu_keydown_Enter_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); })(\"keydown.Space\", function NgbDropdownMenu_keydown_Space_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); })(\"keydown.Tab\", function NgbDropdownMenu_keydown_Tab_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); })(\"keydown.Shift.Tab\", function NgbDropdownMenu_keydown_Shift_Tab_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"x-placement\", ctx.placement);\n ɵngcc0.ɵɵclassProp(\"dropdown-menu\", true)(\"show\", ctx.dropdown.isOpen());\n } } });\r\nNgbDropdownMenu.ctorParameters = () => [\r\n { type: undefined, decorators: [{ type: Inject, args: [forwardRef(() => NgbDropdown),] }] },\r\n { type: ElementRef }\r\n];\r\nNgbDropdownMenu.propDecorators = {\r\n menuItems: [{ type: ContentChildren, args: [NgbDropdownItem,] }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDropdownMenu, [{\n type: Directive,\n args: [{\n selector: '[ngbDropdownMenu]',\n host: {\n '[class.dropdown-menu]': 'true',\n '[class.show]': 'dropdown.isOpen()',\n '[attr.x-placement]': 'placement',\n '(keydown.ArrowUp)': 'dropdown.onKeyDown($event)',\n '(keydown.ArrowDown)': 'dropdown.onKeyDown($event)',\n '(keydown.Home)': 'dropdown.onKeyDown($event)',\n '(keydown.End)': 'dropdown.onKeyDown($event)',\n '(keydown.Enter)': 'dropdown.onKeyDown($event)',\n '(keydown.Space)': 'dropdown.onKeyDown($event)',\n '(keydown.Tab)': 'dropdown.onKeyDown($event)',\n '(keydown.Shift.Tab)': 'dropdown.onKeyDown($event)'\n }\n }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [forwardRef(() => NgbDropdown)]\n }] }, { type: ɵngcc0.ElementRef }]; }, { menuItems: [{\n type: ContentChildren,\n args: [NgbDropdownItem]\n }] }); })();\r\n/**\r\n * A directive to mark an element to which dropdown menu will be anchored.\r\n *\r\n * This is a simple version of the `NgbDropdownToggle` directive.\r\n * It plays the same role, but doesn't listen to click events to toggle dropdown menu thus enabling support\r\n * for events other than click.\r\n *\r\n * @since 1.1.0\r\n */\r\nclass NgbDropdownAnchor {\r\n constructor(dropdown, _elementRef) {\r\n this.dropdown = dropdown;\r\n this.nativeElement = _elementRef.nativeElement;\r\n }\r\n}\nNgbDropdownAnchor.ɵfac = function NgbDropdownAnchor_Factory(t) { return new (t || NgbDropdownAnchor)(ɵngcc0.ɵɵdirectiveInject(forwardRef(() => NgbDropdown)), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nNgbDropdownAnchor.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbDropdownAnchor, selectors: [[\"\", \"ngbDropdownAnchor\", \"\"]], hostAttrs: [1, \"dropdown-toggle\"], hostVars: 1, hostBindings: function NgbDropdownAnchor_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"aria-expanded\", ctx.dropdown.isOpen());\n } } });\r\nNgbDropdownAnchor.ctorParameters = () => [\r\n { type: undefined, decorators: [{ type: Inject, args: [forwardRef(() => NgbDropdown),] }] },\r\n { type: ElementRef }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDropdownAnchor, [{\n type: Directive,\n args: [{ selector: '[ngbDropdownAnchor]', host: { 'class': 'dropdown-toggle', '[attr.aria-expanded]': 'dropdown.isOpen()' } }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [forwardRef(() => NgbDropdown)]\n }] }, { type: ɵngcc0.ElementRef }]; }, null); })();\r\n/**\r\n * A directive to mark an element that will toggle dropdown via the `click` event.\r\n *\r\n * You can also use `NgbDropdownAnchor` as an alternative.\r\n */\r\nclass NgbDropdownToggle extends NgbDropdownAnchor {\r\n constructor(dropdown, elementRef) {\r\n super(dropdown, elementRef);\r\n }\r\n}\nNgbDropdownToggle.ɵfac = function NgbDropdownToggle_Factory(t) { return new (t || NgbDropdownToggle)(ɵngcc0.ɵɵdirectiveInject(forwardRef(() => NgbDropdown)), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nNgbDropdownToggle.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbDropdownToggle, selectors: [[\"\", \"ngbDropdownToggle\", \"\"]], hostAttrs: [1, \"dropdown-toggle\"], hostVars: 1, hostBindings: function NgbDropdownToggle_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function NgbDropdownToggle_click_HostBindingHandler() { return ctx.dropdown.toggle(); })(\"keydown.ArrowUp\", function NgbDropdownToggle_keydown_ArrowUp_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); })(\"keydown.ArrowDown\", function NgbDropdownToggle_keydown_ArrowDown_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); })(\"keydown.Home\", function NgbDropdownToggle_keydown_Home_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); })(\"keydown.End\", function NgbDropdownToggle_keydown_End_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); })(\"keydown.Tab\", function NgbDropdownToggle_keydown_Tab_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); })(\"keydown.Shift.Tab\", function NgbDropdownToggle_keydown_Shift_Tab_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"aria-expanded\", ctx.dropdown.isOpen());\n } }, features: [ɵngcc0.ɵɵProvidersFeature([{ provide: NgbDropdownAnchor, useExisting: forwardRef(() => NgbDropdownToggle) }]), ɵngcc0.ɵɵInheritDefinitionFeature] });\r\nNgbDropdownToggle.ctorParameters = () => [\r\n { type: undefined, decorators: [{ type: Inject, args: [forwardRef(() => NgbDropdown),] }] },\r\n { type: ElementRef }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDropdownToggle, [{\n type: Directive,\n args: [{\n selector: '[ngbDropdownToggle]',\n host: {\n 'class': 'dropdown-toggle',\n '[attr.aria-expanded]': 'dropdown.isOpen()',\n '(click)': 'dropdown.toggle()',\n '(keydown.ArrowUp)': 'dropdown.onKeyDown($event)',\n '(keydown.ArrowDown)': 'dropdown.onKeyDown($event)',\n '(keydown.Home)': 'dropdown.onKeyDown($event)',\n '(keydown.End)': 'dropdown.onKeyDown($event)',\n '(keydown.Tab)': 'dropdown.onKeyDown($event)',\n '(keydown.Shift.Tab)': 'dropdown.onKeyDown($event)'\n },\n providers: [{ provide: NgbDropdownAnchor, useExisting: forwardRef(() => NgbDropdownToggle) }]\n }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [forwardRef(() => NgbDropdown)]\n }] }, { type: ɵngcc0.ElementRef }]; }, null); })();\r\n/**\r\n * A directive that provides contextual overlays for displaying lists of links and more.\r\n */\r\nclass NgbDropdown {\r\n constructor(_changeDetector, config, _document, _ngZone, _elementRef, _renderer, ngbNavbar) {\r\n this._changeDetector = _changeDetector;\r\n this._document = _document;\r\n this._ngZone = _ngZone;\r\n this._elementRef = _elementRef;\r\n this._renderer = _renderer;\r\n this._closed$ = new Subject();\r\n this._bodyContainer = null;\r\n /**\r\n * Defines whether or not the dropdown menu is opened initially.\r\n */\r\n this._open = false;\r\n /**\r\n * An event fired when the dropdown is opened or closed.\r\n *\r\n * The event payload is a `boolean`:\r\n * * `true` - the dropdown was opened\r\n * * `false` - the dropdown was closed\r\n */\r\n this.openChange = new EventEmitter();\r\n this.placement = config.placement;\r\n this.container = config.container;\r\n this.autoClose = config.autoClose;\r\n this.display = ngbNavbar ? 'static' : 'dynamic';\r\n this._zoneSubscription = _ngZone.onStable.subscribe(() => { this._positionMenu(); });\r\n }\r\n ngAfterContentInit() {\r\n this._ngZone.onStable.pipe(take(1)).subscribe(() => {\r\n this._applyPlacementClasses();\r\n if (this._open) {\r\n this._setCloseHandlers();\r\n }\r\n });\r\n }\r\n ngOnChanges(changes) {\r\n if (changes.container && this._open) {\r\n this._applyContainer(this.container);\r\n }\r\n if (changes.placement && !changes.placement.isFirstChange) {\r\n this._applyPlacementClasses();\r\n }\r\n if (changes.dropdownClass) {\r\n const { currentValue, previousValue } = changes.dropdownClass;\r\n this._applyCustomDropdownClass(currentValue, previousValue);\r\n }\r\n }\r\n /**\r\n * Checks if the dropdown menu is open.\r\n */\r\n isOpen() { return this._open; }\r\n /**\r\n * Opens the dropdown menu.\r\n */\r\n open() {\r\n if (!this._open) {\r\n this._open = true;\r\n this._applyContainer(this.container);\r\n this.openChange.emit(true);\r\n this._setCloseHandlers();\r\n if (this._anchor) {\r\n this._anchor.nativeElement.focus();\r\n }\r\n }\r\n }\r\n _setCloseHandlers() {\r\n ngbAutoClose(this._ngZone, this._document, this.autoClose, (source) => {\r\n this.close();\r\n if (source === 0 /* ESCAPE */) {\r\n this._anchor.nativeElement.focus();\r\n }\r\n }, this._closed$, this._menu ? [this._menu.nativeElement] : [], this._anchor ? [this._anchor.nativeElement] : [], '.dropdown-item,.dropdown-divider');\r\n }\r\n /**\r\n * Closes the dropdown menu.\r\n */\r\n close() {\r\n if (this._open) {\r\n this._open = false;\r\n this._resetContainer();\r\n this._closed$.next();\r\n this.openChange.emit(false);\r\n this._changeDetector.markForCheck();\r\n }\r\n }\r\n /**\r\n * Toggles the dropdown menu.\r\n */\r\n toggle() {\r\n if (this.isOpen()) {\r\n this.close();\r\n }\r\n else {\r\n this.open();\r\n }\r\n }\r\n ngOnDestroy() {\r\n this._resetContainer();\r\n this._closed$.next();\r\n this._zoneSubscription.unsubscribe();\r\n }\r\n onKeyDown(event) {\r\n // tslint:disable-next-line:deprecation\r\n const key = event.which;\r\n const itemElements = this._getMenuElements();\r\n let position = -1;\r\n let itemElement = null;\r\n const isEventFromToggle = this._isEventFromToggle(event);\r\n if (!isEventFromToggle && itemElements.length) {\r\n itemElements.forEach((item, index) => {\r\n if (item.contains(event.target)) {\r\n itemElement = item;\r\n }\r\n if (item === this._document.activeElement) {\r\n position = index;\r\n }\r\n });\r\n }\r\n // closing on Enter / Space\r\n if (key === Key.Space || key === Key.Enter) {\r\n if (itemElement && (this.autoClose === true || this.autoClose === 'inside')) {\r\n // Item is either a button or a link, so click will be triggered by the browser on Enter or Space.\r\n // So we have to register a one-time click handler that will fire after any user defined click handlers\r\n // to close the dropdown\r\n fromEvent(itemElement, 'click').pipe(take(1)).subscribe(() => this.close());\r\n }\r\n return;\r\n }\r\n if (key === Key.Tab) {\r\n if (event.target && this.isOpen() && this.autoClose) {\r\n if (this._anchor.nativeElement === event.target) {\r\n if (this.container === 'body' && !event.shiftKey) {\r\n /* This case is special: user is using [Tab] from the anchor/toggle.\r\n User expects the next focusable element in the dropdown menu to get focus.\r\n But the menu is not a sibling to anchor/toggle, it is at the end of the body.\r\n Trick is to synchronously focus the menu element, and let the [keydown.Tab] go\r\n so that browser will focus the proper element (first one focusable in the menu) */\r\n this._renderer.setAttribute(this._menu.nativeElement, 'tabindex', '0');\r\n this._menu.nativeElement.focus();\r\n this._renderer.removeAttribute(this._menu.nativeElement, 'tabindex');\r\n }\r\n else if (event.shiftKey) {\r\n this.close();\r\n }\r\n return;\r\n }\r\n else if (this.container === 'body') {\r\n const focusableElements = this._menu.nativeElement.querySelectorAll(FOCUSABLE_ELEMENTS_SELECTOR);\r\n if (event.shiftKey && event.target === focusableElements[0]) {\r\n this._anchor.nativeElement.focus();\r\n event.preventDefault();\r\n }\r\n else if (!event.shiftKey && event.target === focusableElements[focusableElements.length - 1]) {\r\n this._anchor.nativeElement.focus();\r\n this.close();\r\n }\r\n }\r\n else {\r\n fromEvent(event.target, 'focusout').pipe(take(1)).subscribe(({ relatedTarget }) => {\r\n if (!this._elementRef.nativeElement.contains(relatedTarget)) {\r\n this.close();\r\n }\r\n });\r\n }\r\n }\r\n return;\r\n }\r\n // opening / navigating\r\n if (isEventFromToggle || itemElement) {\r\n this.open();\r\n if (itemElements.length) {\r\n switch (key) {\r\n case Key.ArrowDown:\r\n position = Math.min(position + 1, itemElements.length - 1);\r\n break;\r\n case Key.ArrowUp:\r\n if (this._isDropup() && position === -1) {\r\n position = itemElements.length - 1;\r\n break;\r\n }\r\n position = Math.max(position - 1, 0);\r\n break;\r\n case Key.Home:\r\n position = 0;\r\n break;\r\n case Key.End:\r\n position = itemElements.length - 1;\r\n break;\r\n }\r\n itemElements[position].focus();\r\n }\r\n event.preventDefault();\r\n }\r\n }\r\n _isDropup() { return this._elementRef.nativeElement.classList.contains('dropup'); }\r\n _isEventFromToggle(event) {\r\n return this._anchor.nativeElement.contains(event.target);\r\n }\r\n _getMenuElements() {\r\n const menu = this._menu;\r\n if (menu == null) {\r\n return [];\r\n }\r\n return menu.menuItems.filter(item => !item.disabled).map(item => item.elementRef.nativeElement);\r\n }\r\n _positionMenu() {\r\n const menu = this._menu;\r\n if (this.isOpen() && menu) {\r\n this._applyPlacementClasses(this.display === 'dynamic' ? positionElements(this._anchor.nativeElement, this._bodyContainer || this._menu.nativeElement, this.placement, this.container === 'body') :\r\n this._getFirstPlacement(this.placement));\r\n }\r\n }\r\n _getFirstPlacement(placement) {\r\n return Array.isArray(placement) ? placement[0] : placement.split(' ')[0];\r\n }\r\n _resetContainer() {\r\n const renderer = this._renderer;\r\n if (this._menu) {\r\n const dropdownElement = this._elementRef.nativeElement;\r\n const dropdownMenuElement = this._menu.nativeElement;\r\n renderer.appendChild(dropdownElement, dropdownMenuElement);\r\n renderer.removeStyle(dropdownMenuElement, 'position');\r\n renderer.removeStyle(dropdownMenuElement, 'transform');\r\n }\r\n if (this._bodyContainer) {\r\n renderer.removeChild(this._document.body, this._bodyContainer);\r\n this._bodyContainer = null;\r\n }\r\n }\r\n _applyContainer(container = null) {\r\n this._resetContainer();\r\n if (container === 'body') {\r\n const renderer = this._renderer;\r\n const dropdownMenuElement = this._menu.nativeElement;\r\n const bodyContainer = this._bodyContainer = this._bodyContainer || renderer.createElement('div');\r\n // Override some styles to have the positioning working\r\n renderer.setStyle(bodyContainer, 'position', 'absolute');\r\n renderer.setStyle(dropdownMenuElement, 'position', 'static');\r\n renderer.setStyle(bodyContainer, 'z-index', '1050');\r\n renderer.appendChild(bodyContainer, dropdownMenuElement);\r\n renderer.appendChild(this._document.body, bodyContainer);\r\n }\r\n this._applyCustomDropdownClass(this.dropdownClass);\r\n }\r\n _applyCustomDropdownClass(newClass, oldClass) {\r\n const targetElement = this.container === 'body' ? this._bodyContainer : this._elementRef.nativeElement;\r\n if (targetElement) {\r\n if (oldClass) {\r\n this._renderer.removeClass(targetElement, oldClass);\r\n }\r\n if (newClass) {\r\n this._renderer.addClass(targetElement, newClass);\r\n }\r\n }\r\n }\r\n _applyPlacementClasses(placement) {\r\n const menu = this._menu;\r\n if (menu) {\r\n if (!placement) {\r\n placement = this._getFirstPlacement(this.placement);\r\n }\r\n const renderer = this._renderer;\r\n const dropdownElement = this._elementRef.nativeElement;\r\n // remove the current placement classes\r\n renderer.removeClass(dropdownElement, 'dropup');\r\n renderer.removeClass(dropdownElement, 'dropdown');\r\n menu.placement = this.display === 'static' ? null : placement;\r\n /*\r\n * apply the new placement\r\n * in case of top use up-arrow or down-arrow otherwise\r\n */\r\n const dropdownClass = placement.search('^top') !== -1 ? 'dropup' : 'dropdown';\r\n renderer.addClass(dropdownElement, dropdownClass);\r\n const bodyContainer = this._bodyContainer;\r\n if (bodyContainer) {\r\n renderer.removeClass(bodyContainer, 'dropup');\r\n renderer.removeClass(bodyContainer, 'dropdown');\r\n renderer.addClass(bodyContainer, dropdownClass);\r\n }\r\n }\r\n }\r\n}\nNgbDropdown.ɵfac = function NgbDropdown_Factory(t) { return new (t || NgbDropdown)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(NgbDropdownConfig), ɵngcc0.ɵɵdirectiveInject(DOCUMENT), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(NgbNavbar, 8)); };\nNgbDropdown.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbDropdown, selectors: [[\"\", \"ngbDropdown\", \"\"]], contentQueries: function NgbDropdown_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbDropdownMenu, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbDropdownAnchor, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._menu = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._anchor = _t.first);\n } }, hostVars: 2, hostBindings: function NgbDropdown_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"show\", ctx.isOpen());\n } }, inputs: { _open: [\"open\", \"_open\"], placement: \"placement\", container: \"container\", autoClose: \"autoClose\", display: \"display\", dropdownClass: \"dropdownClass\" }, outputs: { openChange: \"openChange\" }, exportAs: [\"ngbDropdown\"], features: [ɵngcc0.ɵɵNgOnChangesFeature] });\r\nNgbDropdown.ctorParameters = () => [\r\n { type: ChangeDetectorRef },\r\n { type: NgbDropdownConfig },\r\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\r\n { type: NgZone },\r\n { type: ElementRef },\r\n { type: Renderer2 },\r\n { type: NgbNavbar, decorators: [{ type: Optional }] }\r\n];\r\nNgbDropdown.propDecorators = {\r\n _menu: [{ type: ContentChild, args: [NgbDropdownMenu, { static: false },] }],\r\n _anchor: [{ type: ContentChild, args: [NgbDropdownAnchor, { static: false },] }],\r\n autoClose: [{ type: Input }],\r\n dropdownClass: [{ type: Input }],\r\n _open: [{ type: Input, args: ['open',] }],\r\n placement: [{ type: Input }],\r\n container: [{ type: Input }],\r\n display: [{ type: Input }],\r\n openChange: [{ type: Output }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDropdown, [{\n type: Directive,\n args: [{ selector: '[ngbDropdown]', exportAs: 'ngbDropdown', host: { '[class.show]': 'isOpen()' } }]\n }], function () { return [{ type: ɵngcc0.ChangeDetectorRef }, { type: NgbDropdownConfig }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: NgbNavbar, decorators: [{\n type: Optional\n }] }]; }, { _open: [{\n type: Input,\n args: ['open']\n }], openChange: [{\n type: Output\n }], placement: [{\n type: Input\n }], container: [{\n type: Input\n }], autoClose: [{\n type: Input\n }], display: [{\n type: Input\n }], _menu: [{\n type: ContentChild,\n args: [NgbDropdownMenu, { static: false }]\n }], _anchor: [{\n type: ContentChild,\n args: [NgbDropdownAnchor, { static: false }]\n }], dropdownClass: [{\n type: Input\n }] }); })();\n\nconst NGB_DROPDOWN_DIRECTIVES = [NgbDropdown, NgbDropdownAnchor, NgbDropdownToggle, NgbDropdownMenu, NgbDropdownItem, NgbNavbar];\r\nclass NgbDropdownModule {\r\n}\nNgbDropdownModule.ɵfac = function NgbDropdownModule_Factory(t) { return new (t || NgbDropdownModule)(); };\nNgbDropdownModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbDropdownModule });\nNgbDropdownModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDropdownModule, [{\n type: NgModule,\n args: [{ declarations: NGB_DROPDOWN_DIRECTIVES, exports: NGB_DROPDOWN_DIRECTIVES }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbDropdownModule, { declarations: [NgbDropdown, NgbDropdownAnchor, NgbDropdownToggle, NgbDropdownMenu, NgbDropdownItem, NgbNavbar], exports: [NgbDropdown, NgbDropdownAnchor, NgbDropdownToggle, NgbDropdownMenu, NgbDropdownItem, NgbNavbar] }); })();\n\n/**\r\n * A configuration service for the [`NgbModal`](#/components/modal/api#NgbModal) service.\r\n *\r\n * You can inject this service, typically in your root component, and customize the values of its properties in\r\n * order to provide default values for all modals used in the application.\r\n*\r\n* @since 3.1.0\r\n*/\r\nclass NgbModalConfig {\r\n constructor(_ngbConfig) {\r\n this._ngbConfig = _ngbConfig;\r\n this.backdrop = true;\r\n this.keyboard = true;\r\n }\r\n get animation() { return (this._animation === undefined) ? this._ngbConfig.animation : this._animation; }\r\n set animation(animation) { this._animation = animation; }\r\n}\nNgbModalConfig.ɵfac = function NgbModalConfig_Factory(t) { return new (t || NgbModalConfig)(ɵngcc0.ɵɵinject(NgbConfig)); };\r\nNgbModalConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgbModalConfig_Factory() { return new NgbModalConfig(ɵɵinject(NgbConfig)); }, token: NgbModalConfig, providedIn: \"root\" });\r\nNgbModalConfig.ctorParameters = () => [\r\n { type: NgbConfig }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbModalConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: NgbConfig }]; }, null); })();\n\nclass ContentRef {\r\n constructor(nodes, viewRef, componentRef) {\r\n this.nodes = nodes;\r\n this.viewRef = viewRef;\r\n this.componentRef = componentRef;\r\n }\r\n}\r\nclass PopupService {\r\n constructor(_type, _injector, _viewContainerRef, _renderer, _ngZone, _componentFactoryResolver, _applicationRef) {\r\n this._type = _type;\r\n this._injector = _injector;\r\n this._viewContainerRef = _viewContainerRef;\r\n this._renderer = _renderer;\r\n this._ngZone = _ngZone;\r\n this._componentFactoryResolver = _componentFactoryResolver;\r\n this._applicationRef = _applicationRef;\r\n this._windowRef = null;\r\n this._contentRef = null;\r\n }\r\n open(content, context, animation = false) {\r\n if (!this._windowRef) {\r\n this._contentRef = this._getContentRef(content, context);\r\n this._windowRef = this._viewContainerRef.createComponent(this._componentFactoryResolver.resolveComponentFactory(this._type), this._viewContainerRef.length, this._injector, this._contentRef.nodes);\r\n }\r\n const { nativeElement } = this._windowRef.location;\r\n const transition$ = this._ngZone.onStable.pipe(take(1), mergeMap(() => ngbRunTransition(this._ngZone, nativeElement, ({ classList }) => classList.add('show'), { animation, runningTransition: 'continue' })));\r\n return { windowRef: this._windowRef, transition$ };\r\n }\r\n close(animation = false) {\r\n if (!this._windowRef) {\r\n return of(undefined);\r\n }\r\n return ngbRunTransition(this._ngZone, this._windowRef.location.nativeElement, ({ classList }) => classList.remove('show'), { animation, runningTransition: 'stop' })\r\n .pipe(tap(() => {\r\n var _a;\r\n if (this._windowRef) {\r\n // this is required because of the container='body' option\r\n this._viewContainerRef.remove(this._viewContainerRef.indexOf(this._windowRef.hostView));\r\n this._windowRef = null;\r\n }\r\n if ((_a = this._contentRef) === null || _a === void 0 ? void 0 : _a.viewRef) {\r\n this._applicationRef.detachView(this._contentRef.viewRef);\r\n this._contentRef.viewRef.destroy();\r\n this._contentRef = null;\r\n }\r\n }));\r\n }\r\n _getContentRef(content, context) {\r\n if (!content) {\r\n return new ContentRef([]);\r\n }\r\n else if (content instanceof TemplateRef) {\r\n const viewRef = content.createEmbeddedView(context);\r\n this._applicationRef.attachView(viewRef);\r\n return new ContentRef([viewRef.rootNodes], viewRef);\r\n }\r\n else {\r\n return new ContentRef([[this._renderer.createText(`${content}`)]]);\r\n }\r\n }\r\n}\n\nconst noop = () => { };\r\nconst ɵ0$3 = noop;\r\n/**\r\n * Utility to handle the scrollbar.\r\n *\r\n * It allows to compensate the lack of a vertical scrollbar by adding an\r\n * equivalent padding on the right of the body, and to remove this compensation.\r\n */\r\nclass ScrollBar {\r\n constructor(_document) {\r\n this._document = _document;\r\n }\r\n /**\r\n * To be called right before a potential vertical scrollbar would be removed:\r\n *\r\n * - if there was a scrollbar, adds some compensation padding to the body\r\n * to keep the same layout as when the scrollbar is there\r\n * - if there was none, there is nothing to do\r\n *\r\n * @return a callback used to revert the compensation (noop if there was none,\r\n * otherwise a function removing the padding)\r\n */\r\n compensate() {\r\n const width = this._getWidth();\r\n return !this._isPresent(width) ? noop : this._adjustBody(width);\r\n }\r\n /**\r\n * Adds a padding of the given width on the right of the body.\r\n *\r\n * @return a callback used to revert the padding to its previous value\r\n */\r\n _adjustBody(scrollbarWidth) {\r\n const body = this._document.body;\r\n const userSetPaddingStyle = body.style.paddingRight;\r\n const actualPadding = parseFloat(window.getComputedStyle(body)['padding-right']);\r\n body.style['padding-right'] = `${actualPadding + scrollbarWidth}px`;\r\n return () => body.style['padding-right'] = userSetPaddingStyle;\r\n }\r\n /**\r\n * Tells whether a scrollbar is currently present on the body.\r\n *\r\n * @return true if scrollbar is present, false otherwise\r\n */\r\n _isPresent(scrollbarWidth) {\r\n const rect = this._document.body.getBoundingClientRect();\r\n const bodyToViewportGap = window.innerWidth - (rect.left + rect.right);\r\n const uncertainty = 0.1 * scrollbarWidth;\r\n return bodyToViewportGap >= scrollbarWidth - uncertainty;\r\n }\r\n /**\r\n * Calculates and returns the width of a scrollbar.\r\n *\r\n * @return the width of a scrollbar on this page\r\n */\r\n _getWidth() {\r\n const measurer = this._document.createElement('div');\r\n measurer.className = 'modal-scrollbar-measure';\r\n const body = this._document.body;\r\n body.appendChild(measurer);\r\n const width = measurer.getBoundingClientRect().width - measurer.clientWidth;\r\n body.removeChild(measurer);\r\n return width;\r\n }\r\n}\nScrollBar.ɵfac = function ScrollBar_Factory(t) { return new (t || ScrollBar)(ɵngcc0.ɵɵinject(DOCUMENT)); };\r\nScrollBar.ɵprov = ɵɵdefineInjectable({ factory: function ScrollBar_Factory() { return new ScrollBar(ɵɵinject(DOCUMENT)); }, token: ScrollBar, providedIn: \"root\" });\r\nScrollBar.ctorParameters = () => [\r\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ScrollBar, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, null); })();\n\nclass NgbModalBackdrop {\r\n constructor(_el, _zone) {\r\n this._el = _el;\r\n this._zone = _zone;\r\n }\r\n ngOnInit() {\r\n this._zone.onStable.asObservable().pipe(take(1)).subscribe(() => {\r\n ngbRunTransition(this._zone, this._el.nativeElement, (element, animation) => {\r\n if (animation) {\r\n reflow(element);\r\n }\r\n element.classList.add('show');\r\n }, { animation: this.animation, runningTransition: 'continue' });\r\n });\r\n }\r\n hide() {\r\n return ngbRunTransition(this._zone, this._el.nativeElement, ({ classList }) => classList.remove('show'), { animation: this.animation, runningTransition: 'stop' });\r\n }\r\n}\nNgbModalBackdrop.ɵfac = function NgbModalBackdrop_Factory(t) { return new (t || NgbModalBackdrop)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nNgbModalBackdrop.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbModalBackdrop, selectors: [[\"ngb-modal-backdrop\"]], hostAttrs: [2, \"z-index\", \"1050\"], hostVars: 6, hostBindings: function NgbModalBackdrop_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassMap(\"modal-backdrop\" + (ctx.backdropClass ? \" \" + ctx.backdropClass : \"\"));\n ɵngcc0.ɵɵclassProp(\"show\", !ctx.animation)(\"fade\", ctx.animation);\n } }, inputs: { animation: \"animation\", backdropClass: \"backdropClass\" }, decls: 0, vars: 0, template: function NgbModalBackdrop_Template(rf, ctx) { }, encapsulation: 2 });\r\nNgbModalBackdrop.ctorParameters = () => [\r\n { type: ElementRef },\r\n { type: NgZone }\r\n];\r\nNgbModalBackdrop.propDecorators = {\r\n animation: [{ type: Input }],\r\n backdropClass: [{ type: Input }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbModalBackdrop, [{\n type: Component,\n args: [{\n selector: 'ngb-modal-backdrop',\n encapsulation: ViewEncapsulation.None,\n template: '',\n host: {\n '[class]': '\"modal-backdrop\" + (backdropClass ? \" \" + backdropClass : \"\")',\n '[class.show]': '!animation',\n '[class.fade]': 'animation',\n 'style': 'z-index: 1050'\n }\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }]; }, { animation: [{\n type: Input\n }], backdropClass: [{\n type: Input\n }] }); })();\n\n/**\r\n * A reference to the currently opened (active) modal.\r\n *\r\n * Instances of this class can be injected into your component passed as modal content.\r\n * So you can `.close()` or `.dismiss()` the modal window from your component.\r\n */\r\nclass NgbActiveModal {\r\n /**\r\n * Closes the modal with an optional `result` value.\r\n *\r\n * The `NgbModalRef.result` promise will be resolved with the provided value.\r\n */\r\n close(result) { }\r\n /**\r\n * Dismisses the modal with an optional `reason` value.\r\n *\r\n * The `NgbModalRef.result` promise will be rejected with the provided value.\r\n */\r\n dismiss(reason) { }\r\n}\r\n/**\r\n * A reference to the newly opened modal returned by the `NgbModal.open()` method.\r\n */\r\nclass NgbModalRef {\r\n constructor(_windowCmptRef, _contentRef, _backdropCmptRef, _beforeDismiss) {\r\n this._windowCmptRef = _windowCmptRef;\r\n this._contentRef = _contentRef;\r\n this._backdropCmptRef = _backdropCmptRef;\r\n this._beforeDismiss = _beforeDismiss;\r\n this._closed = new Subject();\r\n this._dismissed = new Subject();\r\n this._hidden = new Subject();\r\n _windowCmptRef.instance.dismissEvent.subscribe((reason) => { this.dismiss(reason); });\r\n this.result = new Promise((resolve, reject) => {\r\n this._resolve = resolve;\r\n this._reject = reject;\r\n });\r\n this.result.then(null, () => { });\r\n }\r\n /**\r\n * The instance of a component used for the modal content.\r\n *\r\n * When a `TemplateRef` is used as the content or when the modal is closed, will return `undefined`.\r\n */\r\n get componentInstance() {\r\n if (this._contentRef && this._contentRef.componentRef) {\r\n return this._contentRef.componentRef.instance;\r\n }\r\n }\r\n /**\r\n * The observable that emits when the modal is closed via the `.close()` method.\r\n *\r\n * It will emit the result passed to the `.close()` method.\r\n *\r\n * @since 8.0.0\r\n */\r\n get closed() { return this._closed.asObservable().pipe(takeUntil(this._hidden)); }\r\n /**\r\n * The observable that emits when the modal is dismissed via the `.dismiss()` method.\r\n *\r\n * It will emit the reason passed to the `.dismissed()` method by the user, or one of the internal\r\n * reasons like backdrop click or ESC key press.\r\n *\r\n * @since 8.0.0\r\n */\r\n get dismissed() { return this._dismissed.asObservable().pipe(takeUntil(this._hidden)); }\r\n /**\r\n * The observable that emits when both modal window and backdrop are closed and animations were finished.\r\n * At this point modal and backdrop elements will be removed from the DOM tree.\r\n *\r\n * This observable will be completed after emitting.\r\n *\r\n * @since 8.0.0\r\n */\r\n get hidden() { return this._hidden.asObservable(); }\r\n /**\r\n * The observable that emits when modal is fully visible and animation was finished.\r\n * Modal DOM element is always available synchronously after calling 'modal.open()' service.\r\n *\r\n * This observable will be completed after emitting.\r\n * It will not emit, if modal is closed before open animation is finished.\r\n *\r\n * @since 8.0.0\r\n */\r\n get shown() { return this._windowCmptRef.instance.shown.asObservable(); }\r\n /**\r\n * Closes the modal with an optional `result` value.\r\n *\r\n * The `NgbMobalRef.result` promise will be resolved with the provided value.\r\n */\r\n close(result) {\r\n if (this._windowCmptRef) {\r\n this._closed.next(result);\r\n this._resolve(result);\r\n this._removeModalElements();\r\n }\r\n }\r\n _dismiss(reason) {\r\n this._dismissed.next(reason);\r\n this._reject(reason);\r\n this._removeModalElements();\r\n }\r\n /**\r\n * Dismisses the modal with an optional `reason` value.\r\n *\r\n * The `NgbModalRef.result` promise will be rejected with the provided value.\r\n */\r\n dismiss(reason) {\r\n if (this._windowCmptRef) {\r\n if (!this._beforeDismiss) {\r\n this._dismiss(reason);\r\n }\r\n else {\r\n const dismiss = this._beforeDismiss();\r\n if (dismiss && dismiss.then) {\r\n dismiss.then(result => {\r\n if (result !== false) {\r\n this._dismiss(reason);\r\n }\r\n }, () => { });\r\n }\r\n else if (dismiss !== false) {\r\n this._dismiss(reason);\r\n }\r\n }\r\n }\r\n }\r\n _removeModalElements() {\r\n const windowTransition$ = this._windowCmptRef.instance.hide();\r\n const backdropTransition$ = this._backdropCmptRef ? this._backdropCmptRef.instance.hide() : of(undefined);\r\n // hiding window\r\n windowTransition$.subscribe(() => {\r\n const { nativeElement } = this._windowCmptRef.location;\r\n nativeElement.parentNode.removeChild(nativeElement);\r\n this._windowCmptRef.destroy();\r\n if (this._contentRef && this._contentRef.viewRef) {\r\n this._contentRef.viewRef.destroy();\r\n }\r\n this._windowCmptRef = null;\r\n this._contentRef = null;\r\n });\r\n // hiding backdrop\r\n backdropTransition$.subscribe(() => {\r\n if (this._backdropCmptRef) {\r\n const { nativeElement } = this._backdropCmptRef.location;\r\n nativeElement.parentNode.removeChild(nativeElement);\r\n this._backdropCmptRef.destroy();\r\n this._backdropCmptRef = null;\r\n }\r\n });\r\n // all done\r\n zip(windowTransition$, backdropTransition$).subscribe(() => {\r\n this._hidden.next();\r\n this._hidden.complete();\r\n });\r\n }\r\n}\n\nvar ModalDismissReasons;\r\n(function (ModalDismissReasons) {\r\n ModalDismissReasons[ModalDismissReasons[\"BACKDROP_CLICK\"] = 0] = \"BACKDROP_CLICK\";\r\n ModalDismissReasons[ModalDismissReasons[\"ESC\"] = 1] = \"ESC\";\r\n})(ModalDismissReasons || (ModalDismissReasons = {}));\n\nclass NgbModalWindow {\r\n constructor(_document, _elRef, _zone) {\r\n this._document = _document;\r\n this._elRef = _elRef;\r\n this._zone = _zone;\r\n this._closed$ = new Subject();\r\n this._elWithFocus = null; // element that is focused prior to modal opening\r\n this.backdrop = true;\r\n this.keyboard = true;\r\n this.dismissEvent = new EventEmitter();\r\n this.shown = new Subject();\r\n this.hidden = new Subject();\r\n }\r\n dismiss(reason) { this.dismissEvent.emit(reason); }\r\n ngOnInit() {\r\n this._elWithFocus = this._document.activeElement;\r\n this._zone.onStable.asObservable().pipe(take(1)).subscribe(() => { this._show(); });\r\n }\r\n ngOnDestroy() { this._disableEventHandling(); }\r\n hide() {\r\n const { nativeElement } = this._elRef;\r\n const context = { animation: this.animation, runningTransition: 'stop' };\r\n const windowTransition$ = ngbRunTransition(this._zone, nativeElement, () => nativeElement.classList.remove('show'), context);\r\n const dialogTransition$ = ngbRunTransition(this._zone, this._dialogEl.nativeElement, () => { }, context);\r\n const transitions$ = zip(windowTransition$, dialogTransition$);\r\n transitions$.subscribe(() => {\r\n this.hidden.next();\r\n this.hidden.complete();\r\n });\r\n this._disableEventHandling();\r\n this._restoreFocus();\r\n return transitions$;\r\n }\r\n _show() {\r\n const context = { animation: this.animation, runningTransition: 'continue' };\r\n const windowTransition$ = ngbRunTransition(this._zone, this._elRef.nativeElement, (element, animation) => {\r\n if (animation) {\r\n reflow(element);\r\n }\r\n element.classList.add('show');\r\n }, context);\r\n const dialogTransition$ = ngbRunTransition(this._zone, this._dialogEl.nativeElement, () => { }, context);\r\n zip(windowTransition$, dialogTransition$).subscribe(() => {\r\n this.shown.next();\r\n this.shown.complete();\r\n });\r\n this._enableEventHandling();\r\n this._setFocus();\r\n }\r\n _enableEventHandling() {\r\n const { nativeElement } = this._elRef;\r\n this._zone.runOutsideAngular(() => {\r\n fromEvent(nativeElement, 'keydown')\r\n .pipe(takeUntil(this._closed$), \r\n // tslint:disable-next-line:deprecation\r\n filter(e => e.which === Key.Escape))\r\n .subscribe(event => {\r\n if (this.keyboard) {\r\n requestAnimationFrame(() => {\r\n if (!event.defaultPrevented) {\r\n this._zone.run(() => this.dismiss(ModalDismissReasons.ESC));\r\n }\r\n });\r\n }\r\n else if (this.backdrop === 'static') {\r\n this._bumpBackdrop();\r\n }\r\n });\r\n // We're listening to 'mousedown' and 'mouseup' to prevent modal from closing when pressing the mouse\r\n // inside the modal dialog and releasing it outside\r\n let preventClose = false;\r\n fromEvent(this._dialogEl.nativeElement, 'mousedown')\r\n .pipe(takeUntil(this._closed$), tap(() => preventClose = false), switchMap(() => fromEvent(nativeElement, 'mouseup').pipe(takeUntil(this._closed$), take(1))), filter(({ target }) => nativeElement === target))\r\n .subscribe(() => { preventClose = true; });\r\n // We're listening to 'click' to dismiss modal on modal window click, except when:\r\n // 1. clicking on modal dialog itself\r\n // 2. closing was prevented by mousedown/up handlers\r\n // 3. clicking on scrollbar when the viewport is too small and modal doesn't fit (click is not triggered at all)\r\n fromEvent(nativeElement, 'click').pipe(takeUntil(this._closed$)).subscribe(({ target }) => {\r\n if (nativeElement === target) {\r\n if (this.backdrop === 'static') {\r\n this._bumpBackdrop();\r\n }\r\n else if (this.backdrop === true && !preventClose) {\r\n this._zone.run(() => this.dismiss(ModalDismissReasons.BACKDROP_CLICK));\r\n }\r\n }\r\n preventClose = false;\r\n });\r\n });\r\n }\r\n _disableEventHandling() { this._closed$.next(); }\r\n _setFocus() {\r\n const { nativeElement } = this._elRef;\r\n if (!nativeElement.contains(document.activeElement)) {\r\n const autoFocusable = nativeElement.querySelector(`[ngbAutofocus]`);\r\n const firstFocusable = getFocusableBoundaryElements(nativeElement)[0];\r\n const elementToFocus = autoFocusable || firstFocusable || nativeElement;\r\n elementToFocus.focus();\r\n }\r\n }\r\n _restoreFocus() {\r\n const body = this._document.body;\r\n const elWithFocus = this._elWithFocus;\r\n let elementToFocus;\r\n if (elWithFocus && elWithFocus['focus'] && body.contains(elWithFocus)) {\r\n elementToFocus = elWithFocus;\r\n }\r\n else {\r\n elementToFocus = body;\r\n }\r\n this._zone.runOutsideAngular(() => {\r\n setTimeout(() => elementToFocus.focus());\r\n this._elWithFocus = null;\r\n });\r\n }\r\n _bumpBackdrop() {\r\n if (this.backdrop === 'static') {\r\n ngbRunTransition(this._zone, this._elRef.nativeElement, ({ classList }) => {\r\n classList.add('modal-static');\r\n return () => classList.remove('modal-static');\r\n }, { animation: this.animation, runningTransition: 'continue' });\r\n }\r\n }\r\n}\nNgbModalWindow.ɵfac = function NgbModalWindow_Factory(t) { return new (t || NgbModalWindow)(ɵngcc0.ɵɵdirectiveInject(DOCUMENT), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nNgbModalWindow.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbModalWindow, selectors: [[\"ngb-modal-window\"]], viewQuery: function NgbModalWindow_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c31, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._dialogEl = _t.first);\n } }, hostAttrs: [\"role\", \"dialog\", \"tabindex\", \"-1\"], hostVars: 7, hostBindings: function NgbModalWindow_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"aria-modal\", true)(\"aria-labelledby\", ctx.ariaLabelledBy)(\"aria-describedby\", ctx.ariaDescribedBy);\n ɵngcc0.ɵɵclassMap(\"modal d-block\" + (ctx.windowClass ? \" \" + ctx.windowClass : \"\"));\n ɵngcc0.ɵɵclassProp(\"fade\", ctx.animation);\n } }, inputs: { backdrop: \"backdrop\", keyboard: \"keyboard\", animation: \"animation\", ariaLabelledBy: \"ariaLabelledBy\", ariaDescribedBy: \"ariaDescribedBy\", centered: \"centered\", scrollable: \"scrollable\", size: \"size\", windowClass: \"windowClass\", modalDialogClass: \"modalDialogClass\" }, outputs: { dismissEvent: \"dismiss\" }, ngContentSelectors: _c3, decls: 4, vars: 2, consts: [[\"role\", \"document\"], [\"dialog\", \"\"], [1, \"modal-content\"]], template: function NgbModalWindow_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵelementStart(0, \"div\", 0, 1);\n ɵngcc0.ɵɵelementStart(2, \"div\", 2);\n ɵngcc0.ɵɵprojection(3);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵclassMap(\"modal-dialog\" + (ctx.size ? \" modal-\" + ctx.size : \"\") + (ctx.centered ? \" modal-dialog-centered\" : \"\") + (ctx.scrollable ? \" modal-dialog-scrollable\" : \"\") + (ctx.modalDialogClass ? \" \" + ctx.modalDialogClass : \"\"));\n } }, styles: [\"ngb-modal-window .component-host-scrollable{display:flex;flex-direction:column;overflow:hidden}\"], encapsulation: 2 });\r\nNgbModalWindow.ctorParameters = () => [\r\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\r\n { type: ElementRef },\r\n { type: NgZone }\r\n];\r\nNgbModalWindow.propDecorators = {\r\n _dialogEl: [{ type: ViewChild, args: ['dialog', { static: true },] }],\r\n animation: [{ type: Input }],\r\n ariaLabelledBy: [{ type: Input }],\r\n ariaDescribedBy: [{ type: Input }],\r\n backdrop: [{ type: Input }],\r\n centered: [{ type: Input }],\r\n keyboard: [{ type: Input }],\r\n scrollable: [{ type: Input }],\r\n size: [{ type: Input }],\r\n windowClass: [{ type: Input }],\r\n modalDialogClass: [{ type: Input }],\r\n dismissEvent: [{ type: Output, args: ['dismiss',] }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbModalWindow, [{\n type: Component,\n args: [{\n selector: 'ngb-modal-window',\n host: {\n '[class]': '\"modal d-block\" + (windowClass ? \" \" + windowClass : \"\")',\n '[class.fade]': 'animation',\n 'role': 'dialog',\n 'tabindex': '-1',\n '[attr.aria-modal]': 'true',\n '[attr.aria-labelledby]': 'ariaLabelledBy',\n '[attr.aria-describedby]': 'ariaDescribedBy'\n },\n template: `\r\n
    \r\n
    \r\n
    \r\n `,\n encapsulation: ViewEncapsulation.None,\n styles: [\"ngb-modal-window .component-host-scrollable{display:flex;flex-direction:column;overflow:hidden}\"]\n }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }]; }, { backdrop: [{\n type: Input\n }], keyboard: [{\n type: Input\n }], dismissEvent: [{\n type: Output,\n args: ['dismiss']\n }], _dialogEl: [{\n type: ViewChild,\n args: ['dialog', { static: true }]\n }], animation: [{\n type: Input\n }], ariaLabelledBy: [{\n type: Input\n }], ariaDescribedBy: [{\n type: Input\n }], centered: [{\n type: Input\n }], scrollable: [{\n type: Input\n }], size: [{\n type: Input\n }], windowClass: [{\n type: Input\n }], modalDialogClass: [{\n type: Input\n }] }); })();\n\nclass NgbModalStack {\r\n constructor(_applicationRef, _injector, _document, _scrollBar, _rendererFactory, _ngZone) {\r\n this._applicationRef = _applicationRef;\r\n this._injector = _injector;\r\n this._document = _document;\r\n this._scrollBar = _scrollBar;\r\n this._rendererFactory = _rendererFactory;\r\n this._ngZone = _ngZone;\r\n this._activeWindowCmptHasChanged = new Subject();\r\n this._ariaHiddenValues = new Map();\r\n this._backdropAttributes = ['animation', 'backdropClass'];\r\n this._modalRefs = [];\r\n this._windowAttributes = [\r\n 'animation', 'ariaLabelledBy', 'ariaDescribedBy', 'backdrop', 'centered', 'keyboard', 'scrollable', 'size',\r\n 'windowClass', 'modalDialogClass'\r\n ];\r\n this._windowCmpts = [];\r\n this._activeInstances = new EventEmitter();\r\n // Trap focus on active WindowCmpt\r\n this._activeWindowCmptHasChanged.subscribe(() => {\r\n if (this._windowCmpts.length) {\r\n const activeWindowCmpt = this._windowCmpts[this._windowCmpts.length - 1];\r\n ngbFocusTrap(this._ngZone, activeWindowCmpt.location.nativeElement, this._activeWindowCmptHasChanged);\r\n this._revertAriaHidden();\r\n this._setAriaHidden(activeWindowCmpt.location.nativeElement);\r\n }\r\n });\r\n }\r\n open(moduleCFR, contentInjector, content, options) {\r\n const containerEl = options.container instanceof HTMLElement ? options.container : isDefined(options.container) ?\r\n this._document.querySelector(options.container) :\r\n this._document.body;\r\n const renderer = this._rendererFactory.createRenderer(null, null);\r\n const revertPaddingForScrollBar = this._scrollBar.compensate();\r\n const removeBodyClass = () => {\r\n if (!this._modalRefs.length) {\r\n renderer.removeClass(this._document.body, 'modal-open');\r\n this._revertAriaHidden();\r\n }\r\n };\r\n if (!containerEl) {\r\n throw new Error(`The specified modal container \"${options.container || 'body'}\" was not found in the DOM.`);\r\n }\r\n const activeModal = new NgbActiveModal();\r\n const contentRef = this._getContentRef(moduleCFR, options.injector || contentInjector, content, activeModal, options);\r\n let backdropCmptRef = options.backdrop !== false ? this._attachBackdrop(moduleCFR, containerEl) : undefined;\r\n let windowCmptRef = this._attachWindowComponent(moduleCFR, containerEl, contentRef);\r\n let ngbModalRef = new NgbModalRef(windowCmptRef, contentRef, backdropCmptRef, options.beforeDismiss);\r\n this._registerModalRef(ngbModalRef);\r\n this._registerWindowCmpt(windowCmptRef);\r\n ngbModalRef.result.then(revertPaddingForScrollBar, revertPaddingForScrollBar);\r\n ngbModalRef.result.then(removeBodyClass, removeBodyClass);\r\n activeModal.close = (result) => { ngbModalRef.close(result); };\r\n activeModal.dismiss = (reason) => { ngbModalRef.dismiss(reason); };\r\n this._applyWindowOptions(windowCmptRef.instance, options);\r\n if (this._modalRefs.length === 1) {\r\n renderer.addClass(this._document.body, 'modal-open');\r\n }\r\n if (backdropCmptRef && backdropCmptRef.instance) {\r\n this._applyBackdropOptions(backdropCmptRef.instance, options);\r\n backdropCmptRef.changeDetectorRef.detectChanges();\r\n }\r\n windowCmptRef.changeDetectorRef.detectChanges();\r\n return ngbModalRef;\r\n }\r\n get activeInstances() { return this._activeInstances; }\r\n dismissAll(reason) { this._modalRefs.forEach(ngbModalRef => ngbModalRef.dismiss(reason)); }\r\n hasOpenModals() { return this._modalRefs.length > 0; }\r\n _attachBackdrop(moduleCFR, containerEl) {\r\n let backdropFactory = moduleCFR.resolveComponentFactory(NgbModalBackdrop);\r\n let backdropCmptRef = backdropFactory.create(this._injector);\r\n this._applicationRef.attachView(backdropCmptRef.hostView);\r\n containerEl.appendChild(backdropCmptRef.location.nativeElement);\r\n return backdropCmptRef;\r\n }\r\n _attachWindowComponent(moduleCFR, containerEl, contentRef) {\r\n let windowFactory = moduleCFR.resolveComponentFactory(NgbModalWindow);\r\n let windowCmptRef = windowFactory.create(this._injector, contentRef.nodes);\r\n this._applicationRef.attachView(windowCmptRef.hostView);\r\n containerEl.appendChild(windowCmptRef.location.nativeElement);\r\n return windowCmptRef;\r\n }\r\n _applyWindowOptions(windowInstance, options) {\r\n this._windowAttributes.forEach((optionName) => {\r\n if (isDefined(options[optionName])) {\r\n windowInstance[optionName] = options[optionName];\r\n }\r\n });\r\n }\r\n _applyBackdropOptions(backdropInstance, options) {\r\n this._backdropAttributes.forEach((optionName) => {\r\n if (isDefined(options[optionName])) {\r\n backdropInstance[optionName] = options[optionName];\r\n }\r\n });\r\n }\r\n _getContentRef(moduleCFR, contentInjector, content, activeModal, options) {\r\n if (!content) {\r\n return new ContentRef([]);\r\n }\r\n else if (content instanceof TemplateRef) {\r\n return this._createFromTemplateRef(content, activeModal);\r\n }\r\n else if (isString(content)) {\r\n return this._createFromString(content);\r\n }\r\n else {\r\n return this._createFromComponent(moduleCFR, contentInjector, content, activeModal, options);\r\n }\r\n }\r\n _createFromTemplateRef(content, activeModal) {\r\n const context = {\r\n $implicit: activeModal,\r\n close(result) { activeModal.close(result); },\r\n dismiss(reason) { activeModal.dismiss(reason); }\r\n };\r\n const viewRef = content.createEmbeddedView(context);\r\n this._applicationRef.attachView(viewRef);\r\n return new ContentRef([viewRef.rootNodes], viewRef);\r\n }\r\n _createFromString(content) {\r\n const component = this._document.createTextNode(`${content}`);\r\n return new ContentRef([[component]]);\r\n }\r\n _createFromComponent(moduleCFR, contentInjector, content, context, options) {\r\n const contentCmptFactory = moduleCFR.resolveComponentFactory(content);\r\n const modalContentInjector = Injector.create({ providers: [{ provide: NgbActiveModal, useValue: context }], parent: contentInjector });\r\n const componentRef = contentCmptFactory.create(modalContentInjector);\r\n const componentNativeEl = componentRef.location.nativeElement;\r\n if (options.scrollable) {\r\n componentNativeEl.classList.add('component-host-scrollable');\r\n }\r\n this._applicationRef.attachView(componentRef.hostView);\r\n // FIXME: we should here get rid of the component nativeElement\r\n // and use `[Array.from(componentNativeEl.childNodes)]` instead and remove the above CSS class.\r\n return new ContentRef([[componentNativeEl]], componentRef.hostView, componentRef);\r\n }\r\n _setAriaHidden(element) {\r\n const parent = element.parentElement;\r\n if (parent && element !== this._document.body) {\r\n Array.from(parent.children).forEach(sibling => {\r\n if (sibling !== element && sibling.nodeName !== 'SCRIPT') {\r\n this._ariaHiddenValues.set(sibling, sibling.getAttribute('aria-hidden'));\r\n sibling.setAttribute('aria-hidden', 'true');\r\n }\r\n });\r\n this._setAriaHidden(parent);\r\n }\r\n }\r\n _revertAriaHidden() {\r\n this._ariaHiddenValues.forEach((value, element) => {\r\n if (value) {\r\n element.setAttribute('aria-hidden', value);\r\n }\r\n else {\r\n element.removeAttribute('aria-hidden');\r\n }\r\n });\r\n this._ariaHiddenValues.clear();\r\n }\r\n _registerModalRef(ngbModalRef) {\r\n const unregisterModalRef = () => {\r\n const index = this._modalRefs.indexOf(ngbModalRef);\r\n if (index > -1) {\r\n this._modalRefs.splice(index, 1);\r\n this._activeInstances.emit(this._modalRefs);\r\n }\r\n };\r\n this._modalRefs.push(ngbModalRef);\r\n this._activeInstances.emit(this._modalRefs);\r\n ngbModalRef.result.then(unregisterModalRef, unregisterModalRef);\r\n }\r\n _registerWindowCmpt(ngbWindowCmpt) {\r\n this._windowCmpts.push(ngbWindowCmpt);\r\n this._activeWindowCmptHasChanged.next();\r\n ngbWindowCmpt.onDestroy(() => {\r\n const index = this._windowCmpts.indexOf(ngbWindowCmpt);\r\n if (index > -1) {\r\n this._windowCmpts.splice(index, 1);\r\n this._activeWindowCmptHasChanged.next();\r\n }\r\n });\r\n }\r\n}\nNgbModalStack.ɵfac = function NgbModalStack_Factory(t) { return new (t || NgbModalStack)(ɵngcc0.ɵɵinject(ɵngcc0.ApplicationRef), ɵngcc0.ɵɵinject(ɵngcc0.Injector), ɵngcc0.ɵɵinject(DOCUMENT), ɵngcc0.ɵɵinject(ScrollBar), ɵngcc0.ɵɵinject(ɵngcc0.RendererFactory2), ɵngcc0.ɵɵinject(ɵngcc0.NgZone)); };\r\nNgbModalStack.ɵprov = ɵɵdefineInjectable({ factory: function NgbModalStack_Factory() { return new NgbModalStack(ɵɵinject(ApplicationRef), ɵɵinject(INJECTOR), ɵɵinject(DOCUMENT), ɵɵinject(ScrollBar), ɵɵinject(RendererFactory2), ɵɵinject(NgZone)); }, token: NgbModalStack, providedIn: \"root\" });\r\nNgbModalStack.ctorParameters = () => [\r\n { type: ApplicationRef },\r\n { type: Injector },\r\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\r\n { type: ScrollBar },\r\n { type: RendererFactory2 },\r\n { type: NgZone }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbModalStack, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: ɵngcc0.ApplicationRef }, { type: ɵngcc0.Injector }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ScrollBar }, { type: ɵngcc0.RendererFactory2 }, { type: ɵngcc0.NgZone }]; }, null); })();\n\n/**\r\n * A service for opening modal windows.\r\n *\r\n * Creating a modal is straightforward: create a component or a template and pass it as an argument to\r\n * the `.open()` method.\r\n */\r\nclass NgbModal {\r\n constructor(_moduleCFR, _injector, _modalStack, _config) {\r\n this._moduleCFR = _moduleCFR;\r\n this._injector = _injector;\r\n this._modalStack = _modalStack;\r\n this._config = _config;\r\n }\r\n /**\r\n * Opens a new modal window with the specified content and supplied options.\r\n *\r\n * Content can be provided as a `TemplateRef` or a component type. If you pass a component type as content,\r\n * then instances of those components can be injected with an instance of the `NgbActiveModal` class. You can then\r\n * use `NgbActiveModal` methods to close / dismiss modals from \"inside\" of your component.\r\n *\r\n * Also see the [`NgbModalOptions`](#/components/modal/api#NgbModalOptions) for the list of supported options.\r\n */\r\n open(content, options = {}) {\r\n const combinedOptions = Object.assign(Object.assign(Object.assign({}, this._config), { animation: this._config.animation }), options);\r\n return this._modalStack.open(this._moduleCFR, this._injector, content, combinedOptions);\r\n }\r\n /**\r\n * Returns an observable that holds the active modal instances.\r\n */\r\n get activeInstances() { return this._modalStack.activeInstances; }\r\n /**\r\n * Dismisses all currently displayed modal windows with the supplied reason.\r\n *\r\n * @since 3.1.0\r\n */\r\n dismissAll(reason) { this._modalStack.dismissAll(reason); }\r\n /**\r\n * Indicates if there are currently any open modal windows in the application.\r\n *\r\n * @since 3.3.0\r\n */\r\n hasOpenModals() { return this._modalStack.hasOpenModals(); }\r\n}\nNgbModal.ɵfac = function NgbModal_Factory(t) { return new (t || NgbModal)(ɵngcc0.ɵɵinject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵinject(ɵngcc0.Injector), ɵngcc0.ɵɵinject(NgbModalStack), ɵngcc0.ɵɵinject(NgbModalConfig)); };\r\nNgbModal.ɵprov = ɵɵdefineInjectable({ factory: function NgbModal_Factory() { return new NgbModal(ɵɵinject(ComponentFactoryResolver), ɵɵinject(INJECTOR), ɵɵinject(NgbModalStack), ɵɵinject(NgbModalConfig)); }, token: NgbModal, providedIn: \"root\" });\r\nNgbModal.ctorParameters = () => [\r\n { type: ComponentFactoryResolver },\r\n { type: Injector },\r\n { type: NgbModalStack },\r\n { type: NgbModalConfig }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbModal, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: ɵngcc0.ComponentFactoryResolver }, { type: ɵngcc0.Injector }, { type: NgbModalStack }, { type: NgbModalConfig }]; }, null); })();\n\nclass NgbModalModule {\r\n}\nNgbModalModule.ɵfac = function NgbModalModule_Factory(t) { return new (t || NgbModalModule)(); };\nNgbModalModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbModalModule });\nNgbModalModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ providers: [NgbModal] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbModalModule, [{\n type: NgModule,\n args: [{\n declarations: [NgbModalBackdrop, NgbModalWindow],\n entryComponents: [NgbModalBackdrop, NgbModalWindow],\n providers: [NgbModal]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbModalModule, { declarations: [NgbModalBackdrop, NgbModalWindow] }); })();\n\n/**\r\n * A configuration service for the [`NgbNav`](#/components/nav/api#NgbNav) component.\r\n *\r\n * You can inject this service, typically in your root component, and customize the values of its properties in\r\n * order to provide default values for all the navs used in the application.\r\n *\r\n * @since 5.2.0\r\n */\r\nclass NgbNavConfig {\r\n constructor(_ngbConfig) {\r\n this._ngbConfig = _ngbConfig;\r\n this.destroyOnHide = true;\r\n this.orientation = 'horizontal';\r\n this.roles = 'tablist';\r\n this.keyboard = false;\r\n }\r\n get animation() { return (this._animation === undefined) ? this._ngbConfig.animation : this._animation; }\r\n set animation(animation) { this._animation = animation; }\r\n}\nNgbNavConfig.ɵfac = function NgbNavConfig_Factory(t) { return new (t || NgbNavConfig)(ɵngcc0.ɵɵinject(NgbConfig)); };\r\nNgbNavConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgbNavConfig_Factory() { return new NgbNavConfig(ɵɵinject(NgbConfig)); }, token: NgbNavConfig, providedIn: \"root\" });\r\nNgbNavConfig.ctorParameters = () => [\r\n { type: NgbConfig }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbNavConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: NgbConfig }]; }, null); })();\n\nconst isValidNavId = (id) => isDefined(id) && id !== '';\r\nconst ɵ0$4 = isValidNavId;\r\nlet navCounter = 0;\r\n/**\r\n * This directive must be used to wrap content to be displayed in the nav.\r\n *\r\n * @since 5.2.0\r\n */\r\nclass NgbNavContent {\r\n constructor(templateRef) {\r\n this.templateRef = templateRef;\r\n }\r\n}\nNgbNavContent.ɵfac = function NgbNavContent_Factory(t) { return new (t || NgbNavContent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbNavContent.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbNavContent, selectors: [[\"ng-template\", \"ngbNavContent\", \"\"]] });\r\nNgbNavContent.ctorParameters = () => [\r\n { type: TemplateRef }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbNavContent, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbNavContent]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\r\n/**\r\n * The directive used to group nav link and related nav content. As well as set nav identifier and some options.\r\n *\r\n * @since 5.2.0\r\n */\r\nclass NgbNavItem {\r\n constructor(nav, elementRef) {\r\n this.elementRef = elementRef;\r\n /**\r\n * If `true`, the current nav item is disabled and can't be toggled by user.\r\n *\r\n * Nevertheless disabled nav can be selected programmatically via the `.select()` method and the `[activeId]` binding.\r\n */\r\n this.disabled = false;\r\n /**\r\n * An event emitted when the fade in transition is finished on the related nav content\r\n *\r\n * @since 8.0.0\r\n */\r\n this.shown = new EventEmitter();\r\n /**\r\n * An event emitted when the fade out transition is finished on the related nav content\r\n *\r\n * @since 8.0.0\r\n */\r\n this.hidden = new EventEmitter();\r\n // TODO: cf https://github.com/angular/angular/issues/30106\r\n this._nav = nav;\r\n }\r\n ngAfterContentChecked() {\r\n // We are using @ContentChildren instead of @ContentChild as in the Angular version being used\r\n // only @ContentChildren allows us to specify the {descendants: false} option.\r\n // Without {descendants: false} we are hitting bugs described in:\r\n // https://github.com/ng-bootstrap/ng-bootstrap/issues/2240\r\n this.contentTpl = this.contentTpls.first;\r\n }\r\n ngOnInit() {\r\n if (!isDefined(this.domId)) {\r\n this.domId = `ngb-nav-${navCounter++}`;\r\n }\r\n }\r\n get active() { return this._nav.activeId === this.id; }\r\n get id() { return isValidNavId(this._id) ? this._id : this.domId; }\r\n get panelDomId() { return `${this.domId}-panel`; }\r\n isPanelInDom() {\r\n return (isDefined(this.destroyOnHide) ? !this.destroyOnHide : !this._nav.destroyOnHide) || this.active;\r\n }\r\n}\nNgbNavItem.ɵfac = function NgbNavItem_Factory(t) { return new (t || NgbNavItem)(ɵngcc0.ɵɵdirectiveInject(forwardRef(() => NgbNav)), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nNgbNavItem.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbNavItem, selectors: [[\"\", \"ngbNavItem\", \"\"]], contentQueries: function NgbNavItem_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbNavContent, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.contentTpls = _t);\n } }, hostVars: 2, hostBindings: function NgbNavItem_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"nav-item\", true);\n } }, inputs: { disabled: \"disabled\", domId: \"domId\", destroyOnHide: \"destroyOnHide\", _id: [\"ngbNavItem\", \"_id\"] }, outputs: { shown: \"shown\", hidden: \"hidden\" }, exportAs: [\"ngbNavItem\"] });\r\nNgbNavItem.ctorParameters = () => [\r\n { type: undefined, decorators: [{ type: Inject, args: [forwardRef(() => NgbNav),] }] },\r\n { type: ElementRef }\r\n];\r\nNgbNavItem.propDecorators = {\r\n destroyOnHide: [{ type: Input }],\r\n disabled: [{ type: Input }],\r\n domId: [{ type: Input }],\r\n _id: [{ type: Input, args: ['ngbNavItem',] }],\r\n shown: [{ type: Output }],\r\n hidden: [{ type: Output }],\r\n contentTpls: [{ type: ContentChildren, args: [NgbNavContent, { descendants: false },] }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbNavItem, [{\n type: Directive,\n args: [{ selector: '[ngbNavItem]', exportAs: 'ngbNavItem', host: { '[class.nav-item]': 'true' } }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [forwardRef(() => NgbNav)]\n }] }, { type: ɵngcc0.ElementRef }]; }, { disabled: [{\n type: Input\n }], shown: [{\n type: Output\n }], hidden: [{\n type: Output\n }], domId: [{\n type: Input\n }], destroyOnHide: [{\n type: Input\n }], _id: [{\n type: Input,\n args: ['ngbNavItem']\n }], contentTpls: [{\n type: ContentChildren,\n args: [NgbNavContent, { descendants: false }]\n }] }); })();\r\n/**\r\n * A nav directive that helps with implementing tabbed navigation components.\r\n *\r\n * @since 5.2.0\r\n */\r\nclass NgbNav {\r\n constructor(role, config, _cd, _document) {\r\n this.role = role;\r\n this._cd = _cd;\r\n this._document = _document;\r\n /**\r\n * The event emitted after the active nav changes\r\n * The payload of the event is the newly active nav id\r\n *\r\n * If you want to prevent nav change, you should use `(navChange)` event\r\n */\r\n this.activeIdChange = new EventEmitter();\r\n /**\r\n * An event emitted when the fade in transition is finished for one of the items.\r\n *\r\n * Payload of the event is the nav id that was just shown.\r\n *\r\n * @since 8.0.0\r\n */\r\n this.shown = new EventEmitter();\r\n /**\r\n * An event emitted when the fade out transition is finished for one of the items.\r\n *\r\n * Payload of the event is the nav id that was just hidden.\r\n *\r\n * @since 8.0.0\r\n */\r\n this.hidden = new EventEmitter();\r\n this.destroy$ = new Subject();\r\n this.navItemChange$ = new Subject();\r\n /**\r\n * The nav change event emitted right before the nav change happens on user click.\r\n *\r\n * This event won't be emitted if nav is changed programmatically via `[activeId]` or `.select()`.\r\n *\r\n * See [`NgbNavChangeEvent`](#/components/nav/api#NgbNavChangeEvent) for payload details.\r\n */\r\n this.navChange = new EventEmitter();\r\n this.animation = config.animation;\r\n this.destroyOnHide = config.destroyOnHide;\r\n this.orientation = config.orientation;\r\n this.roles = config.roles;\r\n this.keyboard = config.keyboard;\r\n }\r\n click(item) {\r\n if (!item.disabled) {\r\n this._updateActiveId(item.id);\r\n }\r\n }\r\n onKeyDown(event) {\r\n if (this.roles !== 'tablist' || !this.keyboard) {\r\n return;\r\n }\r\n // tslint:disable-next-line: deprecation\r\n const key = event.which;\r\n const enabledLinks = this.links.filter(link => !link.navItem.disabled);\r\n const { length } = enabledLinks;\r\n let position = -1;\r\n enabledLinks.forEach((link, index) => {\r\n if (link.elRef.nativeElement === this._document.activeElement) {\r\n position = index;\r\n }\r\n });\r\n if (length) {\r\n switch (key) {\r\n case Key.ArrowLeft:\r\n if (this.orientation === 'vertical') {\r\n return;\r\n }\r\n position = (position - 1 + length) % length;\r\n break;\r\n case Key.ArrowRight:\r\n if (this.orientation === 'vertical') {\r\n return;\r\n }\r\n position = (position + 1) % length;\r\n break;\r\n case Key.ArrowDown:\r\n if (this.orientation === 'horizontal') {\r\n return;\r\n }\r\n position = (position + 1) % length;\r\n break;\r\n case Key.ArrowUp:\r\n if (this.orientation === 'horizontal') {\r\n return;\r\n }\r\n position = (position - 1 + length) % length;\r\n break;\r\n case Key.Home:\r\n position = 0;\r\n break;\r\n case Key.End:\r\n position = length - 1;\r\n break;\r\n }\r\n if (this.keyboard === 'changeWithArrows') {\r\n this.select(enabledLinks[position].navItem.id);\r\n }\r\n enabledLinks[position].elRef.nativeElement.focus();\r\n event.preventDefault();\r\n }\r\n }\r\n /**\r\n * Selects the nav with the given id and shows its associated pane.\r\n * Any other nav that was previously selected becomes unselected and its associated pane is hidden.\r\n */\r\n select(id) { this._updateActiveId(id, false); }\r\n ngAfterContentInit() {\r\n if (!isDefined(this.activeId)) {\r\n const nextId = this.items.first ? this.items.first.id : null;\r\n if (isValidNavId(nextId)) {\r\n this._updateActiveId(nextId, false);\r\n this._cd.detectChanges();\r\n }\r\n }\r\n this.items.changes.pipe(takeUntil(this.destroy$)).subscribe(() => this._notifyItemChanged(this.activeId));\r\n }\r\n ngOnChanges({ activeId }) {\r\n if (activeId && !activeId.firstChange) {\r\n this._notifyItemChanged(activeId.currentValue);\r\n }\r\n }\r\n ngOnDestroy() { this.destroy$.next(); }\r\n _updateActiveId(nextId, emitNavChange = true) {\r\n if (this.activeId !== nextId) {\r\n let defaultPrevented = false;\r\n if (emitNavChange) {\r\n this.navChange.emit({ activeId: this.activeId, nextId, preventDefault: () => { defaultPrevented = true; } });\r\n }\r\n if (!defaultPrevented) {\r\n this.activeId = nextId;\r\n this.activeIdChange.emit(nextId);\r\n this._notifyItemChanged(nextId);\r\n }\r\n }\r\n }\r\n _notifyItemChanged(nextItemId) { this.navItemChange$.next(this._getItemById(nextItemId)); }\r\n _getItemById(itemId) {\r\n return this.items && this.items.find(item => item.id === itemId) || null;\r\n }\r\n}\nNgbNav.ɵfac = function NgbNav_Factory(t) { return new (t || NgbNav)(ɵngcc0.ɵɵinjectAttribute('role'), ɵngcc0.ɵɵdirectiveInject(NgbNavConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(DOCUMENT)); };\nNgbNav.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbNav, selectors: [[\"\", \"ngbNav\", \"\"]], contentQueries: function NgbNav_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbNavItem, 4);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbNavLink, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.items = _t);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.links = _t);\n } }, hostVars: 6, hostBindings: function NgbNav_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"keydown.arrowLeft\", function NgbNav_keydown_arrowLeft_HostBindingHandler($event) { return ctx.onKeyDown($event); })(\"keydown.arrowRight\", function NgbNav_keydown_arrowRight_HostBindingHandler($event) { return ctx.onKeyDown($event); })(\"keydown.arrowDown\", function NgbNav_keydown_arrowDown_HostBindingHandler($event) { return ctx.onKeyDown($event); })(\"keydown.arrowUp\", function NgbNav_keydown_arrowUp_HostBindingHandler($event) { return ctx.onKeyDown($event); })(\"keydown.Home\", function NgbNav_keydown_Home_HostBindingHandler($event) { return ctx.onKeyDown($event); })(\"keydown.End\", function NgbNav_keydown_End_HostBindingHandler($event) { return ctx.onKeyDown($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"aria-orientation\", ctx.orientation === \"vertical\" && ctx.roles === \"tablist\" ? \"vertical\" : undefined)(\"role\", ctx.role ? ctx.role : ctx.roles ? \"tablist\" : undefined);\n ɵngcc0.ɵɵclassProp(\"nav\", true)(\"flex-column\", ctx.orientation === \"vertical\");\n } }, inputs: { animation: \"animation\", destroyOnHide: \"destroyOnHide\", orientation: \"orientation\", roles: \"roles\", keyboard: \"keyboard\", activeId: \"activeId\" }, outputs: { activeIdChange: \"activeIdChange\", shown: \"shown\", hidden: \"hidden\", navChange: \"navChange\" }, exportAs: [\"ngbNav\"], features: [ɵngcc0.ɵɵNgOnChangesFeature] });\r\nNgbNav.ctorParameters = () => [\r\n { type: String, decorators: [{ type: Attribute, args: ['role',] }] },\r\n { type: NgbNavConfig },\r\n { type: ChangeDetectorRef },\r\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }\r\n];\r\nNgbNav.propDecorators = {\r\n activeId: [{ type: Input }],\r\n activeIdChange: [{ type: Output }],\r\n animation: [{ type: Input }],\r\n destroyOnHide: [{ type: Input }],\r\n orientation: [{ type: Input }],\r\n roles: [{ type: Input }],\r\n keyboard: [{ type: Input }],\r\n shown: [{ type: Output }],\r\n hidden: [{ type: Output }],\r\n items: [{ type: ContentChildren, args: [NgbNavItem,] }],\r\n links: [{ type: ContentChildren, args: [forwardRef(() => NgbNavLink), { descendants: true },] }],\r\n navChange: [{ type: Output }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbNav, [{\n type: Directive,\n args: [{\n selector: '[ngbNav]',\n exportAs: 'ngbNav',\n host: {\n '[class.nav]': 'true',\n '[class.flex-column]': `orientation === 'vertical'`,\n '[attr.aria-orientation]': `orientation === 'vertical' && roles === 'tablist' ? 'vertical' : undefined`,\n '[attr.role]': `role ? role : roles ? 'tablist' : undefined`,\n '(keydown.arrowLeft)': 'onKeyDown($event)',\n '(keydown.arrowRight)': 'onKeyDown($event)',\n '(keydown.arrowDown)': 'onKeyDown($event)',\n '(keydown.arrowUp)': 'onKeyDown($event)',\n '(keydown.Home)': 'onKeyDown($event)',\n '(keydown.End)': 'onKeyDown($event)'\n }\n }]\n }], function () { return [{ type: String, decorators: [{\n type: Attribute,\n args: ['role']\n }] }, { type: NgbNavConfig }, { type: ɵngcc0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, { activeIdChange: [{\n type: Output\n }], shown: [{\n type: Output\n }], hidden: [{\n type: Output\n }], navChange: [{\n type: Output\n }], animation: [{\n type: Input\n }], destroyOnHide: [{\n type: Input\n }], orientation: [{\n type: Input\n }], roles: [{\n type: Input\n }], keyboard: [{\n type: Input\n }], activeId: [{\n type: Input\n }], items: [{\n type: ContentChildren,\n args: [NgbNavItem]\n }], links: [{\n type: ContentChildren,\n args: [forwardRef(() => NgbNavLink), { descendants: true }]\n }] }); })();\r\n/**\r\n * A directive to put on the nav link.\r\n *\r\n * @since 5.2.0\r\n */\r\nclass NgbNavLink {\r\n constructor(role, navItem, nav, elRef) {\r\n this.role = role;\r\n this.navItem = navItem;\r\n this.nav = nav;\r\n this.elRef = elRef;\r\n }\r\n hasNavItemClass() {\r\n // with alternative markup we have to add `.nav-item` class, because `ngbNavItem` is on the ng-container\r\n return this.navItem.elementRef.nativeElement.nodeType === Node.COMMENT_NODE;\r\n }\r\n}\nNgbNavLink.ɵfac = function NgbNavLink_Factory(t) { return new (t || NgbNavLink)(ɵngcc0.ɵɵinjectAttribute('role'), ɵngcc0.ɵɵdirectiveInject(NgbNavItem), ɵngcc0.ɵɵdirectiveInject(NgbNav), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nNgbNavLink.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbNavLink, selectors: [[\"a\", \"ngbNavLink\", \"\"]], hostAttrs: [\"href\", \"\"], hostVars: 14, hostBindings: function NgbNavLink_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function NgbNavLink_click_HostBindingHandler($event) { ctx.nav.click(ctx.navItem); return $event.preventDefault(); });\n } if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"id\", ctx.navItem.domId);\n ɵngcc0.ɵɵattribute(\"role\", ctx.role ? ctx.role : ctx.nav.roles ? \"tab\" : undefined)(\"tabindex\", ctx.navItem.disabled ? -1 : undefined)(\"aria-controls\", ctx.navItem.isPanelInDom() ? ctx.navItem.panelDomId : null)(\"aria-selected\", ctx.navItem.active)(\"aria-disabled\", ctx.navItem.disabled);\n ɵngcc0.ɵɵclassProp(\"nav-link\", true)(\"nav-item\", ctx.hasNavItemClass())(\"active\", ctx.navItem.active)(\"disabled\", ctx.navItem.disabled);\n } } });\r\nNgbNavLink.ctorParameters = () => [\r\n { type: String, decorators: [{ type: Attribute, args: ['role',] }] },\r\n { type: NgbNavItem },\r\n { type: NgbNav },\r\n { type: ElementRef }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbNavLink, [{\n type: Directive,\n args: [{\n selector: 'a[ngbNavLink]',\n host: {\n '[id]': 'navItem.domId',\n '[class.nav-link]': 'true',\n '[class.nav-item]': 'hasNavItemClass()',\n '[attr.role]': `role ? role : nav.roles ? 'tab' : undefined`,\n 'href': '',\n '[class.active]': 'navItem.active',\n '[class.disabled]': 'navItem.disabled',\n '[attr.tabindex]': 'navItem.disabled ? -1 : undefined',\n '[attr.aria-controls]': 'navItem.isPanelInDom() ? navItem.panelDomId : null',\n '[attr.aria-selected]': 'navItem.active',\n '[attr.aria-disabled]': 'navItem.disabled',\n '(click)': 'nav.click(navItem); $event.preventDefault()'\n }\n }]\n }], function () { return [{ type: String, decorators: [{\n type: Attribute,\n args: ['role']\n }] }, { type: NgbNavItem }, { type: NgbNav }, { type: ɵngcc0.ElementRef }]; }, null); })();\n\nconst ngbNavFadeOutTransition = ({ classList }) => {\r\n classList.remove('show');\r\n return () => classList.remove('active');\r\n};\r\nconst ngbNavFadeInTransition = (element, animation) => {\r\n if (animation) {\r\n reflow(element);\r\n }\r\n element.classList.add('show');\r\n};\n\nclass NgbNavPane {\r\n constructor(elRef) {\r\n this.elRef = elRef;\r\n }\r\n}\nNgbNavPane.ɵfac = function NgbNavPane_Factory(t) { return new (t || NgbNavPane)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nNgbNavPane.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbNavPane, selectors: [[\"\", \"ngbNavPane\", \"\"]], hostAttrs: [1, \"tab-pane\"], hostVars: 5, hostBindings: function NgbNavPane_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"id\", ctx.item.panelDomId);\n ɵngcc0.ɵɵattribute(\"role\", ctx.role ? ctx.role : ctx.nav.roles ? \"tabpanel\" : undefined)(\"aria-labelledby\", ctx.item.domId);\n ɵngcc0.ɵɵclassProp(\"fade\", ctx.nav.animation);\n } }, inputs: { item: \"item\", nav: \"nav\", role: \"role\" } });\r\nNgbNavPane.ctorParameters = () => [\r\n { type: ElementRef }\r\n];\r\nNgbNavPane.propDecorators = {\r\n item: [{ type: Input }],\r\n nav: [{ type: Input }],\r\n role: [{ type: Input }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbNavPane, [{\n type: Directive,\n args: [{\n selector: '[ngbNavPane]',\n host: {\n '[id]': 'item.panelDomId',\n 'class': 'tab-pane',\n '[class.fade]': 'nav.animation',\n '[attr.role]': 'role ? role : nav.roles ? \"tabpanel\" : undefined',\n '[attr.aria-labelledby]': 'item.domId'\n }\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }]; }, { item: [{\n type: Input\n }], nav: [{\n type: Input\n }], role: [{\n type: Input\n }] }); })();\r\n/**\r\n * The outlet where currently active nav content will be displayed.\r\n *\r\n * @since 5.2.0\r\n */\r\nclass NgbNavOutlet {\r\n constructor(_cd, _ngZone) {\r\n this._cd = _cd;\r\n this._ngZone = _ngZone;\r\n this._activePane = null;\r\n }\r\n isPanelTransitioning(item) { var _a; return ((_a = this._activePane) === null || _a === void 0 ? void 0 : _a.item) === item; }\r\n ngAfterViewInit() {\r\n var _a;\r\n // initial display\r\n this._updateActivePane();\r\n // this will be emitted for all 3 types of nav changes: .select(), [activeId] or (click)\r\n this.nav.navItemChange$\r\n .pipe(takeUntil(this.nav.destroy$), startWith(((_a = this._activePane) === null || _a === void 0 ? void 0 : _a.item) || null), distinctUntilChanged(), skip(1))\r\n .subscribe(nextItem => {\r\n const options = { animation: this.nav.animation, runningTransition: 'stop' };\r\n // next panel we're switching to will only appear in DOM after the change detection is done\r\n // and `this._panes` will be updated\r\n this._cd.detectChanges();\r\n // fading out\r\n if (this._activePane) {\r\n ngbRunTransition(this._ngZone, this._activePane.elRef.nativeElement, ngbNavFadeOutTransition, options)\r\n .subscribe(() => {\r\n var _a;\r\n const activeItem = (_a = this._activePane) === null || _a === void 0 ? void 0 : _a.item;\r\n this._activePane = this._getPaneForItem(nextItem);\r\n // mark for check when transition finishes as outlet or parent containers might be OnPush\r\n // without this the panes that have \"faded out\" will stay in DOM\r\n this._cd.markForCheck();\r\n // fading in\r\n if (this._activePane) {\r\n // we have to add the '.active' class before running the transition,\r\n // because it should be in place before `ngbRunTransition` does `reflow()`\r\n this._activePane.elRef.nativeElement.classList.add('active');\r\n ngbRunTransition(this._ngZone, this._activePane.elRef.nativeElement, ngbNavFadeInTransition, options)\r\n .subscribe(() => {\r\n if (nextItem) {\r\n nextItem.shown.emit();\r\n this.nav.shown.emit(nextItem.id);\r\n }\r\n });\r\n }\r\n if (activeItem) {\r\n activeItem.hidden.emit();\r\n this.nav.hidden.emit(activeItem.id);\r\n }\r\n });\r\n }\r\n else {\r\n this._updateActivePane();\r\n }\r\n });\r\n }\r\n _updateActivePane() {\r\n var _a, _b;\r\n this._activePane = this._getActivePane();\r\n (_a = this._activePane) === null || _a === void 0 ? void 0 : _a.elRef.nativeElement.classList.add('show');\r\n (_b = this._activePane) === null || _b === void 0 ? void 0 : _b.elRef.nativeElement.classList.add('active');\r\n }\r\n _getPaneForItem(item) {\r\n return this._panes && this._panes.find(pane => pane.item === item) || null;\r\n }\r\n _getActivePane() {\r\n return this._panes && this._panes.find(pane => pane.item.active) || null;\r\n }\r\n}\nNgbNavOutlet.ɵfac = function NgbNavOutlet_Factory(t) { return new (t || NgbNavOutlet)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nNgbNavOutlet.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbNavOutlet, selectors: [[\"\", \"ngbNavOutlet\", \"\"]], viewQuery: function NgbNavOutlet_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(NgbNavPane, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._panes = _t);\n } }, hostVars: 2, hostBindings: function NgbNavOutlet_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"tab-content\", true);\n } }, inputs: { paneRole: \"paneRole\", nav: [\"ngbNavOutlet\", \"nav\"] }, attrs: _c32, decls: 1, vars: 1, consts: [[\"ngFor\", \"\", 3, \"ngForOf\"], [\"ngbNavPane\", \"\", 3, \"item\", \"nav\", \"role\", 4, \"ngIf\"], [\"ngbNavPane\", \"\", 3, \"item\", \"nav\", \"role\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]], template: function NgbNavOutlet_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbNavOutlet_ng_template_0_Template, 1, 1, \"ng-template\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.nav.items);\n } }, directives: [ɵngcc1.NgForOf, ɵngcc1.NgIf, NgbNavPane, ɵngcc1.NgTemplateOutlet], encapsulation: 2, changeDetection: 0 });\r\nNgbNavOutlet.ctorParameters = () => [\r\n { type: ChangeDetectorRef },\r\n { type: NgZone }\r\n];\r\nNgbNavOutlet.propDecorators = {\r\n _panes: [{ type: ViewChildren, args: [NgbNavPane,] }],\r\n paneRole: [{ type: Input }],\r\n nav: [{ type: Input, args: ['ngbNavOutlet',] }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbNavOutlet, [{\n type: Component,\n args: [{\n selector: '[ngbNavOutlet]',\n host: { '[class.tab-content]': 'true' },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n `\n }]\n }], function () { return [{ type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.NgZone }]; }, { _panes: [{\n type: ViewChildren,\n args: [NgbNavPane]\n }], paneRole: [{\n type: Input\n }], nav: [{\n type: Input,\n args: ['ngbNavOutlet']\n }] }); })();\n\nconst NGB_NAV_DIRECTIVES = [NgbNavContent, NgbNav, NgbNavItem, NgbNavLink, NgbNavOutlet, NgbNavPane];\r\nclass NgbNavModule {\r\n}\nNgbNavModule.ɵfac = function NgbNavModule_Factory(t) { return new (t || NgbNavModule)(); };\nNgbNavModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbNavModule });\nNgbNavModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbNavModule, [{\n type: NgModule,\n args: [{ declarations: NGB_NAV_DIRECTIVES, exports: NGB_NAV_DIRECTIVES, imports: [CommonModule] }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbNavModule, { declarations: function () { return [NgbNavContent, NgbNav, NgbNavItem, NgbNavLink, NgbNavOutlet, NgbNavPane]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbNavContent, NgbNav, NgbNavItem, NgbNavLink, NgbNavOutlet, NgbNavPane]; } }); })();\n\n/**\r\n * A configuration service for the [`NgbPagination`](#/components/pagination/api#NgbPagination) component.\r\n *\r\n * You can inject this service, typically in your root component, and customize the values of its properties in\r\n * order to provide default values for all the paginations used in the application.\r\n */\r\nclass NgbPaginationConfig {\r\n constructor() {\r\n this.disabled = false;\r\n this.boundaryLinks = false;\r\n this.directionLinks = true;\r\n this.ellipses = true;\r\n this.maxSize = 0;\r\n this.pageSize = 10;\r\n this.rotate = false;\r\n }\r\n}\nNgbPaginationConfig.ɵfac = function NgbPaginationConfig_Factory(t) { return new (t || NgbPaginationConfig)(); };\r\nNgbPaginationConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgbPaginationConfig_Factory() { return new NgbPaginationConfig(); }, token: NgbPaginationConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPaginationConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n\n/**\r\n * A directive to match the 'ellipsis' link template\r\n *\r\n * @since 4.1.0\r\n */\r\nclass NgbPaginationEllipsis {\r\n constructor(templateRef) {\r\n this.templateRef = templateRef;\r\n }\r\n}\nNgbPaginationEllipsis.ɵfac = function NgbPaginationEllipsis_Factory(t) { return new (t || NgbPaginationEllipsis)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbPaginationEllipsis.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbPaginationEllipsis, selectors: [[\"ng-template\", \"ngbPaginationEllipsis\", \"\"]] });\r\nNgbPaginationEllipsis.ctorParameters = () => [\r\n { type: TemplateRef }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPaginationEllipsis, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPaginationEllipsis]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\r\n/**\r\n * A directive to match the 'first' link template\r\n *\r\n * @since 4.1.0\r\n */\r\nclass NgbPaginationFirst {\r\n constructor(templateRef) {\r\n this.templateRef = templateRef;\r\n }\r\n}\nNgbPaginationFirst.ɵfac = function NgbPaginationFirst_Factory(t) { return new (t || NgbPaginationFirst)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbPaginationFirst.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbPaginationFirst, selectors: [[\"ng-template\", \"ngbPaginationFirst\", \"\"]] });\r\nNgbPaginationFirst.ctorParameters = () => [\r\n { type: TemplateRef }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPaginationFirst, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPaginationFirst]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\r\n/**\r\n * A directive to match the 'last' link template\r\n *\r\n * @since 4.1.0\r\n */\r\nclass NgbPaginationLast {\r\n constructor(templateRef) {\r\n this.templateRef = templateRef;\r\n }\r\n}\nNgbPaginationLast.ɵfac = function NgbPaginationLast_Factory(t) { return new (t || NgbPaginationLast)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbPaginationLast.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbPaginationLast, selectors: [[\"ng-template\", \"ngbPaginationLast\", \"\"]] });\r\nNgbPaginationLast.ctorParameters = () => [\r\n { type: TemplateRef }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPaginationLast, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPaginationLast]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\r\n/**\r\n * A directive to match the 'next' link template\r\n *\r\n * @since 4.1.0\r\n */\r\nclass NgbPaginationNext {\r\n constructor(templateRef) {\r\n this.templateRef = templateRef;\r\n }\r\n}\nNgbPaginationNext.ɵfac = function NgbPaginationNext_Factory(t) { return new (t || NgbPaginationNext)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbPaginationNext.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbPaginationNext, selectors: [[\"ng-template\", \"ngbPaginationNext\", \"\"]] });\r\nNgbPaginationNext.ctorParameters = () => [\r\n { type: TemplateRef }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPaginationNext, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPaginationNext]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\r\n/**\r\n * A directive to match the page 'number' link template\r\n *\r\n * @since 4.1.0\r\n */\r\nclass NgbPaginationNumber {\r\n constructor(templateRef) {\r\n this.templateRef = templateRef;\r\n }\r\n}\nNgbPaginationNumber.ɵfac = function NgbPaginationNumber_Factory(t) { return new (t || NgbPaginationNumber)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbPaginationNumber.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbPaginationNumber, selectors: [[\"ng-template\", \"ngbPaginationNumber\", \"\"]] });\r\nNgbPaginationNumber.ctorParameters = () => [\r\n { type: TemplateRef }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPaginationNumber, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPaginationNumber]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\r\n/**\r\n * A directive to match the 'previous' link template\r\n *\r\n * @since 4.1.0\r\n */\r\nclass NgbPaginationPrevious {\r\n constructor(templateRef) {\r\n this.templateRef = templateRef;\r\n }\r\n}\nNgbPaginationPrevious.ɵfac = function NgbPaginationPrevious_Factory(t) { return new (t || NgbPaginationPrevious)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbPaginationPrevious.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbPaginationPrevious, selectors: [[\"ng-template\", \"ngbPaginationPrevious\", \"\"]] });\r\nNgbPaginationPrevious.ctorParameters = () => [\r\n { type: TemplateRef }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPaginationPrevious, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPaginationPrevious]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\r\n/**\r\n * A directive to match the 'pages' whole content\r\n *\r\n * @since 9.1.0\r\n */\r\nclass NgbPaginationPages {\r\n constructor(templateRef) {\r\n this.templateRef = templateRef;\r\n }\r\n}\nNgbPaginationPages.ɵfac = function NgbPaginationPages_Factory(t) { return new (t || NgbPaginationPages)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbPaginationPages.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbPaginationPages, selectors: [[\"ng-template\", \"ngbPaginationPages\", \"\"]] });\r\nNgbPaginationPages.ctorParameters = () => [\r\n { type: TemplateRef }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPaginationPages, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPaginationPages]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\r\n/**\r\n * A component that displays page numbers and allows to customize them in several ways.\r\n */\r\nclass NgbPagination {\r\n constructor(config) {\r\n this.pageCount = 0;\r\n this.pages = [];\r\n /**\r\n * The current page.\r\n *\r\n * Page numbers start with `1`.\r\n */\r\n this.page = 1;\r\n /**\r\n * An event fired when the page is changed. Will fire only if collection size is set and all values are valid.\r\n *\r\n * Event payload is the number of the newly selected page.\r\n *\r\n * Page numbers start with `1`.\r\n */\r\n this.pageChange = new EventEmitter(true);\r\n this.disabled = config.disabled;\r\n this.boundaryLinks = config.boundaryLinks;\r\n this.directionLinks = config.directionLinks;\r\n this.ellipses = config.ellipses;\r\n this.maxSize = config.maxSize;\r\n this.pageSize = config.pageSize;\r\n this.rotate = config.rotate;\r\n this.size = config.size;\r\n }\r\n hasPrevious() { return this.page > 1; }\r\n hasNext() { return this.page < this.pageCount; }\r\n nextDisabled() { return !this.hasNext() || this.disabled; }\r\n previousDisabled() { return !this.hasPrevious() || this.disabled; }\r\n selectPage(pageNumber) { this._updatePages(pageNumber); }\r\n ngOnChanges(changes) { this._updatePages(this.page); }\r\n isEllipsis(pageNumber) { return pageNumber === -1; }\r\n /**\r\n * Appends ellipses and first/last page number to the displayed pages\r\n */\r\n _applyEllipses(start, end) {\r\n if (this.ellipses) {\r\n if (start > 0) {\r\n // The first page will always be included. If the displayed range\r\n // starts after the third page, then add ellipsis. But if the range\r\n // starts on the third page, then add the second page instead of\r\n // an ellipsis, because the ellipsis would only hide a single page.\r\n if (start > 2) {\r\n this.pages.unshift(-1);\r\n }\r\n else if (start === 2) {\r\n this.pages.unshift(2);\r\n }\r\n this.pages.unshift(1);\r\n }\r\n if (end < this.pageCount) {\r\n // The last page will always be included. If the displayed range\r\n // ends before the third-last page, then add ellipsis. But if the range\r\n // ends on third-last page, then add the second-last page instead of\r\n // an ellipsis, because the ellipsis would only hide a single page.\r\n if (end < (this.pageCount - 2)) {\r\n this.pages.push(-1);\r\n }\r\n else if (end === (this.pageCount - 2)) {\r\n this.pages.push(this.pageCount - 1);\r\n }\r\n this.pages.push(this.pageCount);\r\n }\r\n }\r\n }\r\n /**\r\n * Rotates page numbers based on maxSize items visible.\r\n * Currently selected page stays in the middle:\r\n *\r\n * Ex. for selected page = 6:\r\n * [5,*6*,7] for maxSize = 3\r\n * [4,5,*6*,7] for maxSize = 4\r\n */\r\n _applyRotation() {\r\n let start = 0;\r\n let end = this.pageCount;\r\n let leftOffset = Math.floor(this.maxSize / 2);\r\n let rightOffset = this.maxSize % 2 === 0 ? leftOffset - 1 : leftOffset;\r\n if (this.page <= leftOffset) {\r\n // very beginning, no rotation -> [0..maxSize]\r\n end = this.maxSize;\r\n }\r\n else if (this.pageCount - this.page < leftOffset) {\r\n // very end, no rotation -> [len-maxSize..len]\r\n start = this.pageCount - this.maxSize;\r\n }\r\n else {\r\n // rotate\r\n start = this.page - leftOffset - 1;\r\n end = this.page + rightOffset;\r\n }\r\n return [start, end];\r\n }\r\n /**\r\n * Paginates page numbers based on maxSize items per page.\r\n */\r\n _applyPagination() {\r\n let page = Math.ceil(this.page / this.maxSize) - 1;\r\n let start = page * this.maxSize;\r\n let end = start + this.maxSize;\r\n return [start, end];\r\n }\r\n _setPageInRange(newPageNo) {\r\n const prevPageNo = this.page;\r\n this.page = getValueInRange(newPageNo, this.pageCount, 1);\r\n if (this.page !== prevPageNo && isNumber(this.collectionSize)) {\r\n this.pageChange.emit(this.page);\r\n }\r\n }\r\n _updatePages(newPage) {\r\n this.pageCount = Math.ceil(this.collectionSize / this.pageSize);\r\n if (!isNumber(this.pageCount)) {\r\n this.pageCount = 0;\r\n }\r\n // fill-in model needed to render pages\r\n this.pages.length = 0;\r\n for (let i = 1; i <= this.pageCount; i++) {\r\n this.pages.push(i);\r\n }\r\n // set page within 1..max range\r\n this._setPageInRange(newPage);\r\n // apply maxSize if necessary\r\n if (this.maxSize > 0 && this.pageCount > this.maxSize) {\r\n let start = 0;\r\n let end = this.pageCount;\r\n // either paginating or rotating page numbers\r\n if (this.rotate) {\r\n [start, end] = this._applyRotation();\r\n }\r\n else {\r\n [start, end] = this._applyPagination();\r\n }\r\n this.pages = this.pages.slice(start, end);\r\n // adding ellipses\r\n this._applyEllipses(start, end);\r\n }\r\n }\r\n}\nNgbPagination.ɵfac = function NgbPagination_Factory(t) { return new (t || NgbPagination)(ɵngcc0.ɵɵdirectiveInject(NgbPaginationConfig)); };\nNgbPagination.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbPagination, selectors: [[\"ngb-pagination\"]], contentQueries: function NgbPagination_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPaginationEllipsis, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPaginationFirst, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPaginationLast, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPaginationNext, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPaginationNumber, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPaginationPrevious, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPaginationPages, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tplEllipsis = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tplFirst = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tplLast = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tplNext = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tplNumber = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tplPrevious = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tplPages = _t.first);\n } }, hostAttrs: [\"role\", \"navigation\"], inputs: { page: \"page\", disabled: \"disabled\", boundaryLinks: \"boundaryLinks\", directionLinks: \"directionLinks\", ellipses: \"ellipses\", maxSize: \"maxSize\", pageSize: \"pageSize\", rotate: \"rotate\", size: \"size\", collectionSize: \"collectionSize\" }, outputs: { pageChange: \"pageChange\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 20, vars: 12, consts: function () { let i18n_34; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_pagination_first$$FESM2015_NG_BOOTSTRAP_JS__35 = goog.getMsg(\"\\u00AB\\u00AB\");\n i18n_34 = MSG_EXTERNAL_ngb_pagination_first$$FESM2015_NG_BOOTSTRAP_JS__35;\n }\n else {\n i18n_34 = $localize `:@@ngb.pagination.first␟656506dfd46380956a655f919f1498d018f75ca0␟6867721956102594380:««`;\n } let i18n_36; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_pagination_previous$$FESM2015_NG_BOOTSTRAP_JS__37 = goog.getMsg(\"\\u00AB\");\n i18n_36 = MSG_EXTERNAL_ngb_pagination_previous$$FESM2015_NG_BOOTSTRAP_JS__37;\n }\n else {\n i18n_36 = $localize `:@@ngb.pagination.previous␟6e52b6ee77a4848d899dd21b591c6fd499e3aef3␟6479320895410098858:«`;\n } let i18n_38; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_pagination_next$$FESM2015_NG_BOOTSTRAP_JS__39 = goog.getMsg(\"\\u00BB\");\n i18n_38 = MSG_EXTERNAL_ngb_pagination_next$$FESM2015_NG_BOOTSTRAP_JS__39;\n }\n else {\n i18n_38 = $localize `:@@ngb.pagination.next␟ba9cbb4ff311464308a3627e4f1c3345d9fe6d7d␟5458177150283468089:»`;\n } let i18n_40; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_pagination_last$$FESM2015_NG_BOOTSTRAP_JS__41 = goog.getMsg(\"\\u00BB\\u00BB\");\n i18n_40 = MSG_EXTERNAL_ngb_pagination_last$$FESM2015_NG_BOOTSTRAP_JS__41;\n }\n else {\n i18n_40 = $localize `:@@ngb.pagination.last␟49f27a460bc97e7e00be5b37098bfa79884fc7d9␟5277020320267646988:»»`;\n } let i18n_44; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_pagination_first_aria$$FESM2015_NG_BOOTSTRAP_JS__45 = goog.getMsg(\"First\");\n i18n_44 = MSG_EXTERNAL_ngb_pagination_first_aria$$FESM2015_NG_BOOTSTRAP_JS__45;\n }\n else {\n i18n_44 = $localize `:@@ngb.pagination.first-aria␟f2f852318759c6396b5d3d17031d53817d7b38cc␟2241508602425256033:First`;\n } let i18n_47; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_pagination_previous_aria$$FESM2015_NG_BOOTSTRAP_JS__48 = goog.getMsg(\"Previous\");\n i18n_47 = MSG_EXTERNAL_ngb_pagination_previous_aria$$FESM2015_NG_BOOTSTRAP_JS__48;\n }\n else {\n i18n_47 = $localize `:@@ngb.pagination.previous-aria␟680d5c75b7fd8d37961083608b9fcdc4167b4c43␟4452427314943113135:Previous`;\n } let i18n_50; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_pagination_next_aria$$FESM2015_NG_BOOTSTRAP_JS__51 = goog.getMsg(\"Next\");\n i18n_50 = MSG_EXTERNAL_ngb_pagination_next_aria$$FESM2015_NG_BOOTSTRAP_JS__51;\n }\n else {\n i18n_50 = $localize `:@@ngb.pagination.next-aria␟f732c304c7433e5a83ffcd862c3dce709a0f4982␟3885497195825665706:Next`;\n } let i18n_52; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_pagination_last_aria$$FESM2015_NG_BOOTSTRAP_JS__53 = goog.getMsg(\"Last\");\n i18n_52 = MSG_EXTERNAL_ngb_pagination_last_aria$$FESM2015_NG_BOOTSTRAP_JS__53;\n }\n else {\n i18n_52 = $localize `:@@ngb.pagination.last-aria␟5c729788ba138508aca1bec050b610f7bf81db3e␟4882268002141858767:Last`;\n } return [[\"first\", \"\"], [\"previous\", \"\"], [\"next\", \"\"], [\"last\", \"\"], [\"ellipsis\", \"\"], [\"defaultNumber\", \"\"], [\"defaultPages\", \"\"], [\"class\", \"page-item\", 3, \"disabled\", 4, \"ngIf\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [\"aria-hidden\", \"true\"], i18n_34, i18n_36, i18n_38, i18n_40, [\"class\", \"sr-only\", 4, \"ngIf\"], [1, \"sr-only\"], [\"class\", \"page-item\", 3, \"active\", \"disabled\", 4, \"ngFor\", \"ngForOf\"], [1, \"page-item\"], [\"class\", \"page-link\", \"tabindex\", \"-1\", \"aria-disabled\", \"true\", 4, \"ngIf\"], [\"class\", \"page-link\", \"href\", \"\", 3, \"click\", 4, \"ngIf\"], [\"tabindex\", \"-1\", \"aria-disabled\", \"true\", 1, \"page-link\"], [\"href\", \"\", 1, \"page-link\", 3, \"click\"], [\"aria-label\", i18n_44, \"href\", \"\", 1, \"page-link\", 3, \"click\"], [\"aria-label\", i18n_47, \"href\", \"\", 1, \"page-link\", 3, \"click\"], [\"aria-label\", i18n_50, \"href\", \"\", 1, \"page-link\", 3, \"click\"], [\"aria-label\", i18n_52, \"href\", \"\", 1, \"page-link\", 3, \"click\"]]; }, template: function NgbPagination_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbPagination_ng_template_0_Template, 2, 0, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, NgbPagination_ng_template_2_Template, 2, 0, \"ng-template\", null, 1, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(4, NgbPagination_ng_template_4_Template, 2, 0, \"ng-template\", null, 2, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(6, NgbPagination_ng_template_6_Template, 2, 0, \"ng-template\", null, 3, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(8, NgbPagination_ng_template_8_Template, 1, 0, \"ng-template\", null, 4, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(10, NgbPagination_ng_template_10_Template, 2, 2, \"ng-template\", null, 5, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(12, NgbPagination_ng_template_12_Template, 1, 1, \"ng-template\", null, 6, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵelementStart(14, \"ul\");\n ɵngcc0.ɵɵtemplate(15, NgbPagination_li_15_Template, 3, 9, \"li\", 7);\n ɵngcc0.ɵɵtemplate(16, NgbPagination_li_16_Template, 3, 8, \"li\", 7);\n ɵngcc0.ɵɵtemplate(17, NgbPagination_ng_template_17_Template, 0, 0, \"ng-template\", 8);\n ɵngcc0.ɵɵtemplate(18, NgbPagination_li_18_Template, 3, 9, \"li\", 7);\n ɵngcc0.ɵɵtemplate(19, NgbPagination_li_19_Template, 3, 9, \"li\", 7);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n const _r12 = ɵngcc0.ɵɵreference(13);\n ɵngcc0.ɵɵadvance(14);\n ɵngcc0.ɵɵclassMap(\"pagination\" + (ctx.size ? \" pagination-\" + ctx.size : \"\"));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.boundaryLinks);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.directionLinks);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (ctx.tplPages == null ? null : ctx.tplPages.templateRef) || _r12)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction3(8, _c54, ctx.page, ctx.pages, ctx.disabled));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.directionLinks);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.boundaryLinks);\n } }, directives: [ɵngcc1.NgIf, ɵngcc1.NgTemplateOutlet, ɵngcc1.NgForOf], encapsulation: 2, changeDetection: 0 });\r\nNgbPagination.ctorParameters = () => [\r\n { type: NgbPaginationConfig }\r\n];\r\nNgbPagination.propDecorators = {\r\n tplEllipsis: [{ type: ContentChild, args: [NgbPaginationEllipsis, { static: false },] }],\r\n tplFirst: [{ type: ContentChild, args: [NgbPaginationFirst, { static: false },] }],\r\n tplLast: [{ type: ContentChild, args: [NgbPaginationLast, { static: false },] }],\r\n tplNext: [{ type: ContentChild, args: [NgbPaginationNext, { static: false },] }],\r\n tplNumber: [{ type: ContentChild, args: [NgbPaginationNumber, { static: false },] }],\r\n tplPrevious: [{ type: ContentChild, args: [NgbPaginationPrevious, { static: false },] }],\r\n tplPages: [{ type: ContentChild, args: [NgbPaginationPages, { static: false },] }],\r\n disabled: [{ type: Input }],\r\n boundaryLinks: [{ type: Input }],\r\n directionLinks: [{ type: Input }],\r\n ellipses: [{ type: Input }],\r\n rotate: [{ type: Input }],\r\n collectionSize: [{ type: Input }],\r\n maxSize: [{ type: Input }],\r\n page: [{ type: Input }],\r\n pageSize: [{ type: Input }],\r\n pageChange: [{ type: Output }],\r\n size: [{ type: Input }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPagination, [{\n type: Component,\n args: [{\n selector: 'ngb-pagination',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { 'role': 'navigation' },\n template: `\r\n ««\r\n «\r\n »\r\n »»\r\n ...\r\n \r\n {{ page }}\r\n (current)\r\n \r\n \r\n
  • \r\n \r\n \r\n \r\n \r\n \r\n \r\n
  • \r\n
    \r\n \r\n `\n }]\n }], function () { return [{ type: NgbPaginationConfig }]; }, { page: [{\n type: Input\n }], pageChange: [{\n type: Output\n }], disabled: [{\n type: Input\n }], boundaryLinks: [{\n type: Input\n }], directionLinks: [{\n type: Input\n }], ellipses: [{\n type: Input\n }], maxSize: [{\n type: Input\n }], pageSize: [{\n type: Input\n }], rotate: [{\n type: Input\n }], size: [{\n type: Input\n }], tplEllipsis: [{\n type: ContentChild,\n args: [NgbPaginationEllipsis, { static: false }]\n }], tplFirst: [{\n type: ContentChild,\n args: [NgbPaginationFirst, { static: false }]\n }], tplLast: [{\n type: ContentChild,\n args: [NgbPaginationLast, { static: false }]\n }], tplNext: [{\n type: ContentChild,\n args: [NgbPaginationNext, { static: false }]\n }], tplNumber: [{\n type: ContentChild,\n args: [NgbPaginationNumber, { static: false }]\n }], tplPrevious: [{\n type: ContentChild,\n args: [NgbPaginationPrevious, { static: false }]\n }], tplPages: [{\n type: ContentChild,\n args: [NgbPaginationPages, { static: false }]\n }], collectionSize: [{\n type: Input\n }] }); })();\n\nconst DIRECTIVES = [\r\n NgbPagination, NgbPaginationEllipsis, NgbPaginationFirst, NgbPaginationLast, NgbPaginationNext, NgbPaginationNumber,\r\n NgbPaginationPrevious, NgbPaginationPages\r\n];\r\nclass NgbPaginationModule {\r\n}\nNgbPaginationModule.ɵfac = function NgbPaginationModule_Factory(t) { return new (t || NgbPaginationModule)(); };\nNgbPaginationModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbPaginationModule });\nNgbPaginationModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPaginationModule, [{\n type: NgModule,\n args: [{ declarations: DIRECTIVES, exports: DIRECTIVES, imports: [CommonModule] }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbPaginationModule, { declarations: function () { return [NgbPagination, NgbPaginationEllipsis, NgbPaginationFirst, NgbPaginationLast, NgbPaginationNext, NgbPaginationNumber, NgbPaginationPrevious, NgbPaginationPages]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbPagination, NgbPaginationEllipsis, NgbPaginationFirst, NgbPaginationLast, NgbPaginationNext, NgbPaginationNumber, NgbPaginationPrevious, NgbPaginationPages]; } }); })();\n\nclass Trigger {\r\n constructor(open, close) {\r\n this.open = open;\r\n this.close = close;\r\n if (!close) {\r\n this.close = open;\r\n }\r\n }\r\n isManual() { return this.open === 'manual' || this.close === 'manual'; }\r\n}\r\nconst DEFAULT_ALIASES = {\r\n 'hover': ['mouseenter', 'mouseleave'],\r\n 'focus': ['focusin', 'focusout'],\r\n};\r\nfunction parseTriggers(triggers, aliases = DEFAULT_ALIASES) {\r\n const trimmedTriggers = (triggers || '').trim();\r\n if (trimmedTriggers.length === 0) {\r\n return [];\r\n }\r\n const parsedTriggers = trimmedTriggers.split(/\\s+/).map(trigger => trigger.split(':')).map((triggerPair) => {\r\n let alias = aliases[triggerPair[0]] || triggerPair;\r\n return new Trigger(alias[0], alias[1]);\r\n });\r\n const manualTriggers = parsedTriggers.filter(triggerPair => triggerPair.isManual());\r\n if (manualTriggers.length > 1) {\r\n throw 'Triggers parse error: only one manual trigger is allowed';\r\n }\r\n if (manualTriggers.length === 1 && parsedTriggers.length > 1) {\r\n throw 'Triggers parse error: manual trigger can\\'t be mixed with other triggers';\r\n }\r\n return parsedTriggers;\r\n}\r\nfunction observeTriggers(renderer, nativeElement, triggers, isOpenedFn) {\r\n return new Observable(subscriber => {\r\n const listeners = [];\r\n const openFn = () => subscriber.next(true);\r\n const closeFn = () => subscriber.next(false);\r\n const toggleFn = () => subscriber.next(!isOpenedFn());\r\n triggers.forEach((trigger) => {\r\n if (trigger.open === trigger.close) {\r\n listeners.push(renderer.listen(nativeElement, trigger.open, toggleFn));\r\n }\r\n else {\r\n listeners.push(renderer.listen(nativeElement, trigger.open, openFn), renderer.listen(nativeElement, trigger.close, closeFn));\r\n }\r\n });\r\n return () => { listeners.forEach(unsubscribeFn => unsubscribeFn()); };\r\n });\r\n}\r\nconst delayOrNoop = (time) => time > 0 ? delay(time) : (a) => a;\r\nconst ɵ0$5 = delayOrNoop;\r\nfunction triggerDelay(openDelay, closeDelay, isOpenedFn) {\r\n return (input$) => {\r\n let pending = null;\r\n const filteredInput$ = input$.pipe(map(open => ({ open })), filter(event => {\r\n const currentlyOpen = isOpenedFn();\r\n if (currentlyOpen !== event.open && (!pending || pending.open === currentlyOpen)) {\r\n pending = event;\r\n return true;\r\n }\r\n if (pending && pending.open !== event.open) {\r\n pending = null;\r\n }\r\n return false;\r\n }), share());\r\n const delayedOpen$ = filteredInput$.pipe(filter(event => event.open), delayOrNoop(openDelay));\r\n const delayedClose$ = filteredInput$.pipe(filter(event => !event.open), delayOrNoop(closeDelay));\r\n return merge(delayedOpen$, delayedClose$)\r\n .pipe(filter(event => {\r\n if (event === pending) {\r\n pending = null;\r\n return event.open !== isOpenedFn();\r\n }\r\n return false;\r\n }), map(event => event.open));\r\n };\r\n}\r\nfunction listenToTriggers(renderer, nativeElement, triggers, isOpenedFn, openFn, closeFn, openDelay = 0, closeDelay = 0) {\r\n const parsedTriggers = parseTriggers(triggers);\r\n if (parsedTriggers.length === 1 && parsedTriggers[0].isManual()) {\r\n return () => { };\r\n }\r\n const subscription = observeTriggers(renderer, nativeElement, parsedTriggers, isOpenedFn)\r\n .pipe(triggerDelay(openDelay, closeDelay, isOpenedFn))\r\n .subscribe(open => (open ? openFn() : closeFn()));\r\n return () => subscription.unsubscribe();\r\n}\n\n/**\r\n * A configuration service for the [`NgbPopover`](#/components/popover/api#NgbPopover) component.\r\n *\r\n * You can inject this service, typically in your root component, and customize the values of its properties in\r\n * order to provide default values for all the popovers used in the application.\r\n */\r\nclass NgbPopoverConfig {\r\n constructor(_ngbConfig) {\r\n this._ngbConfig = _ngbConfig;\r\n this.autoClose = true;\r\n this.placement = 'auto';\r\n this.triggers = 'click';\r\n this.disablePopover = false;\r\n this.openDelay = 0;\r\n this.closeDelay = 0;\r\n }\r\n get animation() { return (this._animation === undefined) ? this._ngbConfig.animation : this._animation; }\r\n set animation(animation) { this._animation = animation; }\r\n}\nNgbPopoverConfig.ɵfac = function NgbPopoverConfig_Factory(t) { return new (t || NgbPopoverConfig)(ɵngcc0.ɵɵinject(NgbConfig)); };\r\nNgbPopoverConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgbPopoverConfig_Factory() { return new NgbPopoverConfig(ɵɵinject(NgbConfig)); }, token: NgbPopoverConfig, providedIn: \"root\" });\r\nNgbPopoverConfig.ctorParameters = () => [\r\n { type: NgbConfig }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPopoverConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: NgbConfig }]; }, null); })();\n\nlet nextId$3 = 0;\r\nclass NgbPopoverWindow {\r\n isTitleTemplate() { return this.title instanceof TemplateRef; }\r\n}\nNgbPopoverWindow.ɵfac = function NgbPopoverWindow_Factory(t) { return new (t || NgbPopoverWindow)(); };\nNgbPopoverWindow.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbPopoverWindow, selectors: [[\"ngb-popover-window\"]], hostAttrs: [\"role\", \"tooltip\"], hostVars: 5, hostBindings: function NgbPopoverWindow_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"id\", ctx.id);\n ɵngcc0.ɵɵclassMap(\"popover\" + (ctx.popoverClass ? \" \" + ctx.popoverClass : \"\"));\n ɵngcc0.ɵɵclassProp(\"fade\", ctx.animation);\n } }, inputs: { animation: \"animation\", title: \"title\", id: \"id\", popoverClass: \"popoverClass\", context: \"context\" }, ngContentSelectors: _c3, decls: 4, vars: 1, consts: [[1, \"arrow\"], [\"class\", \"popover-header\", 4, \"ngIf\"], [1, \"popover-body\"], [1, \"popover-header\"], [\"simpleTitle\", \"\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]], template: function NgbPopoverWindow_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵelement(0, \"div\", 0);\n ɵngcc0.ɵɵtemplate(1, NgbPopoverWindow_h3_1_Template, 4, 2, \"h3\", 1);\n ɵngcc0.ɵɵelementStart(2, \"div\", 2);\n ɵngcc0.ɵɵprojection(3);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.title);\n } }, directives: [ɵngcc1.NgIf, ɵngcc1.NgTemplateOutlet], styles: [\"ngb-popover-window.bs-popover-bottom>.arrow,ngb-popover-window.bs-popover-top>.arrow{left:50%;margin-left:-.5rem}ngb-popover-window.bs-popover-bottom-left>.arrow,ngb-popover-window.bs-popover-top-left>.arrow{left:2em}ngb-popover-window.bs-popover-bottom-right>.arrow,ngb-popover-window.bs-popover-top-right>.arrow{left:auto;right:2em}ngb-popover-window.bs-popover-left>.arrow,ngb-popover-window.bs-popover-right>.arrow{margin-top:-.5rem;top:50%}ngb-popover-window.bs-popover-left-top>.arrow,ngb-popover-window.bs-popover-right-top>.arrow{top:.7em}ngb-popover-window.bs-popover-left-bottom>.arrow,ngb-popover-window.bs-popover-right-bottom>.arrow{bottom:.7em;top:auto}\"], encapsulation: 2, changeDetection: 0 });\r\nNgbPopoverWindow.propDecorators = {\r\n animation: [{ type: Input }],\r\n title: [{ type: Input }],\r\n id: [{ type: Input }],\r\n popoverClass: [{ type: Input }],\r\n context: [{ type: Input }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPopoverWindow, [{\n type: Component,\n args: [{\n selector: 'ngb-popover-window',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': '\"popover\" + (popoverClass ? \" \" + popoverClass : \"\")',\n '[class.fade]': 'animation',\n 'role': 'tooltip',\n '[id]': 'id'\n },\n template: `\r\n
    \r\n

    \r\n {{title}}\r\n \r\n

    \r\n
    `,\n styles: [\"ngb-popover-window.bs-popover-bottom>.arrow,ngb-popover-window.bs-popover-top>.arrow{left:50%;margin-left:-.5rem}ngb-popover-window.bs-popover-bottom-left>.arrow,ngb-popover-window.bs-popover-top-left>.arrow{left:2em}ngb-popover-window.bs-popover-bottom-right>.arrow,ngb-popover-window.bs-popover-top-right>.arrow{left:auto;right:2em}ngb-popover-window.bs-popover-left>.arrow,ngb-popover-window.bs-popover-right>.arrow{margin-top:-.5rem;top:50%}ngb-popover-window.bs-popover-left-top>.arrow,ngb-popover-window.bs-popover-right-top>.arrow{top:.7em}ngb-popover-window.bs-popover-left-bottom>.arrow,ngb-popover-window.bs-popover-right-bottom>.arrow{bottom:.7em;top:auto}\"]\n }]\n }], null, { animation: [{\n type: Input\n }], title: [{\n type: Input\n }], id: [{\n type: Input\n }], popoverClass: [{\n type: Input\n }], context: [{\n type: Input\n }] }); })();\r\n/**\r\n * A lightweight and extensible directive for fancy popover creation.\r\n */\r\nclass NgbPopover {\r\n constructor(_elementRef, _renderer, injector, componentFactoryResolver, viewContainerRef, config, _ngZone, _document, _changeDetector, applicationRef) {\r\n this._elementRef = _elementRef;\r\n this._renderer = _renderer;\r\n this._ngZone = _ngZone;\r\n this._document = _document;\r\n this._changeDetector = _changeDetector;\r\n /**\r\n * An event emitted when the popover opening animation has finished. Contains no payload.\r\n */\r\n this.shown = new EventEmitter();\r\n /**\r\n * An event emitted when the popover closing animation has finished. Contains no payload.\r\n *\r\n * At this point popover is not in the DOM anymore.\r\n */\r\n this.hidden = new EventEmitter();\r\n this._ngbPopoverWindowId = `ngb-popover-${nextId$3++}`;\r\n this._windowRef = null;\r\n this.animation = config.animation;\r\n this.autoClose = config.autoClose;\r\n this.placement = config.placement;\r\n this.triggers = config.triggers;\r\n this.container = config.container;\r\n this.disablePopover = config.disablePopover;\r\n this.popoverClass = config.popoverClass;\r\n this.openDelay = config.openDelay;\r\n this.closeDelay = config.closeDelay;\r\n this._popupService = new PopupService(NgbPopoverWindow, injector, viewContainerRef, _renderer, this._ngZone, componentFactoryResolver, applicationRef);\r\n this._zoneSubscription = _ngZone.onStable.subscribe(() => {\r\n if (this._windowRef) {\r\n positionElements(this._elementRef.nativeElement, this._windowRef.location.nativeElement, this.placement, this.container === 'body', 'bs-popover');\r\n }\r\n });\r\n }\r\n _isDisabled() {\r\n if (this.disablePopover) {\r\n return true;\r\n }\r\n if (!this.ngbPopover && !this.popoverTitle) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n /**\r\n * Opens the popover.\r\n *\r\n * This is considered to be a \"manual\" triggering.\r\n * The `context` is an optional value to be injected into the popover template when it is created.\r\n */\r\n open(context) {\r\n if (!this._windowRef && !this._isDisabled()) {\r\n // this type assertion is safe because otherwise _isDisabled would return true\r\n const { windowRef, transition$ } = this._popupService.open(this.ngbPopover, context, this.animation);\r\n this._windowRef = windowRef;\r\n this._windowRef.instance.animation = this.animation;\r\n this._windowRef.instance.title = this.popoverTitle;\r\n this._windowRef.instance.context = context;\r\n this._windowRef.instance.popoverClass = this.popoverClass;\r\n this._windowRef.instance.id = this._ngbPopoverWindowId;\r\n this._renderer.setAttribute(this._elementRef.nativeElement, 'aria-describedby', this._ngbPopoverWindowId);\r\n if (this.container === 'body') {\r\n this._document.querySelector(this.container).appendChild(this._windowRef.location.nativeElement);\r\n }\r\n // We need to detect changes, because we don't know where .open() might be called from.\r\n // Ex. opening popover from one of lifecycle hooks that run after the CD\r\n // (say from ngAfterViewInit) will result in 'ExpressionHasChanged' exception\r\n this._windowRef.changeDetectorRef.detectChanges();\r\n // We need to mark for check, because popover won't work inside the OnPush component.\r\n // Ex. when we use expression like `{{ popover.isOpen() : 'opened' : 'closed' }}`\r\n // inside the template of an OnPush component and we change the popover from\r\n // open -> closed, the expression in question won't be updated unless we explicitly\r\n // mark the parent component to be checked.\r\n this._windowRef.changeDetectorRef.markForCheck();\r\n ngbAutoClose(this._ngZone, this._document, this.autoClose, () => this.close(), this.hidden, [this._windowRef.location.nativeElement]);\r\n transition$.subscribe(() => this.shown.emit());\r\n }\r\n }\r\n /**\r\n * Closes the popover.\r\n *\r\n * This is considered to be a \"manual\" triggering of the popover.\r\n */\r\n close() {\r\n if (this._windowRef) {\r\n this._renderer.removeAttribute(this._elementRef.nativeElement, 'aria-describedby');\r\n this._popupService.close(this.animation).subscribe(() => {\r\n this._windowRef = null;\r\n this.hidden.emit();\r\n this._changeDetector.markForCheck();\r\n });\r\n }\r\n }\r\n /**\r\n * Toggles the popover.\r\n *\r\n * This is considered to be a \"manual\" triggering of the popover.\r\n */\r\n toggle() {\r\n if (this._windowRef) {\r\n this.close();\r\n }\r\n else {\r\n this.open();\r\n }\r\n }\r\n /**\r\n * Returns `true`, if the popover is currently shown.\r\n */\r\n isOpen() { return this._windowRef != null; }\r\n ngOnInit() {\r\n this._unregisterListenersFn = listenToTriggers(this._renderer, this._elementRef.nativeElement, this.triggers, this.isOpen.bind(this), this.open.bind(this), this.close.bind(this), +this.openDelay, +this.closeDelay);\r\n }\r\n ngOnChanges({ ngbPopover, popoverTitle, disablePopover, popoverClass }) {\r\n if (popoverClass && this.isOpen()) {\r\n this._windowRef.instance.popoverClass = popoverClass.currentValue;\r\n }\r\n // close popover if title and content become empty, or disablePopover set to true\r\n if ((ngbPopover || popoverTitle || disablePopover) && this._isDisabled()) {\r\n this.close();\r\n }\r\n }\r\n ngOnDestroy() {\r\n this.close();\r\n // This check is needed as it might happen that ngOnDestroy is called before ngOnInit\r\n // under certain conditions, see: https://github.com/ng-bootstrap/ng-bootstrap/issues/2199\r\n if (this._unregisterListenersFn) {\r\n this._unregisterListenersFn();\r\n }\r\n this._zoneSubscription.unsubscribe();\r\n }\r\n}\nNgbPopover.ɵfac = function NgbPopover_Factory(t) { return new (t || NgbPopover)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Injector), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(NgbPopoverConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(DOCUMENT), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ApplicationRef)); };\nNgbPopover.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbPopover, selectors: [[\"\", \"ngbPopover\", \"\"]], inputs: { animation: \"animation\", autoClose: \"autoClose\", placement: \"placement\", triggers: \"triggers\", container: \"container\", disablePopover: \"disablePopover\", popoverClass: \"popoverClass\", openDelay: \"openDelay\", closeDelay: \"closeDelay\", ngbPopover: \"ngbPopover\", popoverTitle: \"popoverTitle\" }, outputs: { shown: \"shown\", hidden: \"hidden\" }, exportAs: [\"ngbPopover\"], features: [ɵngcc0.ɵɵNgOnChangesFeature] });\r\nNgbPopover.ctorParameters = () => [\r\n { type: ElementRef },\r\n { type: Renderer2 },\r\n { type: Injector },\r\n { type: ComponentFactoryResolver },\r\n { type: ViewContainerRef },\r\n { type: NgbPopoverConfig },\r\n { type: NgZone },\r\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\r\n { type: ChangeDetectorRef },\r\n { type: ApplicationRef }\r\n];\r\nNgbPopover.propDecorators = {\r\n animation: [{ type: Input }],\r\n autoClose: [{ type: Input }],\r\n ngbPopover: [{ type: Input }],\r\n popoverTitle: [{ type: Input }],\r\n placement: [{ type: Input }],\r\n triggers: [{ type: Input }],\r\n container: [{ type: Input }],\r\n disablePopover: [{ type: Input }],\r\n popoverClass: [{ type: Input }],\r\n openDelay: [{ type: Input }],\r\n closeDelay: [{ type: Input }],\r\n shown: [{ type: Output }],\r\n hidden: [{ type: Output }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPopover, [{\n type: Directive,\n args: [{ selector: '[ngbPopover]', exportAs: 'ngbPopover' }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.Injector }, { type: ɵngcc0.ComponentFactoryResolver }, { type: ɵngcc0.ViewContainerRef }, { type: NgbPopoverConfig }, { type: ɵngcc0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.ApplicationRef }]; }, { shown: [{\n type: Output\n }], hidden: [{\n type: Output\n }], animation: [{\n type: Input\n }], autoClose: [{\n type: Input\n }], placement: [{\n type: Input\n }], triggers: [{\n type: Input\n }], container: [{\n type: Input\n }], disablePopover: [{\n type: Input\n }], popoverClass: [{\n type: Input\n }], openDelay: [{\n type: Input\n }], closeDelay: [{\n type: Input\n }], ngbPopover: [{\n type: Input\n }], popoverTitle: [{\n type: Input\n }] }); })();\n\nclass NgbPopoverModule {\r\n}\nNgbPopoverModule.ɵfac = function NgbPopoverModule_Factory(t) { return new (t || NgbPopoverModule)(); };\nNgbPopoverModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbPopoverModule });\nNgbPopoverModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPopoverModule, [{\n type: NgModule,\n args: [{\n declarations: [NgbPopover, NgbPopoverWindow],\n exports: [NgbPopover],\n imports: [CommonModule],\n entryComponents: [NgbPopoverWindow]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbPopoverModule, { declarations: function () { return [NgbPopover, NgbPopoverWindow]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbPopover]; } }); })();\n\n/**\r\n * A configuration service for the [`NgbProgressbar`](#/components/progressbar/api#NgbProgressbar) component.\r\n *\r\n * You can inject this service, typically in your root component, and customize the values of its properties in\r\n * order to provide default values for all the progress bars used in the application.\r\n */\r\nclass NgbProgressbarConfig {\r\n constructor() {\r\n this.max = 100;\r\n this.animated = false;\r\n this.striped = false;\r\n this.showValue = false;\r\n }\r\n}\nNgbProgressbarConfig.ɵfac = function NgbProgressbarConfig_Factory(t) { return new (t || NgbProgressbarConfig)(); };\r\nNgbProgressbarConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgbProgressbarConfig_Factory() { return new NgbProgressbarConfig(); }, token: NgbProgressbarConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbProgressbarConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n\n/**\r\n * A directive that provides feedback on the progress of a workflow or an action.\r\n */\r\nclass NgbProgressbar {\r\n constructor(config) {\r\n /**\r\n * The current value for the progress bar.\r\n *\r\n * Should be in the `[0, max]` range.\r\n */\r\n this.value = 0;\r\n this.max = config.max;\r\n this.animated = config.animated;\r\n this.striped = config.striped;\r\n this.textType = config.textType;\r\n this.type = config.type;\r\n this.showValue = config.showValue;\r\n this.height = config.height;\r\n }\r\n /**\r\n * The maximal value to be displayed in the progress bar.\r\n *\r\n * Should be a positive number. Will default to 100 otherwise.\r\n */\r\n set max(max) {\r\n this._max = !isNumber(max) || max <= 0 ? 100 : max;\r\n }\r\n get max() { return this._max; }\r\n getValue() { return getValueInRange(this.value, this.max); }\r\n getPercentValue() { return 100 * this.getValue() / this.max; }\r\n}\nNgbProgressbar.ɵfac = function NgbProgressbar_Factory(t) { return new (t || NgbProgressbar)(ɵngcc0.ɵɵdirectiveInject(NgbProgressbarConfig)); };\nNgbProgressbar.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbProgressbar, selectors: [[\"ngb-progressbar\"]], hostAttrs: [1, \"progress\"], hostVars: 2, hostBindings: function NgbProgressbar_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"height\", ctx.height);\n } }, inputs: { value: \"value\", max: \"max\", animated: \"animated\", striped: \"striped\", textType: \"textType\", type: \"type\", showValue: \"showValue\", height: \"height\" }, ngContentSelectors: _c3, decls: 3, vars: 11, consts: function () { let i18n_55; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_progressbar_value$$FESM2015_NG_BOOTSTRAP_JS__56 = goog.getMsg(\"{$interpolation}\", { \"interpolation\": \"\\uFFFD0\\uFFFD\" });\n i18n_55 = MSG_EXTERNAL_ngb_progressbar_value$$FESM2015_NG_BOOTSTRAP_JS__56;\n }\n else {\n i18n_55 = $localize `:@@ngb.progressbar.value␟f8e9a947b9db4252c0e9905765338712f2fd032f␟3720830768741091151:${\"\\uFFFD0\\uFFFD\"}:INTERPOLATION:`;\n } return [[\"role\", \"progressbar\", \"aria-valuemin\", \"0\"], [4, \"ngIf\"], i18n_55]; }, template: function NgbProgressbar_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵelementStart(0, \"div\", 0);\n ɵngcc0.ɵɵtemplate(1, NgbProgressbar_span_1_Template, 3, 3, \"span\", 1);\n ɵngcc0.ɵɵprojection(2);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵclassMapInterpolate4(\"progress-bar\", ctx.type ? \" bg-\" + ctx.type : \"\", \"\", ctx.textType ? \" text-\" + ctx.textType : \"\", \"\\n \", ctx.animated ? \" progress-bar-animated\" : \"\", \"\", ctx.striped ? \" progress-bar-striped\" : \"\", \"\");\n ɵngcc0.ɵɵstyleProp(\"width\", ctx.getPercentValue(), \"%\");\n ɵngcc0.ɵɵattribute(\"aria-valuenow\", ctx.getValue())(\"aria-valuemax\", ctx.max);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showValue);\n } }, directives: [ɵngcc1.NgIf], pipes: [ɵngcc1.PercentPipe], encapsulation: 2, changeDetection: 0 });\r\nNgbProgressbar.ctorParameters = () => [\r\n { type: NgbProgressbarConfig }\r\n];\r\nNgbProgressbar.propDecorators = {\r\n max: [{ type: Input }],\r\n animated: [{ type: Input }],\r\n striped: [{ type: Input }],\r\n showValue: [{ type: Input }],\r\n textType: [{ type: Input }],\r\n type: [{ type: Input }],\r\n value: [{ type: Input }],\r\n height: [{ type: Input }, { type: HostBinding, args: ['style.height',] }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbProgressbar, [{\n type: Component,\n args: [{\n selector: 'ngb-progressbar',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { class: 'progress' },\n template: `\r\n
    \r\n {{getValue() / max | percent}}\r\n
    \r\n `\n }]\n }], function () { return [{ type: NgbProgressbarConfig }]; }, { value: [{\n type: Input\n }], max: [{\n type: Input\n }], animated: [{\n type: Input\n }], striped: [{\n type: Input\n }], textType: [{\n type: Input\n }], type: [{\n type: Input\n }], showValue: [{\n type: Input\n }], height: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['style.height']\n }] }); })();\n\nclass NgbProgressbarModule {\r\n}\nNgbProgressbarModule.ɵfac = function NgbProgressbarModule_Factory(t) { return new (t || NgbProgressbarModule)(); };\nNgbProgressbarModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbProgressbarModule });\nNgbProgressbarModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbProgressbarModule, [{\n type: NgModule,\n args: [{ declarations: [NgbProgressbar], exports: [NgbProgressbar], imports: [CommonModule] }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbProgressbarModule, { declarations: function () { return [NgbProgressbar]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbProgressbar]; } }); })();\n\n/**\r\n * A configuration service for the [`NgbRating`](#/components/rating/api#NgbRating) component.\r\n *\r\n * You can inject this service, typically in your root component, and customize the values of its properties in\r\n * order to provide default values for all the ratings used in the application.\r\n */\r\nclass NgbRatingConfig {\r\n constructor() {\r\n this.max = 10;\r\n this.readonly = false;\r\n this.resettable = false;\r\n }\r\n}\nNgbRatingConfig.ɵfac = function NgbRatingConfig_Factory(t) { return new (t || NgbRatingConfig)(); };\r\nNgbRatingConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgbRatingConfig_Factory() { return new NgbRatingConfig(); }, token: NgbRatingConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbRatingConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n\n/**\r\n * A directive that helps visualising and interacting with a star rating bar.\r\n */\r\nclass NgbRating {\r\n constructor(config, _changeDetectorRef) {\r\n this._changeDetectorRef = _changeDetectorRef;\r\n this.contexts = [];\r\n this.disabled = false;\r\n /**\r\n * An event emitted when the user is hovering over a given rating.\r\n *\r\n * Event payload equals to the rating being hovered over.\r\n */\r\n this.hover = new EventEmitter();\r\n /**\r\n * An event emitted when the user stops hovering over a given rating.\r\n *\r\n * Event payload equals to the rating of the last item being hovered over.\r\n */\r\n this.leave = new EventEmitter();\r\n /**\r\n * An event emitted when the user selects a new rating.\r\n *\r\n * Event payload equals to the newly selected rating.\r\n */\r\n this.rateChange = new EventEmitter(true);\r\n this.onChange = (_) => { };\r\n this.onTouched = () => { };\r\n this.max = config.max;\r\n this.readonly = config.readonly;\r\n }\r\n ariaValueText() { return `${this.nextRate} out of ${this.max}`; }\r\n isInteractive() { return !this.readonly && !this.disabled; }\r\n enter(value) {\r\n if (this.isInteractive()) {\r\n this._updateState(value);\r\n }\r\n this.hover.emit(value);\r\n }\r\n handleBlur() { this.onTouched(); }\r\n handleClick(value) {\r\n if (this.isInteractive()) {\r\n this.update(this.resettable && this.rate === value ? 0 : value);\r\n }\r\n }\r\n handleKeyDown(event) {\r\n // tslint:disable-next-line:deprecation\r\n switch (event.which) {\r\n case Key.ArrowDown:\r\n case Key.ArrowLeft:\r\n this.update(this.rate - 1);\r\n break;\r\n case Key.ArrowUp:\r\n case Key.ArrowRight:\r\n this.update(this.rate + 1);\r\n break;\r\n case Key.Home:\r\n this.update(0);\r\n break;\r\n case Key.End:\r\n this.update(this.max);\r\n break;\r\n default:\r\n return;\r\n }\r\n // note 'return' in default case\r\n event.preventDefault();\r\n }\r\n ngOnChanges(changes) {\r\n if (changes['rate']) {\r\n this.update(this.rate);\r\n }\r\n }\r\n ngOnInit() {\r\n this.contexts = Array.from({ length: this.max }, (v, k) => ({ fill: 0, index: k }));\r\n this._updateState(this.rate);\r\n }\r\n registerOnChange(fn) { this.onChange = fn; }\r\n registerOnTouched(fn) { this.onTouched = fn; }\r\n reset() {\r\n this.leave.emit(this.nextRate);\r\n this._updateState(this.rate);\r\n }\r\n setDisabledState(isDisabled) { this.disabled = isDisabled; }\r\n update(value, internalChange = true) {\r\n const newRate = getValueInRange(value, this.max, 0);\r\n if (this.isInteractive() && this.rate !== newRate) {\r\n this.rate = newRate;\r\n this.rateChange.emit(this.rate);\r\n }\r\n if (internalChange) {\r\n this.onChange(this.rate);\r\n this.onTouched();\r\n }\r\n this._updateState(this.rate);\r\n }\r\n writeValue(value) {\r\n this.update(value, false);\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n _updateState(nextValue) {\r\n this.nextRate = nextValue;\r\n this.contexts.forEach((context, index) => context.fill = Math.round(getValueInRange(nextValue - index, 1, 0) * 100));\r\n }\r\n}\nNgbRating.ɵfac = function NgbRating_Factory(t) { return new (t || NgbRating)(ɵngcc0.ɵɵdirectiveInject(NgbRatingConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nNgbRating.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbRating, selectors: [[\"ngb-rating\"]], contentQueries: function NgbRating_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, TemplateRef, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.starTemplateFromContent = _t.first);\n } }, hostAttrs: [\"role\", \"slider\", \"aria-valuemin\", \"0\", 1, \"d-inline-flex\"], hostVars: 5, hostBindings: function NgbRating_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"blur\", function NgbRating_blur_HostBindingHandler() { return ctx.handleBlur(); })(\"keydown\", function NgbRating_keydown_HostBindingHandler($event) { return ctx.handleKeyDown($event); })(\"mouseleave\", function NgbRating_mouseleave_HostBindingHandler() { return ctx.reset(); });\n } if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"tabindex\", ctx.disabled ? -1 : 0);\n ɵngcc0.ɵɵattribute(\"aria-valuemax\", ctx.max)(\"aria-valuenow\", ctx.nextRate)(\"aria-valuetext\", ctx.ariaValueText())(\"aria-disabled\", ctx.readonly ? true : null);\n } }, inputs: { max: \"max\", readonly: \"readonly\", rate: \"rate\", resettable: \"resettable\", starTemplate: \"starTemplate\" }, outputs: { hover: \"hover\", leave: \"leave\", rateChange: \"rateChange\" }, features: [ɵngcc0.ɵɵProvidersFeature([{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbRating), multi: true }]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 3, vars: 1, consts: [[\"t\", \"\"], [\"ngFor\", \"\", 3, \"ngForOf\"], [1, \"sr-only\"], [3, \"mouseenter\", \"click\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]], template: function NgbRating_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbRating_ng_template_0_Template, 1, 1, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, NgbRating_ng_template_2_Template, 4, 5, \"ng-template\", 1);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.contexts);\n } }, directives: [ɵngcc1.NgForOf, ɵngcc1.NgTemplateOutlet], encapsulation: 2, changeDetection: 0 });\r\nNgbRating.ctorParameters = () => [\r\n { type: NgbRatingConfig },\r\n { type: ChangeDetectorRef }\r\n];\r\nNgbRating.propDecorators = {\r\n max: [{ type: Input }],\r\n rate: [{ type: Input }],\r\n readonly: [{ type: Input }],\r\n resettable: [{ type: Input }],\r\n starTemplate: [{ type: Input }],\r\n starTemplateFromContent: [{ type: ContentChild, args: [TemplateRef, { static: false },] }],\r\n hover: [{ type: Output }],\r\n leave: [{ type: Output }],\r\n rateChange: [{ type: Output }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbRating, [{\n type: Component,\n args: [{\n selector: 'ngb-rating',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'd-inline-flex',\n '[tabindex]': 'disabled ? -1 : 0',\n 'role': 'slider',\n 'aria-valuemin': '0',\n '[attr.aria-valuemax]': 'max',\n '[attr.aria-valuenow]': 'nextRate',\n '[attr.aria-valuetext]': 'ariaValueText()',\n '[attr.aria-disabled]': 'readonly ? true : null',\n '(blur)': 'handleBlur()',\n '(keydown)': 'handleKeyDown($event)',\n '(mouseleave)': 'reset()'\n },\n template: `\r\n {{ fill === 100 ? '★' : '☆' }}\r\n \r\n ({{ index < nextRate ? '*' : ' ' }})\r\n \r\n \r\n \r\n \r\n \r\n `,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbRating), multi: true }]\n }]\n }], function () { return [{ type: NgbRatingConfig }, { type: ɵngcc0.ChangeDetectorRef }]; }, { hover: [{\n type: Output\n }], leave: [{\n type: Output\n }], rateChange: [{\n type: Output\n }], max: [{\n type: Input\n }], readonly: [{\n type: Input\n }], rate: [{\n type: Input\n }], resettable: [{\n type: Input\n }], starTemplate: [{\n type: Input\n }], starTemplateFromContent: [{\n type: ContentChild,\n args: [TemplateRef, { static: false }]\n }] }); })();\n\nclass NgbRatingModule {\r\n}\nNgbRatingModule.ɵfac = function NgbRatingModule_Factory(t) { return new (t || NgbRatingModule)(); };\nNgbRatingModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbRatingModule });\nNgbRatingModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbRatingModule, [{\n type: NgModule,\n args: [{ declarations: [NgbRating], exports: [NgbRating], imports: [CommonModule] }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbRatingModule, { declarations: function () { return [NgbRating]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbRating]; } }); })();\n\nclass NgbTime {\r\n constructor(hour, minute, second) {\r\n this.hour = toInteger(hour);\r\n this.minute = toInteger(minute);\r\n this.second = toInteger(second);\r\n }\r\n changeHour(step = 1) { this.updateHour((isNaN(this.hour) ? 0 : this.hour) + step); }\r\n updateHour(hour) {\r\n if (isNumber(hour)) {\r\n this.hour = (hour < 0 ? 24 + hour : hour) % 24;\r\n }\r\n else {\r\n this.hour = NaN;\r\n }\r\n }\r\n changeMinute(step = 1) { this.updateMinute((isNaN(this.minute) ? 0 : this.minute) + step); }\r\n updateMinute(minute) {\r\n if (isNumber(minute)) {\r\n this.minute = minute % 60 < 0 ? 60 + minute % 60 : minute % 60;\r\n this.changeHour(Math.floor(minute / 60));\r\n }\r\n else {\r\n this.minute = NaN;\r\n }\r\n }\r\n changeSecond(step = 1) { this.updateSecond((isNaN(this.second) ? 0 : this.second) + step); }\r\n updateSecond(second) {\r\n if (isNumber(second)) {\r\n this.second = second < 0 ? 60 + second % 60 : second % 60;\r\n this.changeMinute(Math.floor(second / 60));\r\n }\r\n else {\r\n this.second = NaN;\r\n }\r\n }\r\n isValid(checkSecs = true) {\r\n return isNumber(this.hour) && isNumber(this.minute) && (checkSecs ? isNumber(this.second) : true);\r\n }\r\n toString() { return `${this.hour || 0}:${this.minute || 0}:${this.second || 0}`; }\r\n}\n\n/**\r\n * A configuration service for the [`NgbTimepicker`](#/components/timepicker/api#NgbTimepicker) component.\r\n *\r\n * You can inject this service, typically in your root component, and customize the values of its properties in\r\n * order to provide default values for all the timepickers used in the application.\r\n */\r\nclass NgbTimepickerConfig {\r\n constructor() {\r\n this.meridian = false;\r\n this.spinners = true;\r\n this.seconds = false;\r\n this.hourStep = 1;\r\n this.minuteStep = 1;\r\n this.secondStep = 1;\r\n this.disabled = false;\r\n this.readonlyInputs = false;\r\n this.size = 'medium';\r\n }\r\n}\nNgbTimepickerConfig.ɵfac = function NgbTimepickerConfig_Factory(t) { return new (t || NgbTimepickerConfig)(); };\r\nNgbTimepickerConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgbTimepickerConfig_Factory() { return new NgbTimepickerConfig(); }, token: NgbTimepickerConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTimepickerConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n\nfunction NGB_DATEPICKER_TIME_ADAPTER_FACTORY() {\r\n return new NgbTimeStructAdapter();\r\n}\r\n/**\r\n * An abstract service that does the conversion between the internal timepicker `NgbTimeStruct` model and\r\n * any provided user time model `T`, ex. a string, a native date, etc.\r\n *\r\n * The adapter is used **only** for conversion when binding timepicker to a form control,\r\n * ex. `[(ngModel)]=\"userTimeModel\"`. Here `userTimeModel` can be of any type.\r\n *\r\n * The default timepicker implementation assumes we use `NgbTimeStruct` as a user model.\r\n *\r\n * See the [custom time adapter demo](#/components/timepicker/examples#adapter) for an example.\r\n *\r\n * @since 2.2.0\r\n */\r\nclass NgbTimeAdapter {\r\n}\nNgbTimeAdapter.ɵfac = function NgbTimeAdapter_Factory(t) { return new (t || NgbTimeAdapter)(); };\r\nNgbTimeAdapter.ɵprov = ɵɵdefineInjectable({ factory: NGB_DATEPICKER_TIME_ADAPTER_FACTORY, token: NgbTimeAdapter, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTimeAdapter, [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: NGB_DATEPICKER_TIME_ADAPTER_FACTORY }]\n }], null, null); })();\r\nclass NgbTimeStructAdapter extends NgbTimeAdapter {\r\n /**\r\n * Converts a NgbTimeStruct value into NgbTimeStruct value\r\n */\r\n fromModel(time) {\r\n return (time && isInteger(time.hour) && isInteger(time.minute)) ?\r\n { hour: time.hour, minute: time.minute, second: isInteger(time.second) ? time.second : null } :\r\n null;\r\n }\r\n /**\r\n * Converts a NgbTimeStruct value into NgbTimeStruct value\r\n */\r\n toModel(time) {\r\n return (time && isInteger(time.hour) && isInteger(time.minute)) ?\r\n { hour: time.hour, minute: time.minute, second: isInteger(time.second) ? time.second : null } :\r\n null;\r\n }\r\n}\nNgbTimeStructAdapter.ɵfac = /*@__PURE__*/ function () { let ɵNgbTimeStructAdapter_BaseFactory; return function NgbTimeStructAdapter_Factory(t) { return (ɵNgbTimeStructAdapter_BaseFactory || (ɵNgbTimeStructAdapter_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbTimeStructAdapter)))(t || NgbTimeStructAdapter); }; }();\nNgbTimeStructAdapter.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbTimeStructAdapter, factory: NgbTimeStructAdapter.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTimeStructAdapter, [{\n type: Injectable\n }], null, null); })();\n\nfunction NGB_TIMEPICKER_I18N_FACTORY(locale) {\r\n return new NgbTimepickerI18nDefault(locale);\r\n}\r\n/**\r\n * Type of the service supplying day periods (for example, 'AM' and 'PM') to NgbTimepicker component.\r\n * The default implementation of this service honors the Angular locale, and uses the registered locale data,\r\n * as explained in the Angular i18n guide.\r\n */\r\nclass NgbTimepickerI18n {\r\n}\nNgbTimepickerI18n.ɵfac = function NgbTimepickerI18n_Factory(t) { return new (t || NgbTimepickerI18n)(); };\r\nNgbTimepickerI18n.ɵprov = ɵɵdefineInjectable({ factory: function NgbTimepickerI18n_Factory() { return NGB_TIMEPICKER_I18N_FACTORY(ɵɵinject(LOCALE_ID)); }, token: NgbTimepickerI18n, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTimepickerI18n, [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: NGB_TIMEPICKER_I18N_FACTORY, deps: [LOCALE_ID] }]\n }], null, null); })();\r\nclass NgbTimepickerI18nDefault extends NgbTimepickerI18n {\r\n constructor(locale) {\r\n super();\r\n this._periods = getLocaleDayPeriods(locale, FormStyle.Standalone, TranslationWidth.Narrow);\r\n }\r\n getMorningPeriod() { return this._periods[0]; }\r\n getAfternoonPeriod() { return this._periods[1]; }\r\n}\nNgbTimepickerI18nDefault.ɵfac = function NgbTimepickerI18nDefault_Factory(t) { return new (t || NgbTimepickerI18nDefault)(ɵngcc0.ɵɵinject(LOCALE_ID)); };\nNgbTimepickerI18nDefault.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbTimepickerI18nDefault, factory: NgbTimepickerI18nDefault.ɵfac });\r\nNgbTimepickerI18nDefault.ctorParameters = () => [\r\n { type: String, decorators: [{ type: Inject, args: [LOCALE_ID,] }] }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTimepickerI18nDefault, [{\n type: Injectable\n }], function () { return [{ type: String, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; }, null); })();\n\nconst FILTER_REGEX = /[^0-9]/g;\r\n/**\r\n * A directive that helps with wth picking hours, minutes and seconds.\r\n */\r\nclass NgbTimepicker {\r\n constructor(_config, _ngbTimeAdapter, _cd, i18n) {\r\n this._config = _config;\r\n this._ngbTimeAdapter = _ngbTimeAdapter;\r\n this._cd = _cd;\r\n this.i18n = i18n;\r\n this.onChange = (_) => { };\r\n this.onTouched = () => { };\r\n this.meridian = _config.meridian;\r\n this.spinners = _config.spinners;\r\n this.seconds = _config.seconds;\r\n this.hourStep = _config.hourStep;\r\n this.minuteStep = _config.minuteStep;\r\n this.secondStep = _config.secondStep;\r\n this.disabled = _config.disabled;\r\n this.readonlyInputs = _config.readonlyInputs;\r\n this.size = _config.size;\r\n }\r\n /**\r\n * The number of hours to add/subtract when clicking hour spinners.\r\n */\r\n set hourStep(step) {\r\n this._hourStep = isInteger(step) ? step : this._config.hourStep;\r\n }\r\n get hourStep() { return this._hourStep; }\r\n /**\r\n * The number of minutes to add/subtract when clicking minute spinners.\r\n */\r\n set minuteStep(step) {\r\n this._minuteStep = isInteger(step) ? step : this._config.minuteStep;\r\n }\r\n get minuteStep() { return this._minuteStep; }\r\n /**\r\n * The number of seconds to add/subtract when clicking second spinners.\r\n */\r\n set secondStep(step) {\r\n this._secondStep = isInteger(step) ? step : this._config.secondStep;\r\n }\r\n get secondStep() { return this._secondStep; }\r\n writeValue(value) {\r\n const structValue = this._ngbTimeAdapter.fromModel(value);\r\n this.model = structValue ? new NgbTime(structValue.hour, structValue.minute, structValue.second) : new NgbTime();\r\n if (!this.seconds && (!structValue || !isNumber(structValue.second))) {\r\n this.model.second = 0;\r\n }\r\n this._cd.markForCheck();\r\n }\r\n registerOnChange(fn) { this.onChange = fn; }\r\n registerOnTouched(fn) { this.onTouched = fn; }\r\n setDisabledState(isDisabled) { this.disabled = isDisabled; }\r\n changeHour(step) {\r\n this.model.changeHour(step);\r\n this.propagateModelChange();\r\n }\r\n changeMinute(step) {\r\n this.model.changeMinute(step);\r\n this.propagateModelChange();\r\n }\r\n changeSecond(step) {\r\n this.model.changeSecond(step);\r\n this.propagateModelChange();\r\n }\r\n updateHour(newVal) {\r\n const isPM = this.model.hour >= 12;\r\n const enteredHour = toInteger(newVal);\r\n if (this.meridian && (isPM && enteredHour < 12 || !isPM && enteredHour === 12)) {\r\n this.model.updateHour(enteredHour + 12);\r\n }\r\n else {\r\n this.model.updateHour(enteredHour);\r\n }\r\n this.propagateModelChange();\r\n }\r\n updateMinute(newVal) {\r\n this.model.updateMinute(toInteger(newVal));\r\n this.propagateModelChange();\r\n }\r\n updateSecond(newVal) {\r\n this.model.updateSecond(toInteger(newVal));\r\n this.propagateModelChange();\r\n }\r\n toggleMeridian() {\r\n if (this.meridian) {\r\n this.changeHour(12);\r\n }\r\n }\r\n formatInput(input) { input.value = input.value.replace(FILTER_REGEX, ''); }\r\n formatHour(value) {\r\n if (isNumber(value)) {\r\n if (this.meridian) {\r\n return padNumber(value % 12 === 0 ? 12 : value % 12);\r\n }\r\n else {\r\n return padNumber(value % 24);\r\n }\r\n }\r\n else {\r\n return padNumber(NaN);\r\n }\r\n }\r\n formatMinSec(value) { return padNumber(isNumber(value) ? value : NaN); }\r\n handleBlur() { this.onTouched(); }\r\n get isSmallSize() { return this.size === 'small'; }\r\n get isLargeSize() { return this.size === 'large'; }\r\n ngOnChanges(changes) {\r\n if (changes['seconds'] && !this.seconds && this.model && !isNumber(this.model.second)) {\r\n this.model.second = 0;\r\n this.propagateModelChange(false);\r\n }\r\n }\r\n propagateModelChange(touched = true) {\r\n if (touched) {\r\n this.onTouched();\r\n }\r\n if (this.model.isValid(this.seconds)) {\r\n this.onChange(this._ngbTimeAdapter.toModel({ hour: this.model.hour, minute: this.model.minute, second: this.model.second }));\r\n }\r\n else {\r\n this.onChange(this._ngbTimeAdapter.toModel(null));\r\n }\r\n }\r\n}\nNgbTimepicker.ɵfac = function NgbTimepicker_Factory(t) { return new (t || NgbTimepicker)(ɵngcc0.ɵɵdirectiveInject(NgbTimepickerConfig), ɵngcc0.ɵɵdirectiveInject(NgbTimeAdapter), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(NgbTimepickerI18n)); };\nNgbTimepicker.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbTimepicker, selectors: [[\"ngb-timepicker\"]], inputs: { meridian: \"meridian\", spinners: \"spinners\", seconds: \"seconds\", hourStep: \"hourStep\", minuteStep: \"minuteStep\", secondStep: \"secondStep\", readonlyInputs: \"readonlyInputs\", size: \"size\" }, features: [ɵngcc0.ɵɵProvidersFeature([{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbTimepicker), multi: true }]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 16, vars: 25, consts: function () { let i18n_57; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_timepicker_HH$$FESM2015_NG_BOOTSTRAP_JS_58 = goog.getMsg(\"HH\");\n i18n_57 = MSG_EXTERNAL_ngb_timepicker_HH$$FESM2015_NG_BOOTSTRAP_JS_58;\n }\n else {\n i18n_57 = $localize `:@@ngb.timepicker.HH␟ce676ab1d6d98f85c836381cf100a4a91ef95a1f␟4043638465245303811:HH`;\n } let i18n_59; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_timepicker_hours$$FESM2015_NG_BOOTSTRAP_JS_60 = goog.getMsg(\"Hours\");\n i18n_59 = MSG_EXTERNAL_ngb_timepicker_hours$$FESM2015_NG_BOOTSTRAP_JS_60;\n }\n else {\n i18n_59 = $localize `:@@ngb.timepicker.hours␟3bbce5fef7e1151da052a4e529453edb340e3912␟8070396816726827304:Hours`;\n } let i18n_61; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_timepicker_MM$$FESM2015_NG_BOOTSTRAP_JS_62 = goog.getMsg(\"MM\");\n i18n_61 = MSG_EXTERNAL_ngb_timepicker_MM$$FESM2015_NG_BOOTSTRAP_JS_62;\n }\n else {\n i18n_61 = $localize `:@@ngb.timepicker.MM␟72c8edf6a50068a05bde70991e36b1e881f4ca54␟1647282246509919852:MM`;\n } let i18n_63; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_timepicker_minutes$$FESM2015_NG_BOOTSTRAP_JS_64 = goog.getMsg(\"Minutes\");\n i18n_63 = MSG_EXTERNAL_ngb_timepicker_minutes$$FESM2015_NG_BOOTSTRAP_JS_64;\n }\n else {\n i18n_63 = $localize `:@@ngb.timepicker.minutes␟41e62daa962947c0d23ded0981975d1bddf0bf38␟5531237363767747080:Minutes`;\n } let i18n_65; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_timepicker_increment_hours$$FESM2015_NG_BOOTSTRAP_JS__66 = goog.getMsg(\"Increment hours\");\n i18n_65 = MSG_EXTERNAL_ngb_timepicker_increment_hours$$FESM2015_NG_BOOTSTRAP_JS__66;\n }\n else {\n i18n_65 = $localize `:@@ngb.timepicker.increment-hours␟cb74bc1d625a6c1742f0d7d47306cf495780c218␟5939278348542933629:Increment hours`;\n } let i18n_67; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_timepicker_decrement_hours$$FESM2015_NG_BOOTSTRAP_JS__68 = goog.getMsg(\"Decrement hours\");\n i18n_67 = MSG_EXTERNAL_ngb_timepicker_decrement_hours$$FESM2015_NG_BOOTSTRAP_JS__68;\n }\n else {\n i18n_67 = $localize `:@@ngb.timepicker.decrement-hours␟147c7a19429da7d999e247d22e33fee370b1691b␟3651829882940481818:Decrement hours`;\n } let i18n_69; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_timepicker_increment_minutes$$FESM2015_NG_BOOTSTRAP_JS__70 = goog.getMsg(\"Increment minutes\");\n i18n_69 = MSG_EXTERNAL_ngb_timepicker_increment_minutes$$FESM2015_NG_BOOTSTRAP_JS__70;\n }\n else {\n i18n_69 = $localize `:@@ngb.timepicker.increment-minutes␟f5a4a3bc05e053f6732475d0e74875ec01c3a348␟180147720391025024:Increment minutes`;\n } let i18n_71; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_timepicker_decrement_minutes$$FESM2015_NG_BOOTSTRAP_JS__72 = goog.getMsg(\"Decrement minutes\");\n i18n_71 = MSG_EXTERNAL_ngb_timepicker_decrement_minutes$$FESM2015_NG_BOOTSTRAP_JS__72;\n }\n else {\n i18n_71 = $localize `:@@ngb.timepicker.decrement-minutes␟c1a6899e529c096da5b660385d4e77fe1f7ad271␟7447789825403243588:Decrement minutes`;\n } let i18n_73; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_timepicker_SS$$FESM2015_NG_BOOTSTRAP_JS__74 = goog.getMsg(\"SS\");\n i18n_73 = MSG_EXTERNAL_ngb_timepicker_SS$$FESM2015_NG_BOOTSTRAP_JS__74;\n }\n else {\n i18n_73 = $localize `:@@ngb.timepicker.SS␟ebe38d36a40a2383c5fefa9b4608ffbda08bd4a3␟3628127143071124194:SS`;\n } let i18n_75; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_timepicker_seconds$$FESM2015_NG_BOOTSTRAP_JS__76 = goog.getMsg(\"Seconds\");\n i18n_75 = MSG_EXTERNAL_ngb_timepicker_seconds$$FESM2015_NG_BOOTSTRAP_JS__76;\n }\n else {\n i18n_75 = $localize `:@@ngb.timepicker.seconds␟4f2ed9e71a7c981db3e50ae2fedb28aff2ec4e6c␟8874012390997067175:Seconds`;\n } let i18n_77; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_timepicker_increment_seconds$$FESM2015_NG_BOOTSTRAP_JS___78 = goog.getMsg(\"Increment seconds\");\n i18n_77 = MSG_EXTERNAL_ngb_timepicker_increment_seconds$$FESM2015_NG_BOOTSTRAP_JS___78;\n }\n else {\n i18n_77 = $localize `:@@ngb.timepicker.increment-seconds␟912322ecee7d659d04dcf494a70e22e49d334b26␟5364772110539092174:Increment seconds`;\n } let i18n_79; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_timepicker_decrement_seconds$$FESM2015_NG_BOOTSTRAP_JS___80 = goog.getMsg(\"Decrement seconds\");\n i18n_79 = MSG_EXTERNAL_ngb_timepicker_decrement_seconds$$FESM2015_NG_BOOTSTRAP_JS___80;\n }\n else {\n i18n_79 = $localize `:@@ngb.timepicker.decrement-seconds␟5db47ac104294243a70eb9124fbea9d0004ddf69␟753633511487974857:Decrement seconds`;\n } let i18n_81; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_timepicker_PM$$FESM2015_NG_BOOTSTRAP_JS___82 = goog.getMsg(\"{$interpolation}\", { \"interpolation\": \"\\uFFFD0\\uFFFD\" });\n i18n_81 = MSG_EXTERNAL_ngb_timepicker_PM$$FESM2015_NG_BOOTSTRAP_JS___82;\n }\n else {\n i18n_81 = $localize `:@@ngb.timepicker.PM␟8d6e691e10306c1b34c6b26805151aaea320ef7f␟3564199131264287502:${\"\\uFFFD0\\uFFFD\"}:INTERPOLATION:`;\n } let i18n_83; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_timepicker_AM$$FESM2015_NG_BOOTSTRAP_JS___84 = goog.getMsg(\"{$interpolation}\", { \"interpolation\": \"\\uFFFD0\\uFFFD\" });\n i18n_83 = MSG_EXTERNAL_ngb_timepicker_AM$$FESM2015_NG_BOOTSTRAP_JS___84;\n }\n else {\n i18n_83 = $localize `:@@ngb.timepicker.AM␟69a1f176a93998876952adac57c3bc3863b6105e␟4592818992509942761:${\"\\uFFFD0\\uFFFD\"}:INTERPOLATION:`;\n } return [[3, \"disabled\"], [1, \"ngb-tp\"], [1, \"ngb-tp-input-container\", \"ngb-tp-hour\"], [\"tabindex\", \"-1\", \"type\", \"button\", \"class\", \"btn btn-link\", 3, \"btn-sm\", \"btn-lg\", \"disabled\", \"click\", 4, \"ngIf\"], [\"type\", \"text\", \"maxlength\", \"2\", \"inputmode\", \"numeric\", \"placeholder\", i18n_57, \"aria-label\", i18n_59, 1, \"ngb-tp-input\", \"form-control\", 3, \"value\", \"readOnly\", \"disabled\", \"change\", \"blur\", \"input\", \"keydown.ArrowUp\", \"keydown.ArrowDown\"], [1, \"ngb-tp-spacer\"], [1, \"ngb-tp-input-container\", \"ngb-tp-minute\"], [\"type\", \"text\", \"maxlength\", \"2\", \"inputmode\", \"numeric\", \"placeholder\", i18n_61, \"aria-label\", i18n_63, 1, \"ngb-tp-input\", \"form-control\", 3, \"value\", \"readOnly\", \"disabled\", \"change\", \"blur\", \"input\", \"keydown.ArrowUp\", \"keydown.ArrowDown\"], [\"class\", \"ngb-tp-spacer\", 4, \"ngIf\"], [\"class\", \"ngb-tp-input-container ngb-tp-second\", 4, \"ngIf\"], [\"class\", \"ngb-tp-meridian\", 4, \"ngIf\"], [\"tabindex\", \"-1\", \"type\", \"button\", 1, \"btn\", \"btn-link\", 3, \"disabled\", \"click\"], [1, \"chevron\", \"ngb-tp-chevron\"], [1, \"sr-only\"], i18n_65, [1, \"chevron\", \"ngb-tp-chevron\", \"bottom\"], i18n_67, i18n_69, i18n_71, [1, \"ngb-tp-input-container\", \"ngb-tp-second\"], [\"type\", \"text\", \"maxlength\", \"2\", \"inputmode\", \"numeric\", \"placeholder\", i18n_73, \"aria-label\", i18n_75, 1, \"ngb-tp-input\", \"form-control\", 3, \"value\", \"readOnly\", \"disabled\", \"change\", \"blur\", \"input\", \"keydown.ArrowUp\", \"keydown.ArrowDown\"], i18n_77, i18n_79, [1, \"ngb-tp-meridian\"], [\"type\", \"button\", 1, \"btn\", \"btn-outline-primary\", 3, \"disabled\", \"click\"], [4, \"ngIf\", \"ngIfElse\"], [\"am\", \"\"], i18n_81, i18n_83]; }, template: function NgbTimepicker_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"fieldset\", 0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 1);\n ɵngcc0.ɵɵelementStart(2, \"div\", 2);\n ɵngcc0.ɵɵtemplate(3, NgbTimepicker_button_3_Template, 4, 7, \"button\", 3);\n ɵngcc0.ɵɵelementStart(4, \"input\", 4);\n ɵngcc0.ɵɵlistener(\"change\", function NgbTimepicker_Template_input_change_4_listener($event) { return ctx.updateHour($event.target.value); })(\"blur\", function NgbTimepicker_Template_input_blur_4_listener() { return ctx.handleBlur(); })(\"input\", function NgbTimepicker_Template_input_input_4_listener($event) { return ctx.formatInput($event.target); })(\"keydown.ArrowUp\", function NgbTimepicker_Template_input_keydown_ArrowUp_4_listener($event) { ctx.changeHour(ctx.hourStep); return $event.preventDefault(); })(\"keydown.ArrowDown\", function NgbTimepicker_Template_input_keydown_ArrowDown_4_listener($event) { ctx.changeHour(-ctx.hourStep); return $event.preventDefault(); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(5, NgbTimepicker_button_5_Template, 4, 7, \"button\", 3);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(6, \"div\", 5);\n ɵngcc0.ɵɵtext(7, \":\");\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(8, \"div\", 6);\n ɵngcc0.ɵɵtemplate(9, NgbTimepicker_button_9_Template, 4, 7, \"button\", 3);\n ɵngcc0.ɵɵelementStart(10, \"input\", 7);\n ɵngcc0.ɵɵlistener(\"change\", function NgbTimepicker_Template_input_change_10_listener($event) { return ctx.updateMinute($event.target.value); })(\"blur\", function NgbTimepicker_Template_input_blur_10_listener() { return ctx.handleBlur(); })(\"input\", function NgbTimepicker_Template_input_input_10_listener($event) { return ctx.formatInput($event.target); })(\"keydown.ArrowUp\", function NgbTimepicker_Template_input_keydown_ArrowUp_10_listener($event) { ctx.changeMinute(ctx.minuteStep); return $event.preventDefault(); })(\"keydown.ArrowDown\", function NgbTimepicker_Template_input_keydown_ArrowDown_10_listener($event) { ctx.changeMinute(-ctx.minuteStep); return $event.preventDefault(); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(11, NgbTimepicker_button_11_Template, 4, 7, \"button\", 3);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(12, NgbTimepicker_div_12_Template, 2, 0, \"div\", 8);\n ɵngcc0.ɵɵtemplate(13, NgbTimepicker_div_13_Template, 4, 9, \"div\", 9);\n ɵngcc0.ɵɵtemplate(14, NgbTimepicker_div_14_Template, 1, 0, \"div\", 8);\n ɵngcc0.ɵɵtemplate(15, NgbTimepicker_div_15_Template, 5, 9, \"div\", 10);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"disabled\", ctx.disabled);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx.disabled);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.spinners);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"form-control-sm\", ctx.isSmallSize)(\"form-control-lg\", ctx.isLargeSize);\n ɵngcc0.ɵɵproperty(\"value\", ctx.formatHour(ctx.model == null ? null : ctx.model.hour))(\"readOnly\", ctx.readonlyInputs)(\"disabled\", ctx.disabled);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.spinners);\n ɵngcc0.ɵɵadvance(4);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.spinners);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"form-control-sm\", ctx.isSmallSize)(\"form-control-lg\", ctx.isLargeSize);\n ɵngcc0.ɵɵproperty(\"value\", ctx.formatMinSec(ctx.model == null ? null : ctx.model.minute))(\"readOnly\", ctx.readonlyInputs)(\"disabled\", ctx.disabled);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.spinners);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.seconds);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.seconds);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.meridian);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.meridian);\n } }, directives: [ɵngcc1.NgIf], styles: [\"ngb-timepicker{font-size:1rem}.ngb-tp{align-items:center;display:flex}.ngb-tp-input-container{width:4em}.ngb-tp-chevron:before{border-style:solid;border-width:.29em .29em 0 0;content:\\\"\\\";display:inline-block;height:.69em;left:.05em;position:relative;top:.15em;transform:rotate(-45deg);vertical-align:middle;width:.69em}.ngb-tp-chevron.bottom:before{top:-.3em;transform:rotate(135deg)}.ngb-tp-input{text-align:center}.ngb-tp-hour,.ngb-tp-meridian,.ngb-tp-minute,.ngb-tp-second{align-items:center;display:flex;flex-direction:column;justify-content:space-around}.ngb-tp-spacer{text-align:center;width:1em}\"], encapsulation: 2 });\r\nNgbTimepicker.ctorParameters = () => [\r\n { type: NgbTimepickerConfig },\r\n { type: NgbTimeAdapter },\r\n { type: ChangeDetectorRef },\r\n { type: NgbTimepickerI18n }\r\n];\r\nNgbTimepicker.propDecorators = {\r\n meridian: [{ type: Input }],\r\n spinners: [{ type: Input }],\r\n seconds: [{ type: Input }],\r\n hourStep: [{ type: Input }],\r\n minuteStep: [{ type: Input }],\r\n secondStep: [{ type: Input }],\r\n readonlyInputs: [{ type: Input }],\r\n size: [{ type: Input }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTimepicker, [{\n type: Component,\n args: [{\n selector: 'ngb-timepicker',\n encapsulation: ViewEncapsulation.None,\n template: `\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    :
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    :
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n `,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbTimepicker), multi: true }],\n styles: [\"ngb-timepicker{font-size:1rem}.ngb-tp{align-items:center;display:flex}.ngb-tp-input-container{width:4em}.ngb-tp-chevron:before{border-style:solid;border-width:.29em .29em 0 0;content:\\\"\\\";display:inline-block;height:.69em;left:.05em;position:relative;top:.15em;transform:rotate(-45deg);vertical-align:middle;width:.69em}.ngb-tp-chevron.bottom:before{top:-.3em;transform:rotate(135deg)}.ngb-tp-input{text-align:center}.ngb-tp-hour,.ngb-tp-meridian,.ngb-tp-minute,.ngb-tp-second{align-items:center;display:flex;flex-direction:column;justify-content:space-around}.ngb-tp-spacer{text-align:center;width:1em}\"]\n }]\n }], function () { return [{ type: NgbTimepickerConfig }, { type: NgbTimeAdapter }, { type: ɵngcc0.ChangeDetectorRef }, { type: NgbTimepickerI18n }]; }, { meridian: [{\n type: Input\n }], spinners: [{\n type: Input\n }], seconds: [{\n type: Input\n }], hourStep: [{\n type: Input\n }], minuteStep: [{\n type: Input\n }], secondStep: [{\n type: Input\n }], readonlyInputs: [{\n type: Input\n }], size: [{\n type: Input\n }] }); })();\n\nclass NgbTimepickerModule {\r\n}\nNgbTimepickerModule.ɵfac = function NgbTimepickerModule_Factory(t) { return new (t || NgbTimepickerModule)(); };\nNgbTimepickerModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbTimepickerModule });\nNgbTimepickerModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTimepickerModule, [{\n type: NgModule,\n args: [{ declarations: [NgbTimepicker], exports: [NgbTimepicker], imports: [CommonModule] }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbTimepickerModule, { declarations: function () { return [NgbTimepicker]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbTimepicker]; } }); })();\n\n/**\r\n * Configuration service for the NgbToast component. You can inject this service, typically in your root component,\r\n * and customize the values of its properties in order to provide default values for all the toasts used in the\r\n * application.\r\n *\r\n * @since 5.0.0\r\n */\r\nclass NgbToastConfig {\r\n constructor(_ngbConfig) {\r\n this._ngbConfig = _ngbConfig;\r\n this.autohide = true;\r\n this.delay = 500;\r\n this.ariaLive = 'polite';\r\n }\r\n get animation() { return (this._animation === undefined) ? this._ngbConfig.animation : this._animation; }\r\n set animation(animation) { this._animation = animation; }\r\n}\nNgbToastConfig.ɵfac = function NgbToastConfig_Factory(t) { return new (t || NgbToastConfig)(ɵngcc0.ɵɵinject(NgbConfig)); };\r\nNgbToastConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgbToastConfig_Factory() { return new NgbToastConfig(ɵɵinject(NgbConfig)); }, token: NgbToastConfig, providedIn: \"root\" });\r\nNgbToastConfig.ctorParameters = () => [\r\n { type: NgbConfig }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbToastConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: NgbConfig }]; }, null); })();\n\nconst ngbToastFadeInTransition = (element, animation) => {\r\n const { classList } = element;\r\n if (!animation) {\r\n classList.add('show');\r\n return;\r\n }\r\n classList.remove('hide');\r\n reflow(element);\r\n classList.add('showing');\r\n return () => {\r\n classList.remove('showing');\r\n classList.add('show');\r\n };\r\n};\r\nconst ngbToastFadeOutTransition = ({ classList }) => {\r\n classList.remove('show');\r\n return () => { classList.add('hide'); };\r\n};\n\n/**\r\n * This directive allows the usage of HTML markup or other directives\r\n * inside of the toast's header.\r\n *\r\n * @since 5.0.0\r\n */\r\nclass NgbToastHeader {\r\n}\nNgbToastHeader.ɵfac = function NgbToastHeader_Factory(t) { return new (t || NgbToastHeader)(); };\nNgbToastHeader.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbToastHeader, selectors: [[\"\", \"ngbToastHeader\", \"\"]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbToastHeader, [{\n type: Directive,\n args: [{ selector: '[ngbToastHeader]' }]\n }], null, null); })();\r\n/**\r\n * Toasts provide feedback messages as notifications to the user.\r\n * Goal is to mimic the push notifications available both on mobile and desktop operating systems.\r\n *\r\n * @since 5.0.0\r\n */\r\nclass NgbToast {\r\n constructor(ariaLive, config, _zone, _element) {\r\n this.ariaLive = ariaLive;\r\n this._zone = _zone;\r\n this._element = _element;\r\n /**\r\n * A template like `` can be\r\n * used in the projected content to allow markup usage.\r\n */\r\n this.contentHeaderTpl = null;\r\n /**\r\n * An event fired after the animation triggered by calling `.show()` method has finished.\r\n *\r\n * @since 8.0.0\r\n */\r\n this.shown = new EventEmitter();\r\n /**\r\n * An event fired after the animation triggered by calling `.hide()` method has finished.\r\n *\r\n * It can only occur in 2 different scenarios:\r\n * - `autohide` timeout fires\r\n * - user clicks on a closing cross\r\n *\r\n * Additionally this output is purely informative. The toast won't be removed from DOM automatically, it's up\r\n * to the user to take care of that.\r\n *\r\n * @since 8.0.0\r\n */\r\n this.hidden = new EventEmitter();\r\n if (this.ariaLive == null) {\r\n this.ariaLive = config.ariaLive;\r\n }\r\n this.delay = config.delay;\r\n this.autohide = config.autohide;\r\n this.animation = config.animation;\r\n }\r\n ngAfterContentInit() {\r\n this._zone.onStable.asObservable().pipe(take(1)).subscribe(() => {\r\n this._init();\r\n this.show();\r\n });\r\n }\r\n ngOnChanges(changes) {\r\n if ('autohide' in changes) {\r\n this._clearTimeout();\r\n this._init();\r\n }\r\n }\r\n /**\r\n * Triggers toast closing programmatically.\r\n *\r\n * The returned observable will emit and be completed once the closing transition has finished.\r\n * If the animations are turned off this happens synchronously.\r\n *\r\n * Alternatively you could listen or subscribe to the `(hidden)` output\r\n *\r\n * @since 8.0.0\r\n */\r\n hide() {\r\n this._clearTimeout();\r\n const transition = ngbRunTransition(this._zone, this._element.nativeElement, ngbToastFadeOutTransition, { animation: this.animation, runningTransition: 'stop' });\r\n transition.subscribe(() => { this.hidden.emit(); });\r\n return transition;\r\n }\r\n /**\r\n * Triggers toast opening programmatically.\r\n *\r\n * The returned observable will emit and be completed once the opening transition has finished.\r\n * If the animations are turned off this happens synchronously.\r\n *\r\n * Alternatively you could listen or subscribe to the `(shown)` output\r\n *\r\n * @since 8.0.0\r\n */\r\n show() {\r\n const transition = ngbRunTransition(this._zone, this._element.nativeElement, ngbToastFadeInTransition, {\r\n animation: this.animation,\r\n runningTransition: 'continue',\r\n });\r\n transition.subscribe(() => { this.shown.emit(); });\r\n return transition;\r\n }\r\n _init() {\r\n if (this.autohide && !this._timeoutID) {\r\n this._timeoutID = setTimeout(() => this.hide(), this.delay);\r\n }\r\n }\r\n _clearTimeout() {\r\n if (this._timeoutID) {\r\n clearTimeout(this._timeoutID);\r\n this._timeoutID = null;\r\n }\r\n }\r\n}\nNgbToast.ɵfac = function NgbToast_Factory(t) { return new (t || NgbToast)(ɵngcc0.ɵɵinjectAttribute('aria-live'), ɵngcc0.ɵɵdirectiveInject(NgbToastConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nNgbToast.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbToast, selectors: [[\"ngb-toast\"]], contentQueries: function NgbToast_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbToastHeader, 7, TemplateRef);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.contentHeaderTpl = _t.first);\n } }, hostAttrs: [\"role\", \"alert\", \"aria-atomic\", \"true\", 1, \"toast\"], hostVars: 3, hostBindings: function NgbToast_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"aria-live\", ctx.ariaLive);\n ɵngcc0.ɵɵclassProp(\"fade\", ctx.animation);\n } }, inputs: { delay: \"delay\", autohide: \"autohide\", animation: \"animation\", header: \"header\" }, outputs: { shown: \"shown\", hidden: \"hidden\" }, exportAs: [\"ngbToast\"], features: [ɵngcc0.ɵɵNgOnChangesFeature], ngContentSelectors: _c3, decls: 5, vars: 1, consts: function () { let i18n_85; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_toast_close_aria$$FESM2015_NG_BOOTSTRAP_JS__86 = goog.getMsg(\"Close\");\n i18n_85 = MSG_EXTERNAL_ngb_toast_close_aria$$FESM2015_NG_BOOTSTRAP_JS__86;\n }\n else {\n i18n_85 = $localize `:@@ngb.toast.close-aria␟f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8␟7819314041543176992:Close`;\n } return [[\"headerTpl\", \"\"], [3, \"ngIf\"], [1, \"toast-body\"], [1, \"mr-auto\"], [1, \"toast-header\"], [3, \"ngTemplateOutlet\"], [\"type\", \"button\", \"aria-label\", i18n_85, 1, \"close\", 3, \"click\"], [\"aria-hidden\", \"true\"]]; }, template: function NgbToast_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵtemplate(0, NgbToast_ng_template_0_Template, 2, 1, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, NgbToast_ng_template_2_Template, 5, 1, \"ng-template\", 1);\n ɵngcc0.ɵɵelementStart(3, \"div\", 2);\n ɵngcc0.ɵɵprojection(4);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.contentHeaderTpl || ctx.header);\n } }, directives: [ɵngcc1.NgIf, ɵngcc1.NgTemplateOutlet], styles: [\".ngb-toasts{margin:.5em;position:fixed;right:0;top:0;z-index:1200}ngb-toast{display:block}ngb-toast .toast-header .close{margin-bottom:.25rem;margin-left:auto}\"], encapsulation: 2 });\r\nNgbToast.ctorParameters = () => [\r\n { type: String, decorators: [{ type: Attribute, args: ['aria-live',] }] },\r\n { type: NgbToastConfig },\r\n { type: NgZone },\r\n { type: ElementRef }\r\n];\r\nNgbToast.propDecorators = {\r\n animation: [{ type: Input }],\r\n delay: [{ type: Input }],\r\n autohide: [{ type: Input }],\r\n header: [{ type: Input }],\r\n contentHeaderTpl: [{ type: ContentChild, args: [NgbToastHeader, { read: TemplateRef, static: true },] }],\r\n shown: [{ type: Output }],\r\n hidden: [{ type: Output }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbToast, [{\n type: Component,\n args: [{\n selector: 'ngb-toast',\n exportAs: 'ngbToast',\n encapsulation: ViewEncapsulation.None,\n host: {\n 'role': 'alert',\n '[attr.aria-live]': 'ariaLive',\n 'aria-atomic': 'true',\n 'class': 'toast',\n '[class.fade]': 'animation'\n },\n template: `\r\n \r\n {{header}}\r\n \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n `,\n styles: [\".ngb-toasts{margin:.5em;position:fixed;right:0;top:0;z-index:1200}ngb-toast{display:block}ngb-toast .toast-header .close{margin-bottom:.25rem;margin-left:auto}\"]\n }]\n }], function () { return [{ type: String, decorators: [{\n type: Attribute,\n args: ['aria-live']\n }] }, { type: NgbToastConfig }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ElementRef }]; }, { contentHeaderTpl: [{\n type: ContentChild,\n args: [NgbToastHeader, { read: TemplateRef, static: true }]\n }], shown: [{\n type: Output\n }], hidden: [{\n type: Output\n }], delay: [{\n type: Input\n }], autohide: [{\n type: Input\n }], animation: [{\n type: Input\n }], header: [{\n type: Input\n }] }); })();\n\nclass NgbToastModule {\r\n}\nNgbToastModule.ɵfac = function NgbToastModule_Factory(t) { return new (t || NgbToastModule)(); };\nNgbToastModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbToastModule });\nNgbToastModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbToastModule, [{\n type: NgModule,\n args: [{ declarations: [NgbToast, NgbToastHeader], imports: [CommonModule], exports: [NgbToast, NgbToastHeader] }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbToastModule, { declarations: function () { return [NgbToast, NgbToastHeader]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbToast, NgbToastHeader]; } }); })();\n\n/**\r\n * A configuration service for the [`NgbTooltip`](#/components/tooltip/api#NgbTooltip) component.\r\n *\r\n * You can inject this service, typically in your root component, and customize the values of its properties in\r\n * order to provide default values for all the tooltips used in the application.\r\n */\r\nclass NgbTooltipConfig {\r\n constructor(_ngbConfig) {\r\n this._ngbConfig = _ngbConfig;\r\n this.autoClose = true;\r\n this.placement = 'auto';\r\n this.triggers = 'hover focus';\r\n this.disableTooltip = false;\r\n this.openDelay = 0;\r\n this.closeDelay = 0;\r\n }\r\n get animation() { return (this._animation === undefined) ? this._ngbConfig.animation : this._animation; }\r\n set animation(animation) { this._animation = animation; }\r\n}\nNgbTooltipConfig.ɵfac = function NgbTooltipConfig_Factory(t) { return new (t || NgbTooltipConfig)(ɵngcc0.ɵɵinject(NgbConfig)); };\r\nNgbTooltipConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgbTooltipConfig_Factory() { return new NgbTooltipConfig(ɵɵinject(NgbConfig)); }, token: NgbTooltipConfig, providedIn: \"root\" });\r\nNgbTooltipConfig.ctorParameters = () => [\r\n { type: NgbConfig }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTooltipConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: NgbConfig }]; }, null); })();\n\nlet nextId$4 = 0;\r\nclass NgbTooltipWindow {\r\n}\nNgbTooltipWindow.ɵfac = function NgbTooltipWindow_Factory(t) { return new (t || NgbTooltipWindow)(); };\nNgbTooltipWindow.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbTooltipWindow, selectors: [[\"ngb-tooltip-window\"]], hostAttrs: [\"role\", \"tooltip\"], hostVars: 5, hostBindings: function NgbTooltipWindow_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"id\", ctx.id);\n ɵngcc0.ɵɵclassMap(\"tooltip\" + (ctx.tooltipClass ? \" \" + ctx.tooltipClass : \"\"));\n ɵngcc0.ɵɵclassProp(\"fade\", ctx.animation);\n } }, inputs: { animation: \"animation\", id: \"id\", tooltipClass: \"tooltipClass\" }, ngContentSelectors: _c3, decls: 3, vars: 0, consts: [[1, \"arrow\"], [1, \"tooltip-inner\"]], template: function NgbTooltipWindow_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵelement(0, \"div\", 0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 1);\n ɵngcc0.ɵɵprojection(2);\n ɵngcc0.ɵɵelementEnd();\n } }, styles: [\"ngb-tooltip-window{pointer-events:none}ngb-tooltip-window .tooltip-inner{pointer-events:auto}ngb-tooltip-window.bs-tooltip-bottom .arrow,ngb-tooltip-window.bs-tooltip-top .arrow{left:calc(50% - .4rem)}ngb-tooltip-window.bs-tooltip-bottom-left .arrow,ngb-tooltip-window.bs-tooltip-top-left .arrow{left:1em}ngb-tooltip-window.bs-tooltip-bottom-right .arrow,ngb-tooltip-window.bs-tooltip-top-right .arrow{left:auto;right:.8rem}ngb-tooltip-window.bs-tooltip-left .arrow,ngb-tooltip-window.bs-tooltip-right .arrow{top:calc(50% - .4rem)}ngb-tooltip-window.bs-tooltip-left-top .arrow,ngb-tooltip-window.bs-tooltip-right-top .arrow{top:.4rem}ngb-tooltip-window.bs-tooltip-left-bottom .arrow,ngb-tooltip-window.bs-tooltip-right-bottom .arrow{bottom:.4rem;top:auto}\"], encapsulation: 2, changeDetection: 0 });\r\nNgbTooltipWindow.propDecorators = {\r\n animation: [{ type: Input }],\r\n id: [{ type: Input }],\r\n tooltipClass: [{ type: Input }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTooltipWindow, [{\n type: Component,\n args: [{\n selector: 'ngb-tooltip-window',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': '\"tooltip\" + (tooltipClass ? \" \" + tooltipClass : \"\")',\n '[class.fade]': 'animation',\n 'role': 'tooltip',\n '[id]': 'id'\n },\n template: `
    `,\n styles: [\"ngb-tooltip-window{pointer-events:none}ngb-tooltip-window .tooltip-inner{pointer-events:auto}ngb-tooltip-window.bs-tooltip-bottom .arrow,ngb-tooltip-window.bs-tooltip-top .arrow{left:calc(50% - .4rem)}ngb-tooltip-window.bs-tooltip-bottom-left .arrow,ngb-tooltip-window.bs-tooltip-top-left .arrow{left:1em}ngb-tooltip-window.bs-tooltip-bottom-right .arrow,ngb-tooltip-window.bs-tooltip-top-right .arrow{left:auto;right:.8rem}ngb-tooltip-window.bs-tooltip-left .arrow,ngb-tooltip-window.bs-tooltip-right .arrow{top:calc(50% - .4rem)}ngb-tooltip-window.bs-tooltip-left-top .arrow,ngb-tooltip-window.bs-tooltip-right-top .arrow{top:.4rem}ngb-tooltip-window.bs-tooltip-left-bottom .arrow,ngb-tooltip-window.bs-tooltip-right-bottom .arrow{bottom:.4rem;top:auto}\"]\n }]\n }], null, { animation: [{\n type: Input\n }], id: [{\n type: Input\n }], tooltipClass: [{\n type: Input\n }] }); })();\r\n/**\r\n * A lightweight and extensible directive for fancy tooltip creation.\r\n */\r\nclass NgbTooltip {\r\n constructor(_elementRef, _renderer, injector, componentFactoryResolver, viewContainerRef, config, _ngZone, _document, _changeDetector, applicationRef) {\r\n this._elementRef = _elementRef;\r\n this._renderer = _renderer;\r\n this._ngZone = _ngZone;\r\n this._document = _document;\r\n this._changeDetector = _changeDetector;\r\n /**\r\n * An event emitted when the tooltip opening animation has finished. Contains no payload.\r\n */\r\n this.shown = new EventEmitter();\r\n /**\r\n * An event emitted when the tooltip closing animation has finished. Contains no payload.\r\n */\r\n this.hidden = new EventEmitter();\r\n this._ngbTooltipWindowId = `ngb-tooltip-${nextId$4++}`;\r\n this._windowRef = null;\r\n this.animation = config.animation;\r\n this.autoClose = config.autoClose;\r\n this.placement = config.placement;\r\n this.triggers = config.triggers;\r\n this.container = config.container;\r\n this.disableTooltip = config.disableTooltip;\r\n this.tooltipClass = config.tooltipClass;\r\n this.openDelay = config.openDelay;\r\n this.closeDelay = config.closeDelay;\r\n this._popupService = new PopupService(NgbTooltipWindow, injector, viewContainerRef, _renderer, this._ngZone, componentFactoryResolver, applicationRef);\r\n this._zoneSubscription = _ngZone.onStable.subscribe(() => {\r\n if (this._windowRef) {\r\n positionElements(this._elementRef.nativeElement, this._windowRef.location.nativeElement, this.placement, this.container === 'body', 'bs-tooltip');\r\n }\r\n });\r\n }\r\n /**\r\n * The string content or a `TemplateRef` for the content to be displayed in the tooltip.\r\n *\r\n * If the content if falsy, the tooltip won't open.\r\n */\r\n set ngbTooltip(value) {\r\n this._ngbTooltip = value;\r\n if (!value && this._windowRef) {\r\n this.close();\r\n }\r\n }\r\n get ngbTooltip() { return this._ngbTooltip; }\r\n /**\r\n * Opens the tooltip.\r\n *\r\n * This is considered to be a \"manual\" triggering.\r\n * The `context` is an optional value to be injected into the tooltip template when it is created.\r\n */\r\n open(context) {\r\n if (!this._windowRef && this._ngbTooltip && !this.disableTooltip) {\r\n const { windowRef, transition$ } = this._popupService.open(this._ngbTooltip, context, this.animation);\r\n this._windowRef = windowRef;\r\n this._windowRef.instance.animation = this.animation;\r\n this._windowRef.instance.tooltipClass = this.tooltipClass;\r\n this._windowRef.instance.id = this._ngbTooltipWindowId;\r\n this._renderer.setAttribute(this._elementRef.nativeElement, 'aria-describedby', this._ngbTooltipWindowId);\r\n if (this.container === 'body') {\r\n this._document.querySelector(this.container).appendChild(this._windowRef.location.nativeElement);\r\n }\r\n // We need to detect changes, because we don't know where .open() might be called from.\r\n // Ex. opening tooltip from one of lifecycle hooks that run after the CD\r\n // (say from ngAfterViewInit) will result in 'ExpressionHasChanged' exception\r\n this._windowRef.changeDetectorRef.detectChanges();\r\n // We need to mark for check, because tooltip won't work inside the OnPush component.\r\n // Ex. when we use expression like `{{ tooltip.isOpen() : 'opened' : 'closed' }}`\r\n // inside the template of an OnPush component and we change the tooltip from\r\n // open -> closed, the expression in question won't be updated unless we explicitly\r\n // mark the parent component to be checked.\r\n this._windowRef.changeDetectorRef.markForCheck();\r\n ngbAutoClose(this._ngZone, this._document, this.autoClose, () => this.close(), this.hidden, [this._windowRef.location.nativeElement]);\r\n transition$.subscribe(() => this.shown.emit());\r\n }\r\n }\r\n /**\r\n * Closes the tooltip.\r\n *\r\n * This is considered to be a \"manual\" triggering of the tooltip.\r\n */\r\n close() {\r\n if (this._windowRef != null) {\r\n this._renderer.removeAttribute(this._elementRef.nativeElement, 'aria-describedby');\r\n this._popupService.close(this.animation).subscribe(() => {\r\n this._windowRef = null;\r\n this.hidden.emit();\r\n this._changeDetector.markForCheck();\r\n });\r\n }\r\n }\r\n /**\r\n * Toggles the tooltip.\r\n *\r\n * This is considered to be a \"manual\" triggering of the tooltip.\r\n */\r\n toggle() {\r\n if (this._windowRef) {\r\n this.close();\r\n }\r\n else {\r\n this.open();\r\n }\r\n }\r\n /**\r\n * Returns `true`, if the popover is currently shown.\r\n */\r\n isOpen() { return this._windowRef != null; }\r\n ngOnInit() {\r\n this._unregisterListenersFn = listenToTriggers(this._renderer, this._elementRef.nativeElement, this.triggers, this.isOpen.bind(this), this.open.bind(this), this.close.bind(this), +this.openDelay, +this.closeDelay);\r\n }\r\n ngOnChanges({ tooltipClass }) {\r\n if (tooltipClass && this.isOpen()) {\r\n this._windowRef.instance.tooltipClass = tooltipClass.currentValue;\r\n }\r\n }\r\n ngOnDestroy() {\r\n this.close();\r\n // This check is needed as it might happen that ngOnDestroy is called before ngOnInit\r\n // under certain conditions, see: https://github.com/ng-bootstrap/ng-bootstrap/issues/2199\r\n if (this._unregisterListenersFn) {\r\n this._unregisterListenersFn();\r\n }\r\n this._zoneSubscription.unsubscribe();\r\n }\r\n}\nNgbTooltip.ɵfac = function NgbTooltip_Factory(t) { return new (t || NgbTooltip)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Injector), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(NgbTooltipConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(DOCUMENT), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ApplicationRef)); };\nNgbTooltip.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbTooltip, selectors: [[\"\", \"ngbTooltip\", \"\"]], inputs: { animation: \"animation\", autoClose: \"autoClose\", placement: \"placement\", triggers: \"triggers\", container: \"container\", disableTooltip: \"disableTooltip\", tooltipClass: \"tooltipClass\", openDelay: \"openDelay\", closeDelay: \"closeDelay\", ngbTooltip: \"ngbTooltip\" }, outputs: { shown: \"shown\", hidden: \"hidden\" }, exportAs: [\"ngbTooltip\"], features: [ɵngcc0.ɵɵNgOnChangesFeature] });\r\nNgbTooltip.ctorParameters = () => [\r\n { type: ElementRef },\r\n { type: Renderer2 },\r\n { type: Injector },\r\n { type: ComponentFactoryResolver },\r\n { type: ViewContainerRef },\r\n { type: NgbTooltipConfig },\r\n { type: NgZone },\r\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\r\n { type: ChangeDetectorRef },\r\n { type: ApplicationRef }\r\n];\r\nNgbTooltip.propDecorators = {\r\n animation: [{ type: Input }],\r\n autoClose: [{ type: Input }],\r\n placement: [{ type: Input }],\r\n triggers: [{ type: Input }],\r\n container: [{ type: Input }],\r\n disableTooltip: [{ type: Input }],\r\n tooltipClass: [{ type: Input }],\r\n openDelay: [{ type: Input }],\r\n closeDelay: [{ type: Input }],\r\n shown: [{ type: Output }],\r\n hidden: [{ type: Output }],\r\n ngbTooltip: [{ type: Input }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTooltip, [{\n type: Directive,\n args: [{ selector: '[ngbTooltip]', exportAs: 'ngbTooltip' }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.Injector }, { type: ɵngcc0.ComponentFactoryResolver }, { type: ɵngcc0.ViewContainerRef }, { type: NgbTooltipConfig }, { type: ɵngcc0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.ApplicationRef }]; }, { shown: [{\n type: Output\n }], hidden: [{\n type: Output\n }], animation: [{\n type: Input\n }], autoClose: [{\n type: Input\n }], placement: [{\n type: Input\n }], triggers: [{\n type: Input\n }], container: [{\n type: Input\n }], disableTooltip: [{\n type: Input\n }], tooltipClass: [{\n type: Input\n }], openDelay: [{\n type: Input\n }], closeDelay: [{\n type: Input\n }], ngbTooltip: [{\n type: Input\n }] }); })();\n\nclass NgbTooltipModule {\r\n}\nNgbTooltipModule.ɵfac = function NgbTooltipModule_Factory(t) { return new (t || NgbTooltipModule)(); };\nNgbTooltipModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbTooltipModule });\nNgbTooltipModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTooltipModule, [{\n type: NgModule,\n args: [{ declarations: [NgbTooltip, NgbTooltipWindow], exports: [NgbTooltip], entryComponents: [NgbTooltipWindow] }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbTooltipModule, { declarations: [NgbTooltip, NgbTooltipWindow], exports: [NgbTooltip] }); })();\n\n/**\r\n * A component that helps with text highlighting.\r\n *\r\n * If splits the `result` text into parts that contain the searched `term` and generates the HTML markup to simplify\r\n * highlighting:\r\n *\r\n * Ex. `result=\"Alaska\"` and `term=\"as\"` will produce `Alaska`.\r\n */\r\nclass NgbHighlight {\r\n constructor() {\r\n /**\r\n * The CSS class for `` elements wrapping the `term` inside the `result`.\r\n */\r\n this.highlightClass = 'ngb-highlight';\r\n /**\r\n * Boolean option to determine if the highlighting should be sensitive to accents or not.\r\n *\r\n * This feature is only available for browsers that implement the `String.normalize` function\r\n * (typically not Internet Explorer).\r\n * If you want to use this feature in a browser that does not implement `String.normalize`,\r\n * you will have to include a polyfill in your application (`unorm` for example).\r\n *\r\n * @since 9.1.0\r\n */\r\n this.accentSensitive = true;\r\n }\r\n ngOnChanges(changes) {\r\n if (!this.accentSensitive && !String.prototype.normalize) {\r\n console.warn('The `accentSensitive` input in `ngb-highlight` cannot be set to `false` in a browser ' +\r\n 'that does not implement the `String.normalize` function. ' +\r\n 'You will have to include a polyfill in your application to use this feature in the current browser.');\r\n this.accentSensitive = true;\r\n }\r\n const result = toString(this.result);\r\n const terms = Array.isArray(this.term) ? this.term : [this.term];\r\n const prepareTerm = term => this.accentSensitive ? term : removeAccents(term);\r\n const escapedTerms = terms.map(term => regExpEscape(prepareTerm(toString(term)))).filter(term => term);\r\n const toSplit = this.accentSensitive ? result : removeAccents(result);\r\n const parts = escapedTerms.length ? toSplit.split(new RegExp(`(${escapedTerms.join('|')})`, 'gmi')) : [result];\r\n if (this.accentSensitive) {\r\n this.parts = parts;\r\n }\r\n else {\r\n let offset = 0;\r\n this.parts = parts.map(part => result.substring(offset, offset += part.length));\r\n }\r\n }\r\n}\nNgbHighlight.ɵfac = function NgbHighlight_Factory(t) { return new (t || NgbHighlight)(); };\nNgbHighlight.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbHighlight, selectors: [[\"ngb-highlight\"]], inputs: { highlightClass: \"highlightClass\", accentSensitive: \"accentSensitive\", result: \"result\", term: \"term\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 1, vars: 1, consts: [[\"ngFor\", \"\", 3, \"ngForOf\"], [3, \"class\", 4, \"ngIf\", \"ngIfElse\"], [\"even\", \"\"]], template: function NgbHighlight_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbHighlight_ng_template_0_Template, 3, 2, \"ng-template\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.parts);\n } }, directives: [ɵngcc1.NgForOf, ɵngcc1.NgIf], styles: [\".ngb-highlight{font-weight:700}\"], encapsulation: 2, changeDetection: 0 });\r\nNgbHighlight.propDecorators = {\r\n highlightClass: [{ type: Input }],\r\n result: [{ type: Input }],\r\n term: [{ type: Input }],\r\n accentSensitive: [{ type: Input }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbHighlight, [{\n type: Component,\n args: [{\n selector: 'ngb-highlight',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `` +\n `{{part}}{{part}}` +\n ``,\n styles: [\".ngb-highlight{font-weight:700}\"]\n }]\n }], function () { return []; }, { highlightClass: [{\n type: Input\n }], accentSensitive: [{\n type: Input\n }], result: [{\n type: Input\n }], term: [{\n type: Input\n }] }); })();\n\nclass NgbTypeaheadWindow {\r\n constructor() {\r\n this.activeIdx = 0;\r\n /**\r\n * Flag indicating if the first row should be active initially\r\n */\r\n this.focusFirst = true;\r\n /**\r\n * A function used to format a given result before display. This function should return a formatted string without any\r\n * HTML markup\r\n */\r\n this.formatter = toString;\r\n /**\r\n * Event raised when user selects a particular result row\r\n */\r\n this.selectEvent = new EventEmitter();\r\n this.activeChangeEvent = new EventEmitter();\r\n }\r\n hasActive() { return this.activeIdx > -1 && this.activeIdx < this.results.length; }\r\n getActive() { return this.results[this.activeIdx]; }\r\n markActive(activeIdx) {\r\n this.activeIdx = activeIdx;\r\n this._activeChanged();\r\n }\r\n next() {\r\n if (this.activeIdx === this.results.length - 1) {\r\n this.activeIdx = this.focusFirst ? (this.activeIdx + 1) % this.results.length : -1;\r\n }\r\n else {\r\n this.activeIdx++;\r\n }\r\n this._activeChanged();\r\n }\r\n prev() {\r\n if (this.activeIdx < 0) {\r\n this.activeIdx = this.results.length - 1;\r\n }\r\n else if (this.activeIdx === 0) {\r\n this.activeIdx = this.focusFirst ? this.results.length - 1 : -1;\r\n }\r\n else {\r\n this.activeIdx--;\r\n }\r\n this._activeChanged();\r\n }\r\n resetActive() {\r\n this.activeIdx = this.focusFirst ? 0 : -1;\r\n this._activeChanged();\r\n }\r\n select(item) { this.selectEvent.emit(item); }\r\n ngOnInit() { this.resetActive(); }\r\n _activeChanged() {\r\n this.activeChangeEvent.emit(this.activeIdx >= 0 ? this.id + '-' + this.activeIdx : undefined);\r\n }\r\n}\nNgbTypeaheadWindow.ɵfac = function NgbTypeaheadWindow_Factory(t) { return new (t || NgbTypeaheadWindow)(); };\nNgbTypeaheadWindow.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbTypeaheadWindow, selectors: [[\"ngb-typeahead-window\"]], hostAttrs: [\"role\", \"listbox\"], hostVars: 3, hostBindings: function NgbTypeaheadWindow_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"mousedown\", function NgbTypeaheadWindow_mousedown_HostBindingHandler($event) { return $event.preventDefault(); });\n } if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"id\", ctx.id);\n ɵngcc0.ɵɵclassMap(\"dropdown-menu show\" + (ctx.popupClass ? \" \" + ctx.popupClass : \"\"));\n } }, inputs: { focusFirst: \"focusFirst\", formatter: \"formatter\", id: \"id\", results: \"results\", term: \"term\", resultTemplate: \"resultTemplate\", popupClass: \"popupClass\" }, outputs: { selectEvent: \"select\", activeChangeEvent: \"activeChange\" }, exportAs: [\"ngbTypeaheadWindow\"], decls: 3, vars: 1, consts: [[\"rt\", \"\"], [\"ngFor\", \"\", 3, \"ngForOf\"], [3, \"result\", \"term\"], [\"type\", \"button\", \"role\", \"option\", 1, \"dropdown-item\", 3, \"id\", \"mouseenter\", \"click\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]], template: function NgbTypeaheadWindow_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbTypeaheadWindow_ng_template_0_Template, 1, 2, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, NgbTypeaheadWindow_ng_template_2_Template, 2, 9, \"ng-template\", 1);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.results);\n } }, directives: [ɵngcc1.NgForOf, NgbHighlight, ɵngcc1.NgTemplateOutlet], encapsulation: 2 });\r\nNgbTypeaheadWindow.propDecorators = {\r\n id: [{ type: Input }],\r\n focusFirst: [{ type: Input }],\r\n results: [{ type: Input }],\r\n term: [{ type: Input }],\r\n formatter: [{ type: Input }],\r\n resultTemplate: [{ type: Input }],\r\n popupClass: [{ type: Input }],\r\n selectEvent: [{ type: Output, args: ['select',] }],\r\n activeChangeEvent: [{ type: Output, args: ['activeChange',] }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTypeaheadWindow, [{\n type: Component,\n args: [{\n selector: 'ngb-typeahead-window',\n exportAs: 'ngbTypeaheadWindow',\n encapsulation: ViewEncapsulation.None,\n host: {\n '(mousedown)': '$event.preventDefault()',\n '[class]': '\"dropdown-menu show\" + (popupClass ? \" \" + popupClass : \"\")',\n 'role': 'listbox',\n '[id]': 'id'\n },\n template: `\r\n \r\n \r\n \r\n \r\n \r\n \r\n `\n }]\n }], function () { return []; }, { focusFirst: [{\n type: Input\n }], formatter: [{\n type: Input\n }], selectEvent: [{\n type: Output,\n args: ['select']\n }], activeChangeEvent: [{\n type: Output,\n args: ['activeChange']\n }], id: [{\n type: Input\n }], results: [{\n type: Input\n }], term: [{\n type: Input\n }], resultTemplate: [{\n type: Input\n }], popupClass: [{\n type: Input\n }] }); })();\n\nconst ARIA_LIVE_DELAY = new InjectionToken('live announcer delay', { providedIn: 'root', factory: ARIA_LIVE_DELAY_FACTORY });\r\nfunction ARIA_LIVE_DELAY_FACTORY() {\r\n return 100;\r\n}\r\nfunction getLiveElement(document, lazyCreate = false) {\r\n let element = document.body.querySelector('#ngb-live');\r\n if (element == null && lazyCreate) {\r\n element = document.createElement('div');\r\n element.setAttribute('id', 'ngb-live');\r\n element.setAttribute('aria-live', 'polite');\r\n element.setAttribute('aria-atomic', 'true');\r\n element.classList.add('sr-only');\r\n document.body.appendChild(element);\r\n }\r\n return element;\r\n}\r\nclass Live {\r\n constructor(_document, _delay) {\r\n this._document = _document;\r\n this._delay = _delay;\r\n }\r\n ngOnDestroy() {\r\n const element = getLiveElement(this._document);\r\n if (element) {\r\n // if exists, it will always be attached to the \r\n element.parentElement.removeChild(element);\r\n }\r\n }\r\n say(message) {\r\n const element = getLiveElement(this._document, true);\r\n const delay = this._delay;\r\n if (element != null) {\r\n element.textContent = '';\r\n const setText = () => element.textContent = message;\r\n if (delay === null) {\r\n setText();\r\n }\r\n else {\r\n setTimeout(setText, delay);\r\n }\r\n }\r\n }\r\n}\nLive.ɵfac = function Live_Factory(t) { return new (t || Live)(ɵngcc0.ɵɵinject(DOCUMENT), ɵngcc0.ɵɵinject(ARIA_LIVE_DELAY)); };\r\nLive.ɵprov = ɵɵdefineInjectable({ factory: function Live_Factory() { return new Live(ɵɵinject(DOCUMENT), ɵɵinject(ARIA_LIVE_DELAY)); }, token: Live, providedIn: \"root\" });\r\nLive.ctorParameters = () => [\r\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\r\n { type: undefined, decorators: [{ type: Inject, args: [ARIA_LIVE_DELAY,] }] }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(Live, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [ARIA_LIVE_DELAY]\n }] }]; }, null); })();\n\n/**\r\n * A configuration service for the [`NgbTypeahead`](#/components/typeahead/api#NgbTypeahead) component.\r\n *\r\n * You can inject this service, typically in your root component, and customize the values of its properties in\r\n * order to provide default values for all the typeaheads used in the application.\r\n */\r\nclass NgbTypeaheadConfig {\r\n constructor() {\r\n this.editable = true;\r\n this.focusFirst = true;\r\n this.showHint = false;\r\n this.placement = ['bottom-left', 'bottom-right', 'top-left', 'top-right'];\r\n }\r\n}\nNgbTypeaheadConfig.ɵfac = function NgbTypeaheadConfig_Factory(t) { return new (t || NgbTypeaheadConfig)(); };\r\nNgbTypeaheadConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgbTypeaheadConfig_Factory() { return new NgbTypeaheadConfig(); }, token: NgbTypeaheadConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTypeaheadConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n\nlet nextWindowId = 0;\r\n/**\r\n * A directive providing a simple way of creating powerful typeaheads from any text input.\r\n */\r\nclass NgbTypeahead {\r\n constructor(_elementRef, viewContainerRef, _renderer, injector, componentFactoryResolver, config, ngZone, _live, _document, _ngZone, _changeDetector, applicationRef) {\r\n this._elementRef = _elementRef;\r\n this._renderer = _renderer;\r\n this._live = _live;\r\n this._document = _document;\r\n this._ngZone = _ngZone;\r\n this._changeDetector = _changeDetector;\r\n this._subscription = null;\r\n this._closed$ = new Subject();\r\n this._inputValueBackup = null;\r\n this._windowRef = null;\r\n /**\r\n * The value for the `autocomplete` attribute for the `` element.\r\n *\r\n * Defaults to `\"off\"` to disable the native browser autocomplete, but you can override it if necessary.\r\n *\r\n * @since 2.1.0\r\n */\r\n this.autocomplete = 'off';\r\n /**\r\n * The preferred placement of the typeahead.\r\n *\r\n * Possible values are `\"top\"`, `\"top-left\"`, `\"top-right\"`, `\"bottom\"`, `\"bottom-left\"`,\r\n * `\"bottom-right\"`, `\"left\"`, `\"left-top\"`, `\"left-bottom\"`, `\"right\"`, `\"right-top\"`,\r\n * `\"right-bottom\"`\r\n *\r\n * Accepts an array of strings or a string with space separated possible values.\r\n *\r\n * The default order of preference is `\"bottom-left bottom-right top-left top-right\"`\r\n *\r\n * Please see the [positioning overview](#/positioning) for more details.\r\n */\r\n this.placement = 'bottom-left';\r\n /**\r\n * An event emitted right before an item is selected from the result list.\r\n *\r\n * Event payload is of type [`NgbTypeaheadSelectItemEvent`](#/components/typeahead/api#NgbTypeaheadSelectItemEvent).\r\n */\r\n this.selectItem = new EventEmitter();\r\n this.activeDescendant = null;\r\n this.popupId = `ngb-typeahead-${nextWindowId++}`;\r\n this._onTouched = () => { };\r\n this._onChange = (_) => { };\r\n this.container = config.container;\r\n this.editable = config.editable;\r\n this.focusFirst = config.focusFirst;\r\n this.showHint = config.showHint;\r\n this.placement = config.placement;\r\n this._valueChanges = fromEvent(_elementRef.nativeElement, 'input')\r\n .pipe(map($event => $event.target.value));\r\n this._resubscribeTypeahead = new BehaviorSubject(null);\r\n this._popupService = new PopupService(NgbTypeaheadWindow, injector, viewContainerRef, _renderer, this._ngZone, componentFactoryResolver, applicationRef);\r\n this._zoneSubscription = ngZone.onStable.subscribe(() => {\r\n if (this.isPopupOpen()) {\r\n positionElements(this._elementRef.nativeElement, this._windowRef.location.nativeElement, this.placement, this.container === 'body');\r\n }\r\n });\r\n }\r\n ngOnInit() { this._subscribeToUserInput(); }\r\n ngOnChanges({ ngbTypeahead }) {\r\n if (ngbTypeahead && !ngbTypeahead.firstChange) {\r\n this._unsubscribeFromUserInput();\r\n this._subscribeToUserInput();\r\n }\r\n }\r\n ngOnDestroy() {\r\n this._closePopup();\r\n this._unsubscribeFromUserInput();\r\n this._zoneSubscription.unsubscribe();\r\n }\r\n registerOnChange(fn) { this._onChange = fn; }\r\n registerOnTouched(fn) { this._onTouched = fn; }\r\n writeValue(value) {\r\n this._writeInputValue(this._formatItemForInput(value));\r\n if (this.showHint) {\r\n this._inputValueBackup = value;\r\n }\r\n }\r\n setDisabledState(isDisabled) {\r\n this._renderer.setProperty(this._elementRef.nativeElement, 'disabled', isDisabled);\r\n }\r\n /**\r\n * Dismisses typeahead popup window\r\n */\r\n dismissPopup() {\r\n if (this.isPopupOpen()) {\r\n this._resubscribeTypeahead.next(null);\r\n this._closePopup();\r\n if (this.showHint && this._inputValueBackup !== null) {\r\n this._writeInputValue(this._inputValueBackup);\r\n }\r\n this._changeDetector.markForCheck();\r\n }\r\n }\r\n /**\r\n * Returns true if the typeahead popup window is displayed\r\n */\r\n isPopupOpen() { return this._windowRef != null; }\r\n handleBlur() {\r\n this._resubscribeTypeahead.next(null);\r\n this._onTouched();\r\n }\r\n handleKeyDown(event) {\r\n if (!this.isPopupOpen()) {\r\n return;\r\n }\r\n // tslint:disable-next-line:deprecation\r\n switch (event.which) {\r\n case Key.ArrowDown:\r\n event.preventDefault();\r\n this._windowRef.instance.next();\r\n this._showHint();\r\n break;\r\n case Key.ArrowUp:\r\n event.preventDefault();\r\n this._windowRef.instance.prev();\r\n this._showHint();\r\n break;\r\n case Key.Enter:\r\n case Key.Tab:\r\n const result = this._windowRef.instance.getActive();\r\n if (isDefined(result)) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this._selectResult(result);\r\n }\r\n this._closePopup();\r\n break;\r\n }\r\n }\r\n _openPopup() {\r\n if (!this.isPopupOpen()) {\r\n this._inputValueBackup = this._elementRef.nativeElement.value;\r\n const { windowRef } = this._popupService.open();\r\n this._windowRef = windowRef;\r\n this._windowRef.instance.id = this.popupId;\r\n this._windowRef.instance.selectEvent.subscribe((result) => this._selectResultClosePopup(result));\r\n this._windowRef.instance.activeChangeEvent.subscribe((activeId) => this.activeDescendant = activeId);\r\n this._windowRef.instance.popupClass = this.popupClass;\r\n if (this.container === 'body') {\r\n this._document.querySelector(this.container).appendChild(this._windowRef.location.nativeElement);\r\n }\r\n this._changeDetector.markForCheck();\r\n ngbAutoClose(this._ngZone, this._document, 'outside', () => this.dismissPopup(), this._closed$, [this._elementRef.nativeElement, this._windowRef.location.nativeElement]);\r\n }\r\n }\r\n _closePopup() {\r\n this._popupService.close().subscribe(() => {\r\n this._closed$.next();\r\n this._windowRef = null;\r\n this.activeDescendant = null;\r\n });\r\n }\r\n _selectResult(result) {\r\n let defaultPrevented = false;\r\n this.selectItem.emit({ item: result, preventDefault: () => { defaultPrevented = true; } });\r\n this._resubscribeTypeahead.next(null);\r\n if (!defaultPrevented) {\r\n this.writeValue(result);\r\n this._onChange(result);\r\n }\r\n }\r\n _selectResultClosePopup(result) {\r\n this._selectResult(result);\r\n this._closePopup();\r\n }\r\n _showHint() {\r\n var _a;\r\n if (this.showHint && ((_a = this._windowRef) === null || _a === void 0 ? void 0 : _a.instance.hasActive()) && this._inputValueBackup != null) {\r\n const userInputLowerCase = this._inputValueBackup.toLowerCase();\r\n const formattedVal = this._formatItemForInput(this._windowRef.instance.getActive());\r\n if (userInputLowerCase === formattedVal.substr(0, this._inputValueBackup.length).toLowerCase()) {\r\n this._writeInputValue(this._inputValueBackup + formattedVal.substr(this._inputValueBackup.length));\r\n this._elementRef.nativeElement['setSelectionRange'].apply(this._elementRef.nativeElement, [this._inputValueBackup.length, formattedVal.length]);\r\n }\r\n else {\r\n this._writeInputValue(formattedVal);\r\n }\r\n }\r\n }\r\n _formatItemForInput(item) {\r\n return item != null && this.inputFormatter ? this.inputFormatter(item) : toString(item);\r\n }\r\n _writeInputValue(value) {\r\n this._renderer.setProperty(this._elementRef.nativeElement, 'value', toString(value));\r\n }\r\n _subscribeToUserInput() {\r\n const results$ = this._valueChanges.pipe(tap(value => {\r\n this._inputValueBackup = this.showHint ? value : null;\r\n this._onChange(this.editable ? value : undefined);\r\n }), this.ngbTypeahead ? this.ngbTypeahead : () => of([]));\r\n this._subscription = this._resubscribeTypeahead.pipe(switchMap(() => results$)).subscribe(results => {\r\n if (!results || results.length === 0) {\r\n this._closePopup();\r\n }\r\n else {\r\n this._openPopup();\r\n this._windowRef.instance.focusFirst = this.focusFirst;\r\n this._windowRef.instance.results = results;\r\n this._windowRef.instance.term = this._elementRef.nativeElement.value;\r\n if (this.resultFormatter) {\r\n this._windowRef.instance.formatter = this.resultFormatter;\r\n }\r\n if (this.resultTemplate) {\r\n this._windowRef.instance.resultTemplate = this.resultTemplate;\r\n }\r\n this._windowRef.instance.resetActive();\r\n // The observable stream we are subscribing to might have async steps\r\n // and if a component containing typeahead is using the OnPush strategy\r\n // the change detection turn wouldn't be invoked automatically.\r\n this._windowRef.changeDetectorRef.detectChanges();\r\n this._showHint();\r\n }\r\n // live announcer\r\n const count = results ? results.length : 0;\r\n this._live.say(count === 0 ? 'No results available' : `${count} result${count === 1 ? '' : 's'} available`);\r\n });\r\n }\r\n _unsubscribeFromUserInput() {\r\n if (this._subscription) {\r\n this._subscription.unsubscribe();\r\n }\r\n this._subscription = null;\r\n }\r\n}\nNgbTypeahead.ɵfac = function NgbTypeahead_Factory(t) { return new (t || NgbTypeahead)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Injector), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵdirectiveInject(NgbTypeaheadConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(Live), ɵngcc0.ɵɵdirectiveInject(DOCUMENT), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ApplicationRef)); };\nNgbTypeahead.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbTypeahead, selectors: [[\"input\", \"ngbTypeahead\", \"\"]], hostAttrs: [\"autocapitalize\", \"off\", \"autocorrect\", \"off\", \"role\", \"combobox\", \"aria-multiline\", \"false\"], hostVars: 7, hostBindings: function NgbTypeahead_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"blur\", function NgbTypeahead_blur_HostBindingHandler() { return ctx.handleBlur(); })(\"keydown\", function NgbTypeahead_keydown_HostBindingHandler($event) { return ctx.handleKeyDown($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"autocomplete\", ctx.autocomplete);\n ɵngcc0.ɵɵattribute(\"aria-autocomplete\", ctx.showHint ? \"both\" : \"list\")(\"aria-activedescendant\", ctx.activeDescendant)(\"aria-owns\", ctx.isPopupOpen() ? ctx.popupId : null)(\"aria-expanded\", ctx.isPopupOpen());\n ɵngcc0.ɵɵclassProp(\"open\", ctx.isPopupOpen());\n } }, inputs: { autocomplete: \"autocomplete\", placement: \"placement\", container: \"container\", editable: \"editable\", focusFirst: \"focusFirst\", showHint: \"showHint\", inputFormatter: \"inputFormatter\", ngbTypeahead: \"ngbTypeahead\", resultFormatter: \"resultFormatter\", resultTemplate: \"resultTemplate\", popupClass: \"popupClass\" }, outputs: { selectItem: \"selectItem\" }, exportAs: [\"ngbTypeahead\"], features: [ɵngcc0.ɵɵProvidersFeature([{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbTypeahead), multi: true }]), ɵngcc0.ɵɵNgOnChangesFeature] });\r\nNgbTypeahead.ctorParameters = () => [\r\n { type: ElementRef },\r\n { type: ViewContainerRef },\r\n { type: Renderer2 },\r\n { type: Injector },\r\n { type: ComponentFactoryResolver },\r\n { type: NgbTypeaheadConfig },\r\n { type: NgZone },\r\n { type: Live },\r\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\r\n { type: NgZone },\r\n { type: ChangeDetectorRef },\r\n { type: ApplicationRef }\r\n];\r\nNgbTypeahead.propDecorators = {\r\n autocomplete: [{ type: Input }],\r\n container: [{ type: Input }],\r\n editable: [{ type: Input }],\r\n focusFirst: [{ type: Input }],\r\n inputFormatter: [{ type: Input }],\r\n ngbTypeahead: [{ type: Input }],\r\n resultFormatter: [{ type: Input }],\r\n resultTemplate: [{ type: Input }],\r\n showHint: [{ type: Input }],\r\n placement: [{ type: Input }],\r\n popupClass: [{ type: Input }],\r\n selectItem: [{ type: Output }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTypeahead, [{\n type: Directive,\n args: [{\n selector: 'input[ngbTypeahead]',\n exportAs: 'ngbTypeahead',\n host: {\n '(blur)': 'handleBlur()',\n '[class.open]': 'isPopupOpen()',\n '(keydown)': 'handleKeyDown($event)',\n '[autocomplete]': 'autocomplete',\n 'autocapitalize': 'off',\n 'autocorrect': 'off',\n 'role': 'combobox',\n 'aria-multiline': 'false',\n '[attr.aria-autocomplete]': 'showHint ? \"both\" : \"list\"',\n '[attr.aria-activedescendant]': 'activeDescendant',\n '[attr.aria-owns]': 'isPopupOpen() ? popupId : null',\n '[attr.aria-expanded]': 'isPopupOpen()'\n },\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbTypeahead), multi: true }]\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.ViewContainerRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.Injector }, { type: ɵngcc0.ComponentFactoryResolver }, { type: NgbTypeaheadConfig }, { type: ɵngcc0.NgZone }, { type: Live }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.ApplicationRef }]; }, { autocomplete: [{\n type: Input\n }], placement: [{\n type: Input\n }], selectItem: [{\n type: Output\n }], container: [{\n type: Input\n }], editable: [{\n type: Input\n }], focusFirst: [{\n type: Input\n }], showHint: [{\n type: Input\n }], inputFormatter: [{\n type: Input\n }], ngbTypeahead: [{\n type: Input\n }], resultFormatter: [{\n type: Input\n }], resultTemplate: [{\n type: Input\n }], popupClass: [{\n type: Input\n }] }); })();\n\nclass NgbTypeaheadModule {\r\n}\nNgbTypeaheadModule.ɵfac = function NgbTypeaheadModule_Factory(t) { return new (t || NgbTypeaheadModule)(); };\nNgbTypeaheadModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbTypeaheadModule });\nNgbTypeaheadModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTypeaheadModule, [{\n type: NgModule,\n args: [{\n declarations: [NgbTypeahead, NgbHighlight, NgbTypeaheadWindow],\n exports: [NgbTypeahead, NgbHighlight],\n imports: [CommonModule],\n entryComponents: [NgbTypeaheadWindow]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbTypeaheadModule, { declarations: function () { return [NgbTypeahead, NgbHighlight, NgbTypeaheadWindow]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbTypeahead, NgbHighlight]; } }); })();\n\nconst NGB_MODULES = [\r\n NgbAccordionModule, NgbAlertModule, NgbButtonsModule, NgbCarouselModule, NgbCollapseModule, NgbDatepickerModule,\r\n NgbDropdownModule, NgbModalModule, NgbNavModule, NgbPaginationModule, NgbPopoverModule, NgbProgressbarModule,\r\n NgbRatingModule, NgbTimepickerModule, NgbToastModule, NgbTooltipModule, NgbTypeaheadModule\r\n];\r\nclass NgbModule {\r\n}\nNgbModule.ɵfac = function NgbModule_Factory(t) { return new (t || NgbModule)(); };\nNgbModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbModule });\nNgbModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [NGB_MODULES, NgbAccordionModule, NgbAlertModule, NgbButtonsModule, NgbCarouselModule, NgbCollapseModule, NgbDatepickerModule, NgbDropdownModule, NgbModalModule, NgbNavModule, NgbPaginationModule, NgbPopoverModule, NgbProgressbarModule, NgbRatingModule, NgbTimepickerModule, NgbToastModule, NgbTooltipModule, NgbTypeaheadModule] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbModule, [{\n type: NgModule,\n args: [{ imports: NGB_MODULES, exports: NGB_MODULES }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbModule, { imports: [NgbAccordionModule, NgbAlertModule, NgbButtonsModule, NgbCarouselModule, NgbCollapseModule, NgbDatepickerModule, NgbDropdownModule, NgbModalModule, NgbNavModule, NgbPaginationModule, NgbPopoverModule, NgbProgressbarModule, NgbRatingModule, NgbTimepickerModule, NgbToastModule, NgbTooltipModule, NgbTypeaheadModule], exports: [NgbAccordionModule, NgbAlertModule, NgbButtonsModule, NgbCarouselModule, NgbCollapseModule, NgbDatepickerModule, NgbDropdownModule, NgbModalModule, NgbNavModule, NgbPaginationModule, NgbPopoverModule, NgbProgressbarModule, NgbRatingModule, NgbTimepickerModule, NgbToastModule, NgbTooltipModule, NgbTypeaheadModule] }); })();\n\n/**\r\n * Generated bundle index. Do not edit.\r\n */\n\nexport { ModalDismissReasons, NgbAccordion, NgbAccordionConfig, NgbAccordionModule, NgbActiveModal, NgbAlert, NgbAlertConfig, NgbAlertModule, NgbButtonLabel, NgbButtonsModule, NgbCalendar, NgbCalendarBuddhist, NgbCalendarGregorian, NgbCalendarHebrew, NgbCalendarIslamicCivil, NgbCalendarIslamicUmalqura, NgbCalendarPersian, NgbCarousel, NgbCarouselConfig, NgbCarouselModule, NgbCheckBox, NgbCollapse, NgbCollapseConfig, NgbCollapseModule, NgbConfig, NgbDate, NgbDateAdapter, NgbDateNativeAdapter, NgbDateNativeUTCAdapter, NgbDateParserFormatter, NgbDatepicker, NgbDatepickerConfig, NgbDatepickerContent, NgbDatepickerI18n, NgbDatepickerI18nDefault, NgbDatepickerI18nHebrew, NgbDatepickerKeyboardService, NgbDatepickerModule, NgbDatepickerMonth, NgbDropdown, NgbDropdownAnchor, NgbDropdownConfig, NgbDropdownItem, NgbDropdownMenu, NgbDropdownModule, NgbDropdownToggle, NgbHighlight, NgbInputDatepicker, NgbInputDatepickerConfig, NgbModal, NgbModalConfig, NgbModalModule, NgbModalRef, NgbModule, NgbNav, NgbNavConfig, NgbNavContent, NgbNavItem, NgbNavLink, NgbNavModule, NgbNavOutlet, NgbNavPane, NgbNavbar, NgbPagination, NgbPaginationConfig, NgbPaginationEllipsis, NgbPaginationFirst, NgbPaginationLast, NgbPaginationModule, NgbPaginationNext, NgbPaginationNumber, NgbPaginationPages, NgbPaginationPrevious, NgbPanel, NgbPanelContent, NgbPanelHeader, NgbPanelTitle, NgbPanelToggle, NgbPopover, NgbPopoverConfig, NgbPopoverModule, NgbProgressbar, NgbProgressbarConfig, NgbProgressbarModule, NgbRadio, NgbRadioGroup, NgbRating, NgbRatingConfig, NgbRatingModule, NgbSlide, NgbSlideEventDirection, NgbSlideEventSource, NgbTimeAdapter, NgbTimepicker, NgbTimepickerConfig, NgbTimepickerI18n, NgbTimepickerModule, NgbToast, NgbToastConfig, NgbToastHeader, NgbToastModule, NgbTooltip, NgbTooltipConfig, NgbTooltipModule, NgbTypeahead, NgbTypeaheadConfig, NgbTypeaheadModule, NGB_CAROUSEL_DIRECTIVES as ɵa, NGB_DATEPICKER_CALENDAR_FACTORY as ɵb, ContentRef as ɵba, NgbDatepickerDayView as ɵc, NgbDatepickerNavigation as ɵd, NgbDatepickerNavigationSelect as ɵe, NGB_DATEPICKER_18N_FACTORY as ɵf, NGB_DATEPICKER_DATE_ADAPTER_FACTORY as ɵg, NgbDateStructAdapter as ɵh, NGB_DATEPICKER_PARSER_FORMATTER_FACTORY as ɵi, NgbDateISOParserFormatter as ɵj, NgbPopoverWindow as ɵk, NGB_DATEPICKER_TIME_ADAPTER_FACTORY as ɵl, NgbTimeStructAdapter as ɵm, NGB_TIMEPICKER_I18N_FACTORY as ɵn, NgbTimepickerI18nDefault as ɵo, NgbTooltipWindow as ɵp, NgbTypeaheadWindow as ɵq, NgbDatepickerService as ɵr, NgbModalBackdrop as ɵs, NgbModalWindow as ɵt, NgbModalStack as ɵu, ScrollBar as ɵv, ARIA_LIVE_DELAY as ɵw, ARIA_LIVE_DELAY_FACTORY as ɵx, Live as ɵy, NgbCalendarHijri as ɵz };\n\n","import { concat } from '../observable/concat';\nimport { of } from '../observable/of';\nexport function endWith(...array) {\n return (source) => concat(source, of(...array));\n}\n","import { Observable } from '../Observable';\nexport function isObservable(obj) {\n return !!obj && (obj instanceof Observable || (typeof obj.lift === 'function' && typeof obj.subscribe === 'function'));\n}\n","import { AsyncAction } from './AsyncAction';\nexport class QueueAction extends AsyncAction {\n constructor(scheduler, work) {\n super(scheduler, work);\n this.scheduler = scheduler;\n this.work = work;\n }\n schedule(state, delay = 0) {\n if (delay > 0) {\n return super.schedule(state, delay);\n }\n this.delay = delay;\n this.state = state;\n this.scheduler.flush(this);\n return this;\n }\n execute(state, delay) {\n return (delay > 0 || this.closed) ?\n super.execute(state, delay) :\n this._execute(state, delay);\n }\n requestAsyncId(scheduler, id, delay = 0) {\n if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n return scheduler.flush(this);\n }\n}\n","import { QueueAction } from './QueueAction';\nimport { QueueScheduler } from './QueueScheduler';\nexport const queueScheduler = new QueueScheduler(QueueAction);\nexport const queue = queueScheduler;\n","import { AsyncScheduler } from './AsyncScheduler';\nexport class QueueScheduler extends AsyncScheduler {\n}\n","import { Subscriber } from '../Subscriber';\nimport { Notification } from '../Notification';\nexport function observeOn(scheduler, delay = 0) {\n return function observeOnOperatorFunction(source) {\n return source.lift(new ObserveOnOperator(scheduler, delay));\n };\n}\nexport class ObserveOnOperator {\n constructor(scheduler, delay = 0) {\n this.scheduler = scheduler;\n this.delay = delay;\n }\n call(subscriber, source) {\n return source.subscribe(new ObserveOnSubscriber(subscriber, this.scheduler, this.delay));\n }\n}\nexport class ObserveOnSubscriber extends Subscriber {\n constructor(destination, scheduler, delay = 0) {\n super(destination);\n this.scheduler = scheduler;\n this.delay = delay;\n }\n static dispatch(arg) {\n const { notification, destination } = arg;\n notification.observe(destination);\n this.unsubscribe();\n }\n scheduleMessage(notification) {\n const destination = this.destination;\n destination.add(this.scheduler.schedule(ObserveOnSubscriber.dispatch, this.delay, new ObserveOnMessage(notification, this.destination)));\n }\n _next(value) {\n this.scheduleMessage(Notification.createNext(value));\n }\n _error(err) {\n this.scheduleMessage(Notification.createError(err));\n this.unsubscribe();\n }\n _complete() {\n this.scheduleMessage(Notification.createComplete());\n this.unsubscribe();\n }\n}\nexport class ObserveOnMessage {\n constructor(notification, destination) {\n this.notification = notification;\n this.destination = destination;\n }\n}\n","import { Subject } from './Subject';\nimport { queue } from './scheduler/queue';\nimport { Subscription } from './Subscription';\nimport { ObserveOnSubscriber } from './operators/observeOn';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { SubjectSubscription } from './SubjectSubscription';\nexport class ReplaySubject extends Subject {\n constructor(bufferSize = Number.POSITIVE_INFINITY, windowTime = Number.POSITIVE_INFINITY, scheduler) {\n super();\n this.scheduler = scheduler;\n this._events = [];\n this._infiniteTimeWindow = false;\n this._bufferSize = bufferSize < 1 ? 1 : bufferSize;\n this._windowTime = windowTime < 1 ? 1 : windowTime;\n if (windowTime === Number.POSITIVE_INFINITY) {\n this._infiniteTimeWindow = true;\n this.next = this.nextInfiniteTimeWindow;\n }\n else {\n this.next = this.nextTimeWindow;\n }\n }\n nextInfiniteTimeWindow(value) {\n if (!this.isStopped) {\n const _events = this._events;\n _events.push(value);\n if (_events.length > this._bufferSize) {\n _events.shift();\n }\n }\n super.next(value);\n }\n nextTimeWindow(value) {\n if (!this.isStopped) {\n this._events.push(new ReplayEvent(this._getNow(), value));\n this._trimBufferThenGetEvents();\n }\n super.next(value);\n }\n _subscribe(subscriber) {\n const _infiniteTimeWindow = this._infiniteTimeWindow;\n const _events = _infiniteTimeWindow ? this._events : this._trimBufferThenGetEvents();\n const scheduler = this.scheduler;\n const len = _events.length;\n let subscription;\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else if (this.isStopped || this.hasError) {\n subscription = Subscription.EMPTY;\n }\n else {\n this.observers.push(subscriber);\n subscription = new SubjectSubscription(this, subscriber);\n }\n if (scheduler) {\n subscriber.add(subscriber = new ObserveOnSubscriber(subscriber, scheduler));\n }\n if (_infiniteTimeWindow) {\n for (let i = 0; i < len && !subscriber.closed; i++) {\n subscriber.next(_events[i]);\n }\n }\n else {\n for (let i = 0; i < len && !subscriber.closed; i++) {\n subscriber.next(_events[i].value);\n }\n }\n if (this.hasError) {\n subscriber.error(this.thrownError);\n }\n else if (this.isStopped) {\n subscriber.complete();\n }\n return subscription;\n }\n _getNow() {\n return (this.scheduler || queue).now();\n }\n _trimBufferThenGetEvents() {\n const now = this._getNow();\n const _bufferSize = this._bufferSize;\n const _windowTime = this._windowTime;\n const _events = this._events;\n const eventsCount = _events.length;\n let spliceCount = 0;\n while (spliceCount < eventsCount) {\n if ((now - _events[spliceCount].time) < _windowTime) {\n break;\n }\n spliceCount++;\n }\n if (eventsCount > _bufferSize) {\n spliceCount = Math.max(spliceCount, eventsCount - _bufferSize);\n }\n if (spliceCount > 0) {\n _events.splice(0, spliceCount);\n }\n return _events;\n }\n}\nclass ReplayEvent {\n constructor(time, value) {\n this.time = time;\n this.value = value;\n }\n}\n","import { ReplaySubject } from '../ReplaySubject';\nexport function shareReplay(configOrBufferSize, windowTime, scheduler) {\n let config;\n if (configOrBufferSize && typeof configOrBufferSize === 'object') {\n config = configOrBufferSize;\n }\n else {\n config = {\n bufferSize: configOrBufferSize,\n windowTime,\n refCount: false,\n scheduler,\n };\n }\n return (source) => source.lift(shareReplayOperator(config));\n}\nfunction shareReplayOperator({ bufferSize = Number.POSITIVE_INFINITY, windowTime = Number.POSITIVE_INFINITY, refCount: useRefCount, scheduler, }) {\n let subject;\n let refCount = 0;\n let subscription;\n let hasError = false;\n let isComplete = false;\n return function shareReplayOperation(source) {\n refCount++;\n let innerSub;\n if (!subject || hasError) {\n hasError = false;\n subject = new ReplaySubject(bufferSize, windowTime, scheduler);\n innerSub = subject.subscribe(this);\n subscription = source.subscribe({\n next(value) {\n subject.next(value);\n },\n error(err) {\n hasError = true;\n subject.error(err);\n },\n complete() {\n isComplete = true;\n subscription = undefined;\n subject.complete();\n },\n });\n if (isComplete) {\n subscription = undefined;\n }\n }\n else {\n innerSub = subject.subscribe(this);\n }\n this.add(() => {\n refCount--;\n innerSub.unsubscribe();\n innerSub = undefined;\n if (subscription && !isComplete && useRefCount && refCount === 0) {\n subscription.unsubscribe();\n subscription = undefined;\n subject = undefined;\n }\n });\n };\n}\n","import { Injectable, EventEmitter, InjectionToken, Inject, Directive, ElementRef, ChangeDetectorRef, Input, Pipe, NgModule } from '@angular/core';\nimport { of, isObservable, forkJoin, concat, defer } from 'rxjs';\nimport { take, shareReplay, map, concatMap, switchMap } from 'rxjs/operators';\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/translate.loader.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @abstract\n */\nimport * as ɵngcc0 from '@angular/core';\nclass TranslateLoader {\n}\nif (false) {\n /**\n * @abstract\n * @param {?} lang\n * @return {?}\n */\n TranslateLoader.prototype.getTranslation = function (lang) { };\n}\n/**\n * This loader is just a placeholder that does nothing, in case you don't need a loader at all\n */\nclass TranslateFakeLoader extends TranslateLoader {\n /**\n * @param {?} lang\n * @return {?}\n */\n getTranslation(lang) {\n return of({});\n }\n}\nTranslateFakeLoader.ɵfac = /*@__PURE__*/ function () { let ɵTranslateFakeLoader_BaseFactory; return function TranslateFakeLoader_Factory(t) { return (ɵTranslateFakeLoader_BaseFactory || (ɵTranslateFakeLoader_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(TranslateFakeLoader)))(t || TranslateFakeLoader); }; }();\nTranslateFakeLoader.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: TranslateFakeLoader, factory: TranslateFakeLoader.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TranslateFakeLoader, [{\n type: Injectable\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/missing-translation-handler.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @record\n */\nfunction MissingTranslationHandlerParams() { }\nif (false) {\n /**\n * the key that's missing in translation files\n * @type {?}\n */\n MissingTranslationHandlerParams.prototype.key;\n /**\n * an instance of the service that was unable to translate the key.\n * @type {?}\n */\n MissingTranslationHandlerParams.prototype.translateService;\n /**\n * interpolation params that were passed along for translating the given key.\n * @type {?|undefined}\n */\n MissingTranslationHandlerParams.prototype.interpolateParams;\n}\n/**\n * @abstract\n */\nclass MissingTranslationHandler {\n}\nif (false) {\n /**\n * A function that handles missing translations.\n *\n * @abstract\n * @param {?} params context for resolving a missing translation\n * @return {?} a value or an observable\n * If it returns a value, then this value is used.\n * If it return an observable, the value returned by this observable will be used (except if the method was \"instant\").\n * If it doesn't return then the key will be used as a value\n */\n MissingTranslationHandler.prototype.handle = function (params) { };\n}\n/**\n * This handler is just a placeholder that does nothing, in case you don't need a missing translation handler at all\n */\nclass FakeMissingTranslationHandler {\n /**\n * @param {?} params\n * @return {?}\n */\n handle(params) {\n return params.key;\n }\n}\nFakeMissingTranslationHandler.ɵfac = function FakeMissingTranslationHandler_Factory(t) { return new (t || FakeMissingTranslationHandler)(); };\nFakeMissingTranslationHandler.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: FakeMissingTranslationHandler, factory: FakeMissingTranslationHandler.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FakeMissingTranslationHandler, [{\n type: Injectable\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/util.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/* tslint:disable */\n/**\n * Determines if two objects or two values are equivalent.\n *\n * Two objects or values are considered equivalent if at least one of the following is true:\n *\n * * Both objects or values pass `===` comparison.\n * * Both objects or values are of the same type and all of their properties are equal by\n * comparing them with `equals`.\n *\n * @param {?} o1 Object or value to compare.\n * @param {?} o2 Object or value to compare.\n * @return {?} true if arguments are equal.\n */\nfunction equals(o1, o2) {\n if (o1 === o2)\n return true;\n if (o1 === null || o2 === null)\n return false;\n if (o1 !== o1 && o2 !== o2)\n return true; // NaN === NaN\n // NaN === NaN\n /** @type {?} */\n let t1 = typeof o1;\n /** @type {?} */\n let t2 = typeof o2;\n /** @type {?} */\n let length;\n /** @type {?} */\n let key;\n /** @type {?} */\n let keySet;\n if (t1 == t2 && t1 == 'object') {\n if (Array.isArray(o1)) {\n if (!Array.isArray(o2))\n return false;\n if ((length = o1.length) == o2.length) {\n for (key = 0; key < length; key++) {\n if (!equals(o1[key], o2[key]))\n return false;\n }\n return true;\n }\n }\n else {\n if (Array.isArray(o2)) {\n return false;\n }\n keySet = Object.create(null);\n for (key in o1) {\n if (!equals(o1[key], o2[key])) {\n return false;\n }\n keySet[key] = true;\n }\n for (key in o2) {\n if (!(key in keySet) && typeof o2[key] !== 'undefined') {\n return false;\n }\n }\n return true;\n }\n }\n return false;\n}\n/* tslint:enable */\n/**\n * @param {?} value\n * @return {?}\n */\nfunction isDefined(value) {\n return typeof value !== 'undefined' && value !== null;\n}\n/**\n * @param {?} item\n * @return {?}\n */\nfunction isObject(item) {\n return (item && typeof item === 'object' && !Array.isArray(item));\n}\n/**\n * @param {?} target\n * @param {?} source\n * @return {?}\n */\nfunction mergeDeep(target, source) {\n /** @type {?} */\n let output = Object.assign({}, target);\n if (isObject(target) && isObject(source)) {\n Object.keys(source).forEach((/**\n * @param {?} key\n * @return {?}\n */\n (key) => {\n if (isObject(source[key])) {\n if (!(key in target)) {\n Object.assign(output, { [key]: source[key] });\n }\n else {\n output[key] = mergeDeep(target[key], source[key]);\n }\n }\n else {\n Object.assign(output, { [key]: source[key] });\n }\n }));\n }\n return output;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/translate.parser.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @abstract\n */\nclass TranslateParser {\n}\nif (false) {\n /**\n * Interpolates a string to replace parameters\n * \"This is a {{ key }}\" ==> \"This is a value\", with params = { key: \"value\" }\n * @abstract\n * @param {?} expr\n * @param {?=} params\n * @return {?}\n */\n TranslateParser.prototype.interpolate = function (expr, params) { };\n /**\n * Gets a value from an object by composed key\n * parser.getValue({ key1: { keyA: 'valueI' }}, 'key1.keyA') ==> 'valueI'\n * @abstract\n * @param {?} target\n * @param {?} key\n * @return {?}\n */\n TranslateParser.prototype.getValue = function (target, key) { };\n}\nclass TranslateDefaultParser extends TranslateParser {\n constructor() {\n super(...arguments);\n this.templateMatcher = /{{\\s?([^{}\\s]*)\\s?}}/g;\n }\n /**\n * @param {?} expr\n * @param {?=} params\n * @return {?}\n */\n interpolate(expr, params) {\n /** @type {?} */\n let result;\n if (typeof expr === 'string') {\n result = this.interpolateString(expr, params);\n }\n else if (typeof expr === 'function') {\n result = this.interpolateFunction(expr, params);\n }\n else {\n // this should not happen, but an unrelated TranslateService test depends on it\n result = (/** @type {?} */ (expr));\n }\n return result;\n }\n /**\n * @param {?} target\n * @param {?} key\n * @return {?}\n */\n getValue(target, key) {\n /** @type {?} */\n let keys = typeof key === 'string' ? key.split('.') : [key];\n key = '';\n do {\n key += keys.shift();\n if (isDefined(target) && isDefined(target[key]) && (typeof target[key] === 'object' || !keys.length)) {\n target = target[key];\n key = '';\n }\n else if (!keys.length) {\n target = undefined;\n }\n else {\n key += '.';\n }\n } while (keys.length);\n return target;\n }\n /**\n * @private\n * @param {?} fn\n * @param {?=} params\n * @return {?}\n */\n interpolateFunction(fn, params) {\n return fn(params);\n }\n /**\n * @private\n * @param {?} expr\n * @param {?=} params\n * @return {?}\n */\n interpolateString(expr, params) {\n if (!params) {\n return expr;\n }\n return expr.replace(this.templateMatcher, (/**\n * @param {?} substring\n * @param {?} b\n * @return {?}\n */\n (substring, b) => {\n /** @type {?} */\n let r = this.getValue(params, b);\n return isDefined(r) ? r : substring;\n }));\n }\n}\nTranslateDefaultParser.ɵfac = /*@__PURE__*/ function () { let ɵTranslateDefaultParser_BaseFactory; return function TranslateDefaultParser_Factory(t) { return (ɵTranslateDefaultParser_BaseFactory || (ɵTranslateDefaultParser_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(TranslateDefaultParser)))(t || TranslateDefaultParser); }; }();\nTranslateDefaultParser.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: TranslateDefaultParser, factory: TranslateDefaultParser.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TranslateDefaultParser, [{\n type: Injectable\n }], null, null); })();\nif (false) {\n /** @type {?} */\n TranslateDefaultParser.prototype.templateMatcher;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/translate.compiler.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @abstract\n */\nclass TranslateCompiler {\n}\nif (false) {\n /**\n * @abstract\n * @param {?} value\n * @param {?} lang\n * @return {?}\n */\n TranslateCompiler.prototype.compile = function (value, lang) { };\n /**\n * @abstract\n * @param {?} translations\n * @param {?} lang\n * @return {?}\n */\n TranslateCompiler.prototype.compileTranslations = function (translations, lang) { };\n}\n/**\n * This compiler is just a placeholder that does nothing, in case you don't need a compiler at all\n */\nclass TranslateFakeCompiler extends TranslateCompiler {\n /**\n * @param {?} value\n * @param {?} lang\n * @return {?}\n */\n compile(value, lang) {\n return value;\n }\n /**\n * @param {?} translations\n * @param {?} lang\n * @return {?}\n */\n compileTranslations(translations, lang) {\n return translations;\n }\n}\nTranslateFakeCompiler.ɵfac = /*@__PURE__*/ function () { let ɵTranslateFakeCompiler_BaseFactory; return function TranslateFakeCompiler_Factory(t) { return (ɵTranslateFakeCompiler_BaseFactory || (ɵTranslateFakeCompiler_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(TranslateFakeCompiler)))(t || TranslateFakeCompiler); }; }();\nTranslateFakeCompiler.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: TranslateFakeCompiler, factory: TranslateFakeCompiler.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TranslateFakeCompiler, [{\n type: Injectable\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/translate.store.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass TranslateStore {\n constructor() {\n /**\n * The lang currently used\n */\n this.currentLang = this.defaultLang;\n /**\n * a list of translations per lang\n */\n this.translations = {};\n /**\n * an array of langs\n */\n this.langs = [];\n /**\n * An EventEmitter to listen to translation change events\n * onTranslationChange.subscribe((params: TranslationChangeEvent) => {\n * // do something\n * });\n */\n this.onTranslationChange = new EventEmitter();\n /**\n * An EventEmitter to listen to lang change events\n * onLangChange.subscribe((params: LangChangeEvent) => {\n * // do something\n * });\n */\n this.onLangChange = new EventEmitter();\n /**\n * An EventEmitter to listen to default lang change events\n * onDefaultLangChange.subscribe((params: DefaultLangChangeEvent) => {\n * // do something\n * });\n */\n this.onDefaultLangChange = new EventEmitter();\n }\n}\nif (false) {\n /**\n * The default lang to fallback when translations are missing on the current lang\n * @type {?}\n */\n TranslateStore.prototype.defaultLang;\n /**\n * The lang currently used\n * @type {?}\n */\n TranslateStore.prototype.currentLang;\n /**\n * a list of translations per lang\n * @type {?}\n */\n TranslateStore.prototype.translations;\n /**\n * an array of langs\n * @type {?}\n */\n TranslateStore.prototype.langs;\n /**\n * An EventEmitter to listen to translation change events\n * onTranslationChange.subscribe((params: TranslationChangeEvent) => {\n * // do something\n * });\n * @type {?}\n */\n TranslateStore.prototype.onTranslationChange;\n /**\n * An EventEmitter to listen to lang change events\n * onLangChange.subscribe((params: LangChangeEvent) => {\n * // do something\n * });\n * @type {?}\n */\n TranslateStore.prototype.onLangChange;\n /**\n * An EventEmitter to listen to default lang change events\n * onDefaultLangChange.subscribe((params: DefaultLangChangeEvent) => {\n * // do something\n * });\n * @type {?}\n */\n TranslateStore.prototype.onDefaultLangChange;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/translate.service.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst USE_STORE = new InjectionToken('USE_STORE');\n/** @type {?} */\nconst USE_DEFAULT_LANG = new InjectionToken('USE_DEFAULT_LANG');\n/** @type {?} */\nconst DEFAULT_LANGUAGE = new InjectionToken('DEFAULT_LANGUAGE');\n/** @type {?} */\nconst USE_EXTEND = new InjectionToken('USE_EXTEND');\n/**\n * @record\n */\nfunction TranslationChangeEvent() { }\nif (false) {\n /** @type {?} */\n TranslationChangeEvent.prototype.translations;\n /** @type {?} */\n TranslationChangeEvent.prototype.lang;\n}\n/**\n * @record\n */\nfunction LangChangeEvent() { }\nif (false) {\n /** @type {?} */\n LangChangeEvent.prototype.lang;\n /** @type {?} */\n LangChangeEvent.prototype.translations;\n}\n/**\n * @record\n */\nfunction DefaultLangChangeEvent() { }\nif (false) {\n /** @type {?} */\n DefaultLangChangeEvent.prototype.lang;\n /** @type {?} */\n DefaultLangChangeEvent.prototype.translations;\n}\nclass TranslateService {\n /**\n *\n * @param {?} store an instance of the store (that is supposed to be unique)\n * @param {?} currentLoader An instance of the loader currently used\n * @param {?} compiler An instance of the compiler currently used\n * @param {?} parser An instance of the parser currently used\n * @param {?} missingTranslationHandler A handler for missing translations.\n * @param {?=} useDefaultLang whether we should use default language translation when current language translation is missing.\n * @param {?=} isolate whether this service should use the store or not\n * @param {?=} extend To make a child module extend (and use) translations from parent modules.\n * @param {?=} defaultLanguage Set the default language using configuration\n */\n constructor(store, currentLoader, compiler, parser, missingTranslationHandler, useDefaultLang = true, isolate = false, extend = false, defaultLanguage) {\n this.store = store;\n this.currentLoader = currentLoader;\n this.compiler = compiler;\n this.parser = parser;\n this.missingTranslationHandler = missingTranslationHandler;\n this.useDefaultLang = useDefaultLang;\n this.isolate = isolate;\n this.extend = extend;\n this.pending = false;\n this._onTranslationChange = new EventEmitter();\n this._onLangChange = new EventEmitter();\n this._onDefaultLangChange = new EventEmitter();\n this._langs = [];\n this._translations = {};\n this._translationRequests = {};\n /** set the default language from configuration */\n if (defaultLanguage) {\n this.setDefaultLang(defaultLanguage);\n }\n }\n /**\n * An EventEmitter to listen to translation change events\n * onTranslationChange.subscribe((params: TranslationChangeEvent) => {\n * // do something\n * });\n * @return {?}\n */\n get onTranslationChange() {\n return this.isolate ? this._onTranslationChange : this.store.onTranslationChange;\n }\n /**\n * An EventEmitter to listen to lang change events\n * onLangChange.subscribe((params: LangChangeEvent) => {\n * // do something\n * });\n * @return {?}\n */\n get onLangChange() {\n return this.isolate ? this._onLangChange : this.store.onLangChange;\n }\n /**\n * An EventEmitter to listen to default lang change events\n * onDefaultLangChange.subscribe((params: DefaultLangChangeEvent) => {\n * // do something\n * });\n * @return {?}\n */\n get onDefaultLangChange() {\n return this.isolate ? this._onDefaultLangChange : this.store.onDefaultLangChange;\n }\n /**\n * The default lang to fallback when translations are missing on the current lang\n * @return {?}\n */\n get defaultLang() {\n return this.isolate ? this._defaultLang : this.store.defaultLang;\n }\n /**\n * @param {?} defaultLang\n * @return {?}\n */\n set defaultLang(defaultLang) {\n if (this.isolate) {\n this._defaultLang = defaultLang;\n }\n else {\n this.store.defaultLang = defaultLang;\n }\n }\n /**\n * The lang currently used\n * @return {?}\n */\n get currentLang() {\n return this.isolate ? this._currentLang : this.store.currentLang;\n }\n /**\n * @param {?} currentLang\n * @return {?}\n */\n set currentLang(currentLang) {\n if (this.isolate) {\n this._currentLang = currentLang;\n }\n else {\n this.store.currentLang = currentLang;\n }\n }\n /**\n * an array of langs\n * @return {?}\n */\n get langs() {\n return this.isolate ? this._langs : this.store.langs;\n }\n /**\n * @param {?} langs\n * @return {?}\n */\n set langs(langs) {\n if (this.isolate) {\n this._langs = langs;\n }\n else {\n this.store.langs = langs;\n }\n }\n /**\n * a list of translations per lang\n * @return {?}\n */\n get translations() {\n return this.isolate ? this._translations : this.store.translations;\n }\n /**\n * @param {?} translations\n * @return {?}\n */\n set translations(translations) {\n if (this.isolate) {\n this._translations = translations;\n }\n else {\n this.store.translations = translations;\n }\n }\n /**\n * Sets the default language to use as a fallback\n * @param {?} lang\n * @return {?}\n */\n setDefaultLang(lang) {\n if (lang === this.defaultLang) {\n return;\n }\n /** @type {?} */\n let pending = this.retrieveTranslations(lang);\n if (typeof pending !== \"undefined\") {\n // on init set the defaultLang immediately\n if (this.defaultLang == null) {\n this.defaultLang = lang;\n }\n pending.pipe(take(1))\n .subscribe((/**\n * @param {?} res\n * @return {?}\n */\n (res) => {\n this.changeDefaultLang(lang);\n }));\n }\n else { // we already have this language\n this.changeDefaultLang(lang);\n }\n }\n /**\n * Gets the default language used\n * @return {?}\n */\n getDefaultLang() {\n return this.defaultLang;\n }\n /**\n * Changes the lang currently used\n * @param {?} lang\n * @return {?}\n */\n use(lang) {\n // don't change the language if the language given is already selected\n if (lang === this.currentLang) {\n return of(this.translations[lang]);\n }\n /** @type {?} */\n let pending = this.retrieveTranslations(lang);\n if (typeof pending !== \"undefined\") {\n // on init set the currentLang immediately\n if (!this.currentLang) {\n this.currentLang = lang;\n }\n pending.pipe(take(1))\n .subscribe((/**\n * @param {?} res\n * @return {?}\n */\n (res) => {\n this.changeLang(lang);\n }));\n return pending;\n }\n else { // we have this language, return an Observable\n this.changeLang(lang);\n return of(this.translations[lang]);\n }\n }\n /**\n * Retrieves the given translations\n * @private\n * @param {?} lang\n * @return {?}\n */\n retrieveTranslations(lang) {\n /** @type {?} */\n let pending;\n // if this language is unavailable or extend is true, ask for it\n if (typeof this.translations[lang] === \"undefined\" || this.extend) {\n this._translationRequests[lang] = this._translationRequests[lang] || this.getTranslation(lang);\n pending = this._translationRequests[lang];\n }\n return pending;\n }\n /**\n * Gets an object of translations for a given language with the current loader\n * and passes it through the compiler\n * @param {?} lang\n * @return {?}\n */\n getTranslation(lang) {\n this.pending = true;\n /** @type {?} */\n const loadingTranslations = this.currentLoader.getTranslation(lang).pipe(shareReplay(1), take(1));\n this.loadingTranslations = loadingTranslations.pipe(map((/**\n * @param {?} res\n * @return {?}\n */\n (res) => this.compiler.compileTranslations(res, lang))), shareReplay(1), take(1));\n this.loadingTranslations\n .subscribe({\n next: (/**\n * @param {?} res\n * @return {?}\n */\n (res) => {\n this.translations[lang] = this.extend && this.translations[lang] ? Object.assign(Object.assign({}, res), this.translations[lang]) : res;\n this.updateLangs();\n this.pending = false;\n }),\n error: (/**\n * @param {?} err\n * @return {?}\n */\n (err) => {\n this.pending = false;\n })\n });\n return loadingTranslations;\n }\n /**\n * Manually sets an object of translations for a given language\n * after passing it through the compiler\n * @param {?} lang\n * @param {?} translations\n * @param {?=} shouldMerge\n * @return {?}\n */\n setTranslation(lang, translations, shouldMerge = false) {\n translations = this.compiler.compileTranslations(translations, lang);\n if ((shouldMerge || this.extend) && this.translations[lang]) {\n this.translations[lang] = mergeDeep(this.translations[lang], translations);\n }\n else {\n this.translations[lang] = translations;\n }\n this.updateLangs();\n this.onTranslationChange.emit({ lang: lang, translations: this.translations[lang] });\n }\n /**\n * Returns an array of currently available langs\n * @return {?}\n */\n getLangs() {\n return this.langs;\n }\n /**\n * Add available langs\n * @param {?} langs\n * @return {?}\n */\n addLangs(langs) {\n langs.forEach((/**\n * @param {?} lang\n * @return {?}\n */\n (lang) => {\n if (this.langs.indexOf(lang) === -1) {\n this.langs.push(lang);\n }\n }));\n }\n /**\n * Update the list of available langs\n * @private\n * @return {?}\n */\n updateLangs() {\n this.addLangs(Object.keys(this.translations));\n }\n /**\n * Returns the parsed result of the translations\n * @param {?} translations\n * @param {?} key\n * @param {?=} interpolateParams\n * @return {?}\n */\n getParsedResult(translations, key, interpolateParams) {\n /** @type {?} */\n let res;\n if (key instanceof Array) {\n /** @type {?} */\n let result = {};\n /** @type {?} */\n let observables = false;\n for (let k of key) {\n result[k] = this.getParsedResult(translations, k, interpolateParams);\n if (isObservable(result[k])) {\n observables = true;\n }\n }\n if (observables) {\n /** @type {?} */\n const sources = key.map((/**\n * @param {?} k\n * @return {?}\n */\n k => isObservable(result[k]) ? result[k] : of((/** @type {?} */ (result[k])))));\n return forkJoin(sources).pipe(map((/**\n * @param {?} arr\n * @return {?}\n */\n (arr) => {\n /** @type {?} */\n let obj = {};\n arr.forEach((/**\n * @param {?} value\n * @param {?} index\n * @return {?}\n */\n (value, index) => {\n obj[key[index]] = value;\n }));\n return obj;\n })));\n }\n return result;\n }\n if (translations) {\n res = this.parser.interpolate(this.parser.getValue(translations, key), interpolateParams);\n }\n if (typeof res === \"undefined\" && this.defaultLang != null && this.defaultLang !== this.currentLang && this.useDefaultLang) {\n res = this.parser.interpolate(this.parser.getValue(this.translations[this.defaultLang], key), interpolateParams);\n }\n if (typeof res === \"undefined\") {\n /** @type {?} */\n let params = { key, translateService: this };\n if (typeof interpolateParams !== 'undefined') {\n params.interpolateParams = interpolateParams;\n }\n res = this.missingTranslationHandler.handle(params);\n }\n return typeof res !== \"undefined\" ? res : key;\n }\n /**\n * Gets the translated value of a key (or an array of keys)\n * @param {?} key\n * @param {?=} interpolateParams\n * @return {?} the translated key, or an object of translated keys\n */\n get(key, interpolateParams) {\n if (!isDefined(key) || !key.length) {\n throw new Error(`Parameter \"key\" required`);\n }\n // check if we are loading a new translation to use\n if (this.pending) {\n return this.loadingTranslations.pipe(concatMap((/**\n * @param {?} res\n * @return {?}\n */\n (res) => {\n res = this.getParsedResult(res, key, interpolateParams);\n return isObservable(res) ? res : of(res);\n })));\n }\n else {\n /** @type {?} */\n let res = this.getParsedResult(this.translations[this.currentLang], key, interpolateParams);\n return isObservable(res) ? res : of(res);\n }\n }\n /**\n * Returns a stream of translated values of a key (or an array of keys) which updates\n * whenever the translation changes.\n * @param {?} key\n * @param {?=} interpolateParams\n * @return {?} A stream of the translated key, or an object of translated keys\n */\n getStreamOnTranslationChange(key, interpolateParams) {\n if (!isDefined(key) || !key.length) {\n throw new Error(`Parameter \"key\" required`);\n }\n return concat(defer((/**\n * @return {?}\n */\n () => this.get(key, interpolateParams))), this.onTranslationChange.pipe(switchMap((/**\n * @param {?} event\n * @return {?}\n */\n (event) => {\n /** @type {?} */\n const res = this.getParsedResult(event.translations, key, interpolateParams);\n if (typeof res.subscribe === 'function') {\n return res;\n }\n else {\n return of(res);\n }\n }))));\n }\n /**\n * Returns a stream of translated values of a key (or an array of keys) which updates\n * whenever the language changes.\n * @param {?} key\n * @param {?=} interpolateParams\n * @return {?} A stream of the translated key, or an object of translated keys\n */\n stream(key, interpolateParams) {\n if (!isDefined(key) || !key.length) {\n throw new Error(`Parameter \"key\" required`);\n }\n return concat(defer((/**\n * @return {?}\n */\n () => this.get(key, interpolateParams))), this.onLangChange.pipe(switchMap((/**\n * @param {?} event\n * @return {?}\n */\n (event) => {\n /** @type {?} */\n const res = this.getParsedResult(event.translations, key, interpolateParams);\n return isObservable(res) ? res : of(res);\n }))));\n }\n /**\n * Returns a translation instantly from the internal state of loaded translation.\n * All rules regarding the current language, the preferred language of even fallback languages will be used except any promise handling.\n * @param {?} key\n * @param {?=} interpolateParams\n * @return {?}\n */\n instant(key, interpolateParams) {\n if (!isDefined(key) || !key.length) {\n throw new Error(`Parameter \"key\" required`);\n }\n /** @type {?} */\n let res = this.getParsedResult(this.translations[this.currentLang], key, interpolateParams);\n if (isObservable(res)) {\n if (key instanceof Array) {\n /** @type {?} */\n let obj = {};\n key.forEach((/**\n * @param {?} value\n * @param {?} index\n * @return {?}\n */\n (value, index) => {\n obj[key[index]] = key[index];\n }));\n return obj;\n }\n return key;\n }\n else {\n return res;\n }\n }\n /**\n * Sets the translated value of a key, after compiling it\n * @param {?} key\n * @param {?} value\n * @param {?=} lang\n * @return {?}\n */\n set(key, value, lang = this.currentLang) {\n this.translations[lang][key] = this.compiler.compile(value, lang);\n this.updateLangs();\n this.onTranslationChange.emit({ lang: lang, translations: this.translations[lang] });\n }\n /**\n * Changes the current lang\n * @private\n * @param {?} lang\n * @return {?}\n */\n changeLang(lang) {\n this.currentLang = lang;\n this.onLangChange.emit({ lang: lang, translations: this.translations[lang] });\n // if there is no default lang, use the one that we just set\n if (this.defaultLang == null) {\n this.changeDefaultLang(lang);\n }\n }\n /**\n * Changes the default lang\n * @private\n * @param {?} lang\n * @return {?}\n */\n changeDefaultLang(lang) {\n this.defaultLang = lang;\n this.onDefaultLangChange.emit({ lang: lang, translations: this.translations[lang] });\n }\n /**\n * Allows to reload the lang file from the file\n * @param {?} lang\n * @return {?}\n */\n reloadLang(lang) {\n this.resetLang(lang);\n return this.getTranslation(lang);\n }\n /**\n * Deletes inner translation\n * @param {?} lang\n * @return {?}\n */\n resetLang(lang) {\n this._translationRequests[lang] = undefined;\n this.translations[lang] = undefined;\n }\n /**\n * Returns the language code name from the browser, e.g. \"de\"\n * @return {?}\n */\n getBrowserLang() {\n if (typeof window === 'undefined' || typeof window.navigator === 'undefined') {\n return undefined;\n }\n /** @type {?} */\n let browserLang = window.navigator.languages ? window.navigator.languages[0] : null;\n browserLang = browserLang || window.navigator.language || window.navigator.browserLanguage || window.navigator.userLanguage;\n if (typeof browserLang === 'undefined') {\n return undefined;\n }\n if (browserLang.indexOf('-') !== -1) {\n browserLang = browserLang.split('-')[0];\n }\n if (browserLang.indexOf('_') !== -1) {\n browserLang = browserLang.split('_')[0];\n }\n return browserLang;\n }\n /**\n * Returns the culture language code name from the browser, e.g. \"de-DE\"\n * @return {?}\n */\n getBrowserCultureLang() {\n if (typeof window === 'undefined' || typeof window.navigator === 'undefined') {\n return undefined;\n }\n /** @type {?} */\n let browserCultureLang = window.navigator.languages ? window.navigator.languages[0] : null;\n browserCultureLang = browserCultureLang || window.navigator.language || window.navigator.browserLanguage || window.navigator.userLanguage;\n return browserCultureLang;\n }\n}\nTranslateService.ɵfac = function TranslateService_Factory(t) { return new (t || TranslateService)(ɵngcc0.ɵɵinject(TranslateStore), ɵngcc0.ɵɵinject(TranslateLoader), ɵngcc0.ɵɵinject(TranslateCompiler), ɵngcc0.ɵɵinject(TranslateParser), ɵngcc0.ɵɵinject(MissingTranslationHandler), ɵngcc0.ɵɵinject(USE_DEFAULT_LANG), ɵngcc0.ɵɵinject(USE_STORE), ɵngcc0.ɵɵinject(USE_EXTEND), ɵngcc0.ɵɵinject(DEFAULT_LANGUAGE)); };\nTranslateService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: TranslateService, factory: TranslateService.ɵfac });\n/** @nocollapse */\nTranslateService.ctorParameters = () => [\n { type: TranslateStore },\n { type: TranslateLoader },\n { type: TranslateCompiler },\n { type: TranslateParser },\n { type: MissingTranslationHandler },\n { type: Boolean, decorators: [{ type: Inject, args: [USE_DEFAULT_LANG,] }] },\n { type: Boolean, decorators: [{ type: Inject, args: [USE_STORE,] }] },\n { type: Boolean, decorators: [{ type: Inject, args: [USE_EXTEND,] }] },\n { type: String, decorators: [{ type: Inject, args: [DEFAULT_LANGUAGE,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TranslateService, [{\n type: Injectable\n }], function () { return [{ type: TranslateStore }, { type: TranslateLoader }, { type: TranslateCompiler }, { type: TranslateParser }, { type: MissingTranslationHandler }, { type: Boolean, decorators: [{\n type: Inject,\n args: [USE_DEFAULT_LANG]\n }] }, { type: Boolean, decorators: [{\n type: Inject,\n args: [USE_STORE]\n }] }, { type: Boolean, decorators: [{\n type: Inject,\n args: [USE_EXTEND]\n }] }, { type: String, decorators: [{\n type: Inject,\n args: [DEFAULT_LANGUAGE]\n }] }]; }, null); })();\nif (false) {\n /**\n * @type {?}\n * @private\n */\n TranslateService.prototype.loadingTranslations;\n /**\n * @type {?}\n * @private\n */\n TranslateService.prototype.pending;\n /**\n * @type {?}\n * @private\n */\n TranslateService.prototype._onTranslationChange;\n /**\n * @type {?}\n * @private\n */\n TranslateService.prototype._onLangChange;\n /**\n * @type {?}\n * @private\n */\n TranslateService.prototype._onDefaultLangChange;\n /**\n * @type {?}\n * @private\n */\n TranslateService.prototype._defaultLang;\n /**\n * @type {?}\n * @private\n */\n TranslateService.prototype._currentLang;\n /**\n * @type {?}\n * @private\n */\n TranslateService.prototype._langs;\n /**\n * @type {?}\n * @private\n */\n TranslateService.prototype._translations;\n /**\n * @type {?}\n * @private\n */\n TranslateService.prototype._translationRequests;\n /** @type {?} */\n TranslateService.prototype.store;\n /** @type {?} */\n TranslateService.prototype.currentLoader;\n /** @type {?} */\n TranslateService.prototype.compiler;\n /** @type {?} */\n TranslateService.prototype.parser;\n /** @type {?} */\n TranslateService.prototype.missingTranslationHandler;\n /**\n * @type {?}\n * @private\n */\n TranslateService.prototype.useDefaultLang;\n /**\n * @type {?}\n * @private\n */\n TranslateService.prototype.isolate;\n /**\n * @type {?}\n * @private\n */\n TranslateService.prototype.extend;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/translate.directive.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass TranslateDirective {\n /**\n * @param {?} translateService\n * @param {?} element\n * @param {?} _ref\n */\n constructor(translateService, element, _ref) {\n this.translateService = translateService;\n this.element = element;\n this._ref = _ref;\n // subscribe to onTranslationChange event, in case the translations of the current lang change\n if (!this.onTranslationChangeSub) {\n this.onTranslationChangeSub = this.translateService.onTranslationChange.subscribe((/**\n * @param {?} event\n * @return {?}\n */\n (event) => {\n if (event.lang === this.translateService.currentLang) {\n this.checkNodes(true, event.translations);\n }\n }));\n }\n // subscribe to onLangChange event, in case the language changes\n if (!this.onLangChangeSub) {\n this.onLangChangeSub = this.translateService.onLangChange.subscribe((/**\n * @param {?} event\n * @return {?}\n */\n (event) => {\n this.checkNodes(true, event.translations);\n }));\n }\n // subscribe to onDefaultLangChange event, in case the default language changes\n if (!this.onDefaultLangChangeSub) {\n this.onDefaultLangChangeSub = this.translateService.onDefaultLangChange.subscribe((/**\n * @param {?} event\n * @return {?}\n */\n (event) => {\n this.checkNodes(true);\n }));\n }\n }\n /**\n * @param {?} key\n * @return {?}\n */\n set translate(key) {\n if (key) {\n this.key = key;\n this.checkNodes();\n }\n }\n /**\n * @param {?} params\n * @return {?}\n */\n set translateParams(params) {\n if (!equals(this.currentParams, params)) {\n this.currentParams = params;\n this.checkNodes(true);\n }\n }\n /**\n * @return {?}\n */\n ngAfterViewChecked() {\n this.checkNodes();\n }\n /**\n * @param {?=} forceUpdate\n * @param {?=} translations\n * @return {?}\n */\n checkNodes(forceUpdate = false, translations) {\n /** @type {?} */\n let nodes = this.element.nativeElement.childNodes;\n // if the element is empty\n if (!nodes.length) {\n // we add the key as content\n this.setContent(this.element.nativeElement, this.key);\n nodes = this.element.nativeElement.childNodes;\n }\n for (let i = 0; i < nodes.length; ++i) {\n /** @type {?} */\n let node = nodes[i];\n if (node.nodeType === 3) { // node type 3 is a text node\n // node type 3 is a text node\n /** @type {?} */\n let key;\n if (forceUpdate) {\n node.lastKey = null;\n }\n if (isDefined(node.lookupKey)) {\n key = node.lookupKey;\n }\n else if (this.key) {\n key = this.key;\n }\n else {\n /** @type {?} */\n let content = this.getContent(node);\n /** @type {?} */\n let trimmedContent = content.trim();\n if (trimmedContent.length) {\n node.lookupKey = trimmedContent;\n // we want to use the content as a key, not the translation value\n if (content !== node.currentValue) {\n key = trimmedContent;\n // the content was changed from the user, we'll use it as a reference if needed\n node.originalContent = content || node.originalContent;\n }\n else if (node.originalContent) { // the content seems ok, but the lang has changed\n // the current content is the translation, not the key, use the last real content as key\n key = node.originalContent.trim();\n }\n else if (content !== node.currentValue) {\n // we want to use the content as a key, not the translation value\n key = trimmedContent;\n // the content was changed from the user, we'll use it as a reference if needed\n node.originalContent = content || node.originalContent;\n }\n }\n }\n this.updateValue(key, node, translations);\n }\n }\n }\n /**\n * @param {?} key\n * @param {?} node\n * @param {?} translations\n * @return {?}\n */\n updateValue(key, node, translations) {\n if (key) {\n if (node.lastKey === key && this.lastParams === this.currentParams) {\n return;\n }\n this.lastParams = this.currentParams;\n /** @type {?} */\n let onTranslation = (/**\n * @param {?} res\n * @return {?}\n */\n (res) => {\n if (res !== key) {\n node.lastKey = key;\n }\n if (!node.originalContent) {\n node.originalContent = this.getContent(node);\n }\n node.currentValue = isDefined(res) ? res : (node.originalContent || key);\n // we replace in the original content to preserve spaces that we might have trimmed\n this.setContent(node, this.key ? node.currentValue : node.originalContent.replace(key, node.currentValue));\n this._ref.markForCheck();\n });\n if (isDefined(translations)) {\n /** @type {?} */\n let res = this.translateService.getParsedResult(translations, key, this.currentParams);\n if (isObservable(res)) {\n res.subscribe(onTranslation);\n }\n else {\n onTranslation(res);\n }\n }\n else {\n this.translateService.get(key, this.currentParams).subscribe(onTranslation);\n }\n }\n }\n /**\n * @param {?} node\n * @return {?}\n */\n getContent(node) {\n return isDefined(node.textContent) ? node.textContent : node.data;\n }\n /**\n * @param {?} node\n * @param {?} content\n * @return {?}\n */\n setContent(node, content) {\n if (isDefined(node.textContent)) {\n node.textContent = content;\n }\n else {\n node.data = content;\n }\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n if (this.onLangChangeSub) {\n this.onLangChangeSub.unsubscribe();\n }\n if (this.onDefaultLangChangeSub) {\n this.onDefaultLangChangeSub.unsubscribe();\n }\n if (this.onTranslationChangeSub) {\n this.onTranslationChangeSub.unsubscribe();\n }\n }\n}\nTranslateDirective.ɵfac = function TranslateDirective_Factory(t) { return new (t || TranslateDirective)(ɵngcc0.ɵɵdirectiveInject(TranslateService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nTranslateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: TranslateDirective, selectors: [[\"\", \"translate\", \"\"], [\"\", \"ngx-translate\", \"\"]], inputs: { translate: \"translate\", translateParams: \"translateParams\" } });\n/** @nocollapse */\nTranslateDirective.ctorParameters = () => [\n { type: TranslateService },\n { type: ElementRef },\n { type: ChangeDetectorRef }\n];\nTranslateDirective.propDecorators = {\n translate: [{ type: Input }],\n translateParams: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TranslateDirective, [{\n type: Directive,\n args: [{\n selector: '[translate],[ngx-translate]'\n }]\n }], function () { return [{ type: TranslateService }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.ChangeDetectorRef }]; }, { translate: [{\n type: Input\n }], translateParams: [{\n type: Input\n }] }); })();\nif (false) {\n /** @type {?} */\n TranslateDirective.prototype.key;\n /** @type {?} */\n TranslateDirective.prototype.lastParams;\n /** @type {?} */\n TranslateDirective.prototype.currentParams;\n /** @type {?} */\n TranslateDirective.prototype.onLangChangeSub;\n /** @type {?} */\n TranslateDirective.prototype.onDefaultLangChangeSub;\n /** @type {?} */\n TranslateDirective.prototype.onTranslationChangeSub;\n /**\n * @type {?}\n * @private\n */\n TranslateDirective.prototype.translateService;\n /**\n * @type {?}\n * @private\n */\n TranslateDirective.prototype.element;\n /**\n * @type {?}\n * @private\n */\n TranslateDirective.prototype._ref;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/translate.pipe.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass TranslatePipe {\n /**\n * @param {?} translate\n * @param {?} _ref\n */\n constructor(translate, _ref) {\n this.translate = translate;\n this._ref = _ref;\n this.value = '';\n }\n /**\n * @param {?} key\n * @param {?=} interpolateParams\n * @param {?=} translations\n * @return {?}\n */\n updateValue(key, interpolateParams, translations) {\n /** @type {?} */\n let onTranslation = (/**\n * @param {?} res\n * @return {?}\n */\n (res) => {\n this.value = res !== undefined ? res : key;\n this.lastKey = key;\n this._ref.markForCheck();\n });\n if (translations) {\n /** @type {?} */\n let res = this.translate.getParsedResult(translations, key, interpolateParams);\n if (isObservable(res.subscribe)) {\n res.subscribe(onTranslation);\n }\n else {\n onTranslation(res);\n }\n }\n this.translate.get(key, interpolateParams).subscribe(onTranslation);\n }\n /**\n * @param {?} query\n * @param {...?} args\n * @return {?}\n */\n transform(query, ...args) {\n if (!query || !query.length) {\n return query;\n }\n // if we ask another time for the same key, return the last value\n if (equals(query, this.lastKey) && equals(args, this.lastParams)) {\n return this.value;\n }\n /** @type {?} */\n let interpolateParams;\n if (isDefined(args[0]) && args.length) {\n if (typeof args[0] === 'string' && args[0].length) {\n // we accept objects written in the template such as {n:1}, {'n':1}, {n:'v'}\n // which is why we might need to change it to real JSON objects such as {\"n\":1} or {\"n\":\"v\"}\n /** @type {?} */\n let validArgs = args[0]\n .replace(/(\\')?([a-zA-Z0-9_]+)(\\')?(\\s)?:/g, '\"$2\":')\n .replace(/:(\\s)?(\\')(.*?)(\\')/g, ':\"$3\"');\n try {\n interpolateParams = JSON.parse(validArgs);\n }\n catch (e) {\n throw new SyntaxError(`Wrong parameter in TranslatePipe. Expected a valid Object, received: ${args[0]}`);\n }\n }\n else if (typeof args[0] === 'object' && !Array.isArray(args[0])) {\n interpolateParams = args[0];\n }\n }\n // store the query, in case it changes\n this.lastKey = query;\n // store the params, in case they change\n this.lastParams = args;\n // set the value\n this.updateValue(query, interpolateParams);\n // if there is a subscription to onLangChange, clean it\n this._dispose();\n // subscribe to onTranslationChange event, in case the translations change\n if (!this.onTranslationChange) {\n this.onTranslationChange = this.translate.onTranslationChange.subscribe((/**\n * @param {?} event\n * @return {?}\n */\n (event) => {\n if (this.lastKey && event.lang === this.translate.currentLang) {\n this.lastKey = null;\n this.updateValue(query, interpolateParams, event.translations);\n }\n }));\n }\n // subscribe to onLangChange event, in case the language changes\n if (!this.onLangChange) {\n this.onLangChange = this.translate.onLangChange.subscribe((/**\n * @param {?} event\n * @return {?}\n */\n (event) => {\n if (this.lastKey) {\n this.lastKey = null; // we want to make sure it doesn't return the same value until it's been updated\n this.updateValue(query, interpolateParams, event.translations);\n }\n }));\n }\n // subscribe to onDefaultLangChange event, in case the default language changes\n if (!this.onDefaultLangChange) {\n this.onDefaultLangChange = this.translate.onDefaultLangChange.subscribe((/**\n * @return {?}\n */\n () => {\n if (this.lastKey) {\n this.lastKey = null; // we want to make sure it doesn't return the same value until it's been updated\n this.updateValue(query, interpolateParams);\n }\n }));\n }\n return this.value;\n }\n /**\n * Clean any existing subscription to change events\n * @private\n * @return {?}\n */\n _dispose() {\n if (typeof this.onTranslationChange !== 'undefined') {\n this.onTranslationChange.unsubscribe();\n this.onTranslationChange = undefined;\n }\n if (typeof this.onLangChange !== 'undefined') {\n this.onLangChange.unsubscribe();\n this.onLangChange = undefined;\n }\n if (typeof this.onDefaultLangChange !== 'undefined') {\n this.onDefaultLangChange.unsubscribe();\n this.onDefaultLangChange = undefined;\n }\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n this._dispose();\n }\n}\nTranslatePipe.ɵfac = function TranslatePipe_Factory(t) { return new (t || TranslatePipe)(ɵngcc0.ɵɵdirectiveInject(TranslateService, 16), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef, 16)); };\nTranslatePipe.ɵpipe = /*@__PURE__*/ ɵngcc0.ɵɵdefinePipe({ name: \"translate\", type: TranslatePipe, pure: false });\nTranslatePipe.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: TranslatePipe, factory: TranslatePipe.ɵfac });\n/** @nocollapse */\nTranslatePipe.ctorParameters = () => [\n { type: TranslateService },\n { type: ChangeDetectorRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TranslatePipe, [{\n type: Injectable\n }, {\n type: Pipe,\n args: [{\n name: 'translate',\n pure: false // required to update the value when the promise is resolved\n }]\n }], function () { return [{ type: TranslateService }, { type: ɵngcc0.ChangeDetectorRef }]; }, null); })();\nif (false) {\n /** @type {?} */\n TranslatePipe.prototype.value;\n /** @type {?} */\n TranslatePipe.prototype.lastKey;\n /** @type {?} */\n TranslatePipe.prototype.lastParams;\n /** @type {?} */\n TranslatePipe.prototype.onTranslationChange;\n /** @type {?} */\n TranslatePipe.prototype.onLangChange;\n /** @type {?} */\n TranslatePipe.prototype.onDefaultLangChange;\n /**\n * @type {?}\n * @private\n */\n TranslatePipe.prototype.translate;\n /**\n * @type {?}\n * @private\n */\n TranslatePipe.prototype._ref;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: public_api.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @record\n */\nfunction TranslateModuleConfig() { }\nif (false) {\n /** @type {?|undefined} */\n TranslateModuleConfig.prototype.loader;\n /** @type {?|undefined} */\n TranslateModuleConfig.prototype.compiler;\n /** @type {?|undefined} */\n TranslateModuleConfig.prototype.parser;\n /** @type {?|undefined} */\n TranslateModuleConfig.prototype.missingTranslationHandler;\n /** @type {?|undefined} */\n TranslateModuleConfig.prototype.isolate;\n /** @type {?|undefined} */\n TranslateModuleConfig.prototype.extend;\n /** @type {?|undefined} */\n TranslateModuleConfig.prototype.useDefaultLang;\n /** @type {?|undefined} */\n TranslateModuleConfig.prototype.defaultLanguage;\n}\nclass TranslateModule {\n /**\n * Use this method in your root module to provide the TranslateService\n * @param {?=} config\n * @return {?}\n */\n static forRoot(config = {}) {\n return {\n ngModule: TranslateModule,\n providers: [\n config.loader || { provide: TranslateLoader, useClass: TranslateFakeLoader },\n config.compiler || { provide: TranslateCompiler, useClass: TranslateFakeCompiler },\n config.parser || { provide: TranslateParser, useClass: TranslateDefaultParser },\n config.missingTranslationHandler || { provide: MissingTranslationHandler, useClass: FakeMissingTranslationHandler },\n TranslateStore,\n { provide: USE_STORE, useValue: config.isolate },\n { provide: USE_DEFAULT_LANG, useValue: config.useDefaultLang },\n { provide: USE_EXTEND, useValue: config.extend },\n { provide: DEFAULT_LANGUAGE, useValue: config.defaultLanguage },\n TranslateService\n ]\n };\n }\n /**\n * Use this method in your other (non root) modules to import the directive/pipe\n * @param {?=} config\n * @return {?}\n */\n static forChild(config = {}) {\n return {\n ngModule: TranslateModule,\n providers: [\n config.loader || { provide: TranslateLoader, useClass: TranslateFakeLoader },\n config.compiler || { provide: TranslateCompiler, useClass: TranslateFakeCompiler },\n config.parser || { provide: TranslateParser, useClass: TranslateDefaultParser },\n config.missingTranslationHandler || { provide: MissingTranslationHandler, useClass: FakeMissingTranslationHandler },\n { provide: USE_STORE, useValue: config.isolate },\n { provide: USE_DEFAULT_LANG, useValue: config.useDefaultLang },\n { provide: USE_EXTEND, useValue: config.extend },\n { provide: DEFAULT_LANGUAGE, useValue: config.defaultLanguage },\n TranslateService\n ]\n };\n }\n}\nTranslateModule.ɵfac = function TranslateModule_Factory(t) { return new (t || TranslateModule)(); };\nTranslateModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: TranslateModule });\nTranslateModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TranslateModule, [{\n type: NgModule,\n args: [{\n declarations: [\n TranslatePipe,\n TranslateDirective\n ],\n exports: [\n TranslatePipe,\n TranslateDirective\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(TranslateModule, { declarations: [TranslatePipe, TranslateDirective], exports: [TranslatePipe, TranslateDirective] }); })();\n\n/**\n * @fileoverview added by tsickle\n * Generated from: ngx-translate-core.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\nexport { DEFAULT_LANGUAGE, FakeMissingTranslationHandler, MissingTranslationHandler, TranslateCompiler, TranslateDefaultParser, TranslateDirective, TranslateFakeCompiler, TranslateFakeLoader, TranslateLoader, TranslateModule, TranslateParser, TranslatePipe, TranslateService, TranslateStore, USE_DEFAULT_LANG, USE_EXTEND, USE_STORE };\n\n","/* @license C3.js v0.6.14 | (c) C3 Team and other contributors | http://c3js.org/ */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.c3 = factory());\n}(this, function () { 'use strict';\n\n function _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n }\n\n function ChartInternal(api) {\n var $$ = this;\n $$.d3 = window.d3 ? window.d3 : typeof require !== 'undefined' ? require(\"d3\") : undefined;\n $$.api = api;\n $$.config = $$.getDefaultConfig();\n $$.data = {};\n $$.cache = {};\n $$.axes = {};\n }\n\n /**\n * The Chart class\n *\n * The methods of this class is the public APIs of the chart object.\n */\n\n function Chart(config) {\n this.internal = new ChartInternal(this);\n this.internal.loadConfig(config);\n this.internal.beforeInit(config);\n this.internal.init();\n this.internal.afterInit(config); // bind \"this\" to nested API\n\n (function bindThis(fn, target, argThis) {\n Object.keys(fn).forEach(function (key) {\n target[key] = fn[key].bind(argThis);\n\n if (Object.keys(fn[key]).length > 0) {\n bindThis(fn[key], target[key], argThis);\n }\n });\n })(Chart.prototype, this, this);\n }\n\n function AxisInternal(component, params) {\n var internal = this;\n internal.component = component;\n internal.params = params || {};\n internal.d3 = component.d3;\n internal.scale = internal.d3.scaleLinear();\n internal.range;\n internal.orient = \"bottom\";\n internal.innerTickSize = 6;\n internal.outerTickSize = this.params.withOuterTick ? 6 : 0;\n internal.tickPadding = 3;\n internal.tickValues = null;\n internal.tickFormat;\n internal.tickArguments;\n internal.tickOffset = 0;\n internal.tickCulling = true;\n internal.tickCentered;\n internal.tickTextCharSize;\n internal.tickTextRotate = internal.params.tickTextRotate;\n internal.tickLength;\n internal.axis = internal.generateAxis();\n }\n\n AxisInternal.prototype.axisX = function (selection, x, tickOffset) {\n selection.attr(\"transform\", function (d) {\n return \"translate(\" + Math.ceil(x(d) + tickOffset) + \", 0)\";\n });\n };\n\n AxisInternal.prototype.axisY = function (selection, y) {\n selection.attr(\"transform\", function (d) {\n return \"translate(0,\" + Math.ceil(y(d)) + \")\";\n });\n };\n\n AxisInternal.prototype.scaleExtent = function (domain) {\n var start = domain[0],\n stop = domain[domain.length - 1];\n return start < stop ? [start, stop] : [stop, start];\n };\n\n AxisInternal.prototype.generateTicks = function (scale) {\n var internal = this;\n var i,\n domain,\n ticks = [];\n\n if (scale.ticks) {\n return scale.ticks.apply(scale, internal.tickArguments);\n }\n\n domain = scale.domain();\n\n for (i = Math.ceil(domain[0]); i < domain[1]; i++) {\n ticks.push(i);\n }\n\n if (ticks.length > 0 && ticks[0] > 0) {\n ticks.unshift(ticks[0] - (ticks[1] - ticks[0]));\n }\n\n return ticks;\n };\n\n AxisInternal.prototype.copyScale = function () {\n var internal = this;\n var newScale = internal.scale.copy(),\n domain;\n\n if (internal.params.isCategory) {\n domain = internal.scale.domain();\n newScale.domain([domain[0], domain[1] - 1]);\n }\n\n return newScale;\n };\n\n AxisInternal.prototype.textFormatted = function (v) {\n var internal = this,\n formatted = internal.tickFormat ? internal.tickFormat(v) : v;\n return typeof formatted !== 'undefined' ? formatted : '';\n };\n\n AxisInternal.prototype.updateRange = function () {\n var internal = this;\n internal.range = internal.scale.rangeExtent ? internal.scale.rangeExtent() : internal.scaleExtent(internal.scale.range());\n return internal.range;\n };\n\n AxisInternal.prototype.updateTickTextCharSize = function (tick) {\n var internal = this;\n\n if (internal.tickTextCharSize) {\n return internal.tickTextCharSize;\n }\n\n var size = {\n h: 11.5,\n w: 5.5\n };\n tick.select('text').text(function (d) {\n return internal.textFormatted(d);\n }).each(function (d) {\n var box = this.getBoundingClientRect(),\n text = internal.textFormatted(d),\n h = box.height,\n w = text ? box.width / text.length : undefined;\n\n if (h && w) {\n size.h = h;\n size.w = w;\n }\n }).text('');\n internal.tickTextCharSize = size;\n return size;\n };\n\n AxisInternal.prototype.isVertical = function () {\n return this.orient === 'left' || this.orient === 'right';\n };\n\n AxisInternal.prototype.tspanData = function (d, i, scale) {\n var internal = this;\n var splitted = internal.params.tickMultiline ? internal.splitTickText(d, scale) : [].concat(internal.textFormatted(d));\n\n if (internal.params.tickMultiline && internal.params.tickMultilineMax > 0) {\n splitted = internal.ellipsify(splitted, internal.params.tickMultilineMax);\n }\n\n return splitted.map(function (s) {\n return {\n index: i,\n splitted: s,\n length: splitted.length\n };\n });\n };\n\n AxisInternal.prototype.splitTickText = function (d, scale) {\n var internal = this,\n tickText = internal.textFormatted(d),\n maxWidth = internal.params.tickWidth,\n subtext,\n spaceIndex,\n textWidth,\n splitted = [];\n\n if (Object.prototype.toString.call(tickText) === \"[object Array]\") {\n return tickText;\n }\n\n if (!maxWidth || maxWidth <= 0) {\n maxWidth = internal.isVertical() ? 95 : internal.params.isCategory ? Math.ceil(scale(1) - scale(0)) - 12 : 110;\n }\n\n function split(splitted, text) {\n spaceIndex = undefined;\n\n for (var i = 1; i < text.length; i++) {\n if (text.charAt(i) === ' ') {\n spaceIndex = i;\n }\n\n subtext = text.substr(0, i + 1);\n textWidth = internal.tickTextCharSize.w * subtext.length; // if text width gets over tick width, split by space index or crrent index\n\n if (maxWidth < textWidth) {\n return split(splitted.concat(text.substr(0, spaceIndex ? spaceIndex : i)), text.slice(spaceIndex ? spaceIndex + 1 : i));\n }\n }\n\n return splitted.concat(text);\n }\n\n return split(splitted, tickText + \"\");\n };\n\n AxisInternal.prototype.ellipsify = function (splitted, max) {\n if (splitted.length <= max) {\n return splitted;\n }\n\n var ellipsified = splitted.slice(0, max);\n var remaining = 3;\n\n for (var i = max - 1; i >= 0; i--) {\n var available = ellipsified[i].length;\n ellipsified[i] = ellipsified[i].substr(0, available - remaining).padEnd(available, '.');\n remaining -= available;\n\n if (remaining <= 0) {\n break;\n }\n }\n\n return ellipsified;\n };\n\n AxisInternal.prototype.updateTickLength = function () {\n var internal = this;\n internal.tickLength = Math.max(internal.innerTickSize, 0) + internal.tickPadding;\n };\n\n AxisInternal.prototype.lineY2 = function (d) {\n var internal = this,\n tickPosition = internal.scale(d) + (internal.tickCentered ? 0 : internal.tickOffset);\n return internal.range[0] < tickPosition && tickPosition < internal.range[1] ? internal.innerTickSize : 0;\n };\n\n AxisInternal.prototype.textY = function () {\n var internal = this,\n rotate = internal.tickTextRotate;\n return rotate ? 11.5 - 2.5 * (rotate / 15) * (rotate > 0 ? 1 : -1) : internal.tickLength;\n };\n\n AxisInternal.prototype.textTransform = function () {\n var internal = this,\n rotate = internal.tickTextRotate;\n return rotate ? \"rotate(\" + rotate + \")\" : \"\";\n };\n\n AxisInternal.prototype.textTextAnchor = function () {\n var internal = this,\n rotate = internal.tickTextRotate;\n return rotate ? rotate > 0 ? \"start\" : \"end\" : \"middle\";\n };\n\n AxisInternal.prototype.tspanDx = function () {\n var internal = this,\n rotate = internal.tickTextRotate;\n return rotate ? 8 * Math.sin(Math.PI * (rotate / 180)) : 0;\n };\n\n AxisInternal.prototype.tspanDy = function (d, i) {\n var internal = this,\n dy = internal.tickTextCharSize.h;\n\n if (i === 0) {\n if (internal.isVertical()) {\n dy = -((d.length - 1) * (internal.tickTextCharSize.h / 2) - 3);\n } else {\n dy = \".71em\";\n }\n }\n\n return dy;\n };\n\n AxisInternal.prototype.generateAxis = function () {\n var internal = this,\n d3 = internal.d3,\n params = internal.params;\n\n function axis(g, transition) {\n var self;\n g.each(function () {\n var g = axis.g = d3.select(this);\n var scale0 = this.__chart__ || internal.scale,\n scale1 = this.__chart__ = internal.copyScale();\n var ticksValues = internal.tickValues ? internal.tickValues : internal.generateTicks(scale1),\n ticks = g.selectAll(\".tick\").data(ticksValues, scale1),\n tickEnter = ticks.enter().insert(\"g\", \".domain\").attr(\"class\", \"tick\").style(\"opacity\", 1e-6),\n // MEMO: No exit transition. The reason is this transition affects max tick width calculation because old tick will be included in the ticks.\n tickExit = ticks.exit().remove(),\n tickUpdate = ticks.merge(tickEnter),\n tickTransform,\n tickX,\n tickY;\n\n if (params.isCategory) {\n internal.tickOffset = Math.ceil((scale1(1) - scale1(0)) / 2);\n tickX = internal.tickCentered ? 0 : internal.tickOffset;\n tickY = internal.tickCentered ? internal.tickOffset : 0;\n } else {\n internal.tickOffset = tickX = 0;\n }\n\n internal.updateRange();\n internal.updateTickLength();\n internal.updateTickTextCharSize(g.select('.tick'));\n var lineUpdate = tickUpdate.select(\"line\").merge(tickEnter.append(\"line\")),\n textUpdate = tickUpdate.select(\"text\").merge(tickEnter.append(\"text\"));\n var tspans = tickUpdate.selectAll('text').selectAll('tspan').data(function (d, i) {\n return internal.tspanData(d, i, scale1);\n }),\n tspanEnter = tspans.enter().append('tspan'),\n tspanUpdate = tspanEnter.merge(tspans).text(function (d) {\n return d.splitted;\n });\n tspans.exit().remove();\n var path = g.selectAll(\".domain\").data([0]),\n pathUpdate = path.enter().append(\"path\").merge(path).attr(\"class\", \"domain\"); // TODO: each attr should be one function and change its behavior by internal.orient, probably\n\n switch (internal.orient) {\n case \"bottom\":\n {\n tickTransform = internal.axisX;\n lineUpdate.attr(\"x1\", tickX).attr(\"x2\", tickX).attr(\"y2\", function (d, i) {\n return internal.lineY2(d, i);\n });\n textUpdate.attr(\"x\", 0).attr(\"y\", function (d, i) {\n return internal.textY(d, i);\n }).attr(\"transform\", function (d, i) {\n return internal.textTransform(d, i);\n }).style(\"text-anchor\", function (d, i) {\n return internal.textTextAnchor(d, i);\n });\n tspanUpdate.attr('x', 0).attr(\"dy\", function (d, i) {\n return internal.tspanDy(d, i);\n }).attr('dx', function (d, i) {\n return internal.tspanDx(d, i);\n });\n pathUpdate.attr(\"d\", \"M\" + internal.range[0] + \",\" + internal.outerTickSize + \"V0H\" + internal.range[1] + \"V\" + internal.outerTickSize);\n break;\n }\n\n case \"top\":\n {\n // TODO: rotated tick text\n tickTransform = internal.axisX;\n lineUpdate.attr(\"x1\", tickX).attr(\"x2\", tickX).attr(\"y2\", function (d, i) {\n return -1 * internal.lineY2(d, i);\n });\n textUpdate.attr(\"x\", 0).attr(\"y\", function (d, i) {\n return -1 * internal.textY(d, i) - (params.isCategory ? 2 : internal.tickLength - 2);\n }).attr(\"transform\", function (d, i) {\n return internal.textTransform(d, i);\n }).style(\"text-anchor\", function (d, i) {\n return internal.textTextAnchor(d, i);\n });\n tspanUpdate.attr('x', 0).attr(\"dy\", function (d, i) {\n return internal.tspanDy(d, i);\n }).attr('dx', function (d, i) {\n return internal.tspanDx(d, i);\n });\n pathUpdate.attr(\"d\", \"M\" + internal.range[0] + \",\" + -internal.outerTickSize + \"V0H\" + internal.range[1] + \"V\" + -internal.outerTickSize);\n break;\n }\n\n case \"left\":\n {\n tickTransform = internal.axisY;\n lineUpdate.attr(\"x2\", -internal.innerTickSize).attr(\"y1\", tickY).attr(\"y2\", tickY);\n textUpdate.attr(\"x\", -internal.tickLength).attr(\"y\", internal.tickOffset).style(\"text-anchor\", \"end\");\n tspanUpdate.attr('x', -internal.tickLength).attr(\"dy\", function (d, i) {\n return internal.tspanDy(d, i);\n });\n pathUpdate.attr(\"d\", \"M\" + -internal.outerTickSize + \",\" + internal.range[0] + \"H0V\" + internal.range[1] + \"H\" + -internal.outerTickSize);\n break;\n }\n\n case \"right\":\n {\n tickTransform = internal.axisY;\n lineUpdate.attr(\"x2\", internal.innerTickSize).attr(\"y1\", tickY).attr(\"y2\", tickY);\n textUpdate.attr(\"x\", internal.tickLength).attr(\"y\", internal.tickOffset).style(\"text-anchor\", \"start\");\n tspanUpdate.attr('x', internal.tickLength).attr(\"dy\", function (d, i) {\n return internal.tspanDy(d, i);\n });\n pathUpdate.attr(\"d\", \"M\" + internal.outerTickSize + \",\" + internal.range[0] + \"H0V\" + internal.range[1] + \"H\" + internal.outerTickSize);\n break;\n }\n }\n\n if (scale1.rangeBand) {\n var x = scale1,\n dx = x.rangeBand() / 2;\n\n scale0 = scale1 = function scale1(d) {\n return x(d) + dx;\n };\n } else if (scale0.rangeBand) {\n scale0 = scale1;\n } else {\n tickExit.call(tickTransform, scale1, internal.tickOffset);\n }\n\n tickEnter.call(tickTransform, scale0, internal.tickOffset);\n self = (transition ? tickUpdate.transition(transition) : tickUpdate).style('opacity', 1).call(tickTransform, scale1, internal.tickOffset);\n });\n return self;\n }\n\n axis.scale = function (x) {\n if (!arguments.length) {\n return internal.scale;\n }\n\n internal.scale = x;\n return axis;\n };\n\n axis.orient = function (x) {\n if (!arguments.length) {\n return internal.orient;\n }\n\n internal.orient = x in {\n top: 1,\n right: 1,\n bottom: 1,\n left: 1\n } ? x + \"\" : \"bottom\";\n return axis;\n };\n\n axis.tickFormat = function (format) {\n if (!arguments.length) {\n return internal.tickFormat;\n }\n\n internal.tickFormat = format;\n return axis;\n };\n\n axis.tickCentered = function (isCentered) {\n if (!arguments.length) {\n return internal.tickCentered;\n }\n\n internal.tickCentered = isCentered;\n return axis;\n };\n\n axis.tickOffset = function () {\n return internal.tickOffset;\n };\n\n axis.tickInterval = function () {\n var interval, length;\n\n if (params.isCategory) {\n interval = internal.tickOffset * 2;\n } else {\n length = axis.g.select('path.domain').node().getTotalLength() - internal.outerTickSize * 2;\n interval = length / axis.g.selectAll('line').size();\n }\n\n return interval === Infinity ? 0 : interval;\n };\n\n axis.ticks = function () {\n if (!arguments.length) {\n return internal.tickArguments;\n }\n\n internal.tickArguments = arguments;\n return axis;\n };\n\n axis.tickCulling = function (culling) {\n if (!arguments.length) {\n return internal.tickCulling;\n }\n\n internal.tickCulling = culling;\n return axis;\n };\n\n axis.tickValues = function (x) {\n if (typeof x === 'function') {\n internal.tickValues = function () {\n return x(internal.scale.domain());\n };\n } else {\n if (!arguments.length) {\n return internal.tickValues;\n }\n\n internal.tickValues = x;\n }\n\n return axis;\n };\n\n return axis;\n };\n\n var CLASS = {\n target: 'c3-target',\n chart: 'c3-chart',\n chartLine: 'c3-chart-line',\n chartLines: 'c3-chart-lines',\n chartBar: 'c3-chart-bar',\n chartBars: 'c3-chart-bars',\n chartText: 'c3-chart-text',\n chartTexts: 'c3-chart-texts',\n chartArc: 'c3-chart-arc',\n chartArcs: 'c3-chart-arcs',\n chartArcsTitle: 'c3-chart-arcs-title',\n chartArcsBackground: 'c3-chart-arcs-background',\n chartArcsGaugeUnit: 'c3-chart-arcs-gauge-unit',\n chartArcsGaugeMax: 'c3-chart-arcs-gauge-max',\n chartArcsGaugeMin: 'c3-chart-arcs-gauge-min',\n selectedCircle: 'c3-selected-circle',\n selectedCircles: 'c3-selected-circles',\n eventRect: 'c3-event-rect',\n eventRects: 'c3-event-rects',\n eventRectsSingle: 'c3-event-rects-single',\n eventRectsMultiple: 'c3-event-rects-multiple',\n zoomRect: 'c3-zoom-rect',\n brush: 'c3-brush',\n dragZoom: 'c3-drag-zoom',\n focused: 'c3-focused',\n defocused: 'c3-defocused',\n region: 'c3-region',\n regions: 'c3-regions',\n title: 'c3-title',\n tooltipContainer: 'c3-tooltip-container',\n tooltip: 'c3-tooltip',\n tooltipName: 'c3-tooltip-name',\n shape: 'c3-shape',\n shapes: 'c3-shapes',\n line: 'c3-line',\n lines: 'c3-lines',\n bar: 'c3-bar',\n bars: 'c3-bars',\n circle: 'c3-circle',\n circles: 'c3-circles',\n arc: 'c3-arc',\n arcLabelLine: 'c3-arc-label-line',\n arcs: 'c3-arcs',\n area: 'c3-area',\n areas: 'c3-areas',\n empty: 'c3-empty',\n text: 'c3-text',\n texts: 'c3-texts',\n gaugeValue: 'c3-gauge-value',\n grid: 'c3-grid',\n gridLines: 'c3-grid-lines',\n xgrid: 'c3-xgrid',\n xgrids: 'c3-xgrids',\n xgridLine: 'c3-xgrid-line',\n xgridLines: 'c3-xgrid-lines',\n xgridFocus: 'c3-xgrid-focus',\n ygrid: 'c3-ygrid',\n ygrids: 'c3-ygrids',\n ygridLine: 'c3-ygrid-line',\n ygridLines: 'c3-ygrid-lines',\n axis: 'c3-axis',\n axisX: 'c3-axis-x',\n axisXLabel: 'c3-axis-x-label',\n axisY: 'c3-axis-y',\n axisYLabel: 'c3-axis-y-label',\n axisY2: 'c3-axis-y2',\n axisY2Label: 'c3-axis-y2-label',\n legendBackground: 'c3-legend-background',\n legendItem: 'c3-legend-item',\n legendItemEvent: 'c3-legend-item-event',\n legendItemTile: 'c3-legend-item-tile',\n legendItemHidden: 'c3-legend-item-hidden',\n legendItemFocused: 'c3-legend-item-focused',\n dragarea: 'c3-dragarea',\n EXPANDED: '_expanded_',\n SELECTED: '_selected_',\n INCLUDED: '_included_'\n };\n\n var asHalfPixel = function asHalfPixel(n) {\n return Math.ceil(n) + 0.5;\n };\n var ceil10 = function ceil10(v) {\n return Math.ceil(v / 10) * 10;\n };\n var diffDomain = function diffDomain(d) {\n return d[1] - d[0];\n };\n var getOption = function getOption(options, key, defaultValue) {\n return isDefined(options[key]) ? options[key] : defaultValue;\n };\n var getPathBox = function getPathBox(path) {\n var box = path.getBoundingClientRect(),\n items = [path.pathSegList.getItem(0), path.pathSegList.getItem(1)],\n minX = items[0].x,\n minY = Math.min(items[0].y, items[1].y);\n return {\n x: minX,\n y: minY,\n width: box.width,\n height: box.height\n };\n };\n var hasValue = function hasValue(dict, value) {\n var found = false;\n Object.keys(dict).forEach(function (key) {\n if (dict[key] === value) {\n found = true;\n }\n });\n return found;\n };\n var isArray = function isArray(o) {\n return Array.isArray(o);\n };\n var isDefined = function isDefined(v) {\n return typeof v !== 'undefined';\n };\n var isEmpty = function isEmpty(o) {\n return typeof o === 'undefined' || o === null || isString(o) && o.length === 0 || _typeof(o) === 'object' && Object.keys(o).length === 0;\n };\n var isFunction = function isFunction(o) {\n return typeof o === 'function';\n };\n var isString = function isString(o) {\n return typeof o === 'string';\n };\n var isUndefined = function isUndefined(v) {\n return typeof v === 'undefined';\n };\n var isValue = function isValue(v) {\n return v || v === 0;\n };\n var notEmpty = function notEmpty(o) {\n return !isEmpty(o);\n };\n var sanitise = function sanitise(str) {\n return typeof str === 'string' ? str.replace(//g, '>') : str;\n };\n\n var Axis = function Axis(owner) {\n _classCallCheck(this, Axis);\n\n this.owner = owner;\n this.d3 = owner.d3;\n this.internal = AxisInternal;\n };\n\n Axis.prototype.init = function init() {\n var $$ = this.owner,\n config = $$.config,\n main = $$.main;\n $$.axes.x = main.append(\"g\").attr(\"class\", CLASS.axis + ' ' + CLASS.axisX).attr(\"clip-path\", config.axis_x_inner ? \"\" : $$.clipPathForXAxis).attr(\"transform\", $$.getTranslate('x')).style(\"visibility\", config.axis_x_show ? 'visible' : 'hidden');\n $$.axes.x.append(\"text\").attr(\"class\", CLASS.axisXLabel).attr(\"transform\", config.axis_rotated ? \"rotate(-90)\" : \"\").style(\"text-anchor\", this.textAnchorForXAxisLabel.bind(this));\n $$.axes.y = main.append(\"g\").attr(\"class\", CLASS.axis + ' ' + CLASS.axisY).attr(\"clip-path\", config.axis_y_inner ? \"\" : $$.clipPathForYAxis).attr(\"transform\", $$.getTranslate('y')).style(\"visibility\", config.axis_y_show ? 'visible' : 'hidden');\n $$.axes.y.append(\"text\").attr(\"class\", CLASS.axisYLabel).attr(\"transform\", config.axis_rotated ? \"\" : \"rotate(-90)\").style(\"text-anchor\", this.textAnchorForYAxisLabel.bind(this));\n $$.axes.y2 = main.append(\"g\").attr(\"class\", CLASS.axis + ' ' + CLASS.axisY2) // clip-path?\n .attr(\"transform\", $$.getTranslate('y2')).style(\"visibility\", config.axis_y2_show ? 'visible' : 'hidden');\n $$.axes.y2.append(\"text\").attr(\"class\", CLASS.axisY2Label).attr(\"transform\", config.axis_rotated ? \"\" : \"rotate(-90)\").style(\"text-anchor\", this.textAnchorForY2AxisLabel.bind(this));\n };\n\n Axis.prototype.getXAxis = function getXAxis(scale, orient, tickFormat, tickValues, withOuterTick, withoutTransition, withoutRotateTickText) {\n var $$ = this.owner,\n config = $$.config,\n axisParams = {\n isCategory: $$.isCategorized(),\n withOuterTick: withOuterTick,\n tickMultiline: config.axis_x_tick_multiline,\n tickMultilineMax: config.axis_x_tick_multiline ? Number(config.axis_x_tick_multilineMax) : 0,\n tickWidth: config.axis_x_tick_width,\n tickTextRotate: withoutRotateTickText ? 0 : config.axis_x_tick_rotate,\n withoutTransition: withoutTransition\n },\n axis = new this.internal(this, axisParams).axis.scale(scale).orient(orient);\n\n if ($$.isTimeSeries() && tickValues && typeof tickValues !== \"function\") {\n tickValues = tickValues.map(function (v) {\n return $$.parseDate(v);\n });\n } // Set tick\n\n\n axis.tickFormat(tickFormat).tickValues(tickValues);\n\n if ($$.isCategorized()) {\n axis.tickCentered(config.axis_x_tick_centered);\n\n if (isEmpty(config.axis_x_tick_culling)) {\n config.axis_x_tick_culling = false;\n }\n }\n\n return axis;\n };\n\n Axis.prototype.updateXAxisTickValues = function updateXAxisTickValues(targets, axis) {\n var $$ = this.owner,\n config = $$.config,\n tickValues;\n\n if (config.axis_x_tick_fit || config.axis_x_tick_count) {\n tickValues = this.generateTickValues($$.mapTargetsToUniqueXs(targets), config.axis_x_tick_count, $$.isTimeSeries());\n }\n\n if (axis) {\n axis.tickValues(tickValues);\n } else {\n $$.xAxis.tickValues(tickValues);\n $$.subXAxis.tickValues(tickValues);\n }\n\n return tickValues;\n };\n\n Axis.prototype.getYAxis = function getYAxis(scale, orient, tickFormat, tickValues, withOuterTick, withoutTransition, withoutRotateTickText) {\n var $$ = this.owner,\n config = $$.config,\n axisParams = {\n withOuterTick: withOuterTick,\n withoutTransition: withoutTransition,\n tickTextRotate: withoutRotateTickText ? 0 : config.axis_y_tick_rotate\n },\n axis = new this.internal(this, axisParams).axis.scale(scale).orient(orient).tickFormat(tickFormat);\n\n if ($$.isTimeSeriesY()) {\n axis.ticks(config.axis_y_tick_time_type, config.axis_y_tick_time_interval);\n } else {\n axis.tickValues(tickValues);\n }\n\n return axis;\n };\n\n Axis.prototype.getId = function getId(id) {\n var config = this.owner.config;\n return id in config.data_axes ? config.data_axes[id] : 'y';\n };\n\n Axis.prototype.getXAxisTickFormat = function getXAxisTickFormat() {\n // #2251 previously set any negative values to a whole number,\n // however both should be truncated according to the users format specification\n var $$ = this.owner,\n config = $$.config;\n var format = $$.isTimeSeries() ? $$.defaultAxisTimeFormat : $$.isCategorized() ? $$.categoryName : function (v) {\n return v;\n };\n\n if (config.axis_x_tick_format) {\n if (isFunction(config.axis_x_tick_format)) {\n format = config.axis_x_tick_format;\n } else if ($$.isTimeSeries()) {\n format = function format(date) {\n return date ? $$.axisTimeFormat(config.axis_x_tick_format)(date) : \"\";\n };\n }\n }\n\n return isFunction(format) ? function (v) {\n return format.call($$, v);\n } : format;\n };\n\n Axis.prototype.getTickValues = function getTickValues(tickValues, axis) {\n return tickValues ? tickValues : axis ? axis.tickValues() : undefined;\n };\n\n Axis.prototype.getXAxisTickValues = function getXAxisTickValues() {\n return this.getTickValues(this.owner.config.axis_x_tick_values, this.owner.xAxis);\n };\n\n Axis.prototype.getYAxisTickValues = function getYAxisTickValues() {\n return this.getTickValues(this.owner.config.axis_y_tick_values, this.owner.yAxis);\n };\n\n Axis.prototype.getY2AxisTickValues = function getY2AxisTickValues() {\n return this.getTickValues(this.owner.config.axis_y2_tick_values, this.owner.y2Axis);\n };\n\n Axis.prototype.getLabelOptionByAxisId = function getLabelOptionByAxisId(axisId) {\n var $$ = this.owner,\n config = $$.config,\n option;\n\n if (axisId === 'y') {\n option = config.axis_y_label;\n } else if (axisId === 'y2') {\n option = config.axis_y2_label;\n } else if (axisId === 'x') {\n option = config.axis_x_label;\n }\n\n return option;\n };\n\n Axis.prototype.getLabelText = function getLabelText(axisId) {\n var option = this.getLabelOptionByAxisId(axisId);\n return isString(option) ? option : option ? option.text : null;\n };\n\n Axis.prototype.setLabelText = function setLabelText(axisId, text) {\n var $$ = this.owner,\n config = $$.config,\n option = this.getLabelOptionByAxisId(axisId);\n\n if (isString(option)) {\n if (axisId === 'y') {\n config.axis_y_label = text;\n } else if (axisId === 'y2') {\n config.axis_y2_label = text;\n } else if (axisId === 'x') {\n config.axis_x_label = text;\n }\n } else if (option) {\n option.text = text;\n }\n };\n\n Axis.prototype.getLabelPosition = function getLabelPosition(axisId, defaultPosition) {\n var option = this.getLabelOptionByAxisId(axisId),\n position = option && _typeof(option) === 'object' && option.position ? option.position : defaultPosition;\n return {\n isInner: position.indexOf('inner') >= 0,\n isOuter: position.indexOf('outer') >= 0,\n isLeft: position.indexOf('left') >= 0,\n isCenter: position.indexOf('center') >= 0,\n isRight: position.indexOf('right') >= 0,\n isTop: position.indexOf('top') >= 0,\n isMiddle: position.indexOf('middle') >= 0,\n isBottom: position.indexOf('bottom') >= 0\n };\n };\n\n Axis.prototype.getXAxisLabelPosition = function getXAxisLabelPosition() {\n return this.getLabelPosition('x', this.owner.config.axis_rotated ? 'inner-top' : 'inner-right');\n };\n\n Axis.prototype.getYAxisLabelPosition = function getYAxisLabelPosition() {\n return this.getLabelPosition('y', this.owner.config.axis_rotated ? 'inner-right' : 'inner-top');\n };\n\n Axis.prototype.getY2AxisLabelPosition = function getY2AxisLabelPosition() {\n return this.getLabelPosition('y2', this.owner.config.axis_rotated ? 'inner-right' : 'inner-top');\n };\n\n Axis.prototype.getLabelPositionById = function getLabelPositionById(id) {\n return id === 'y2' ? this.getY2AxisLabelPosition() : id === 'y' ? this.getYAxisLabelPosition() : this.getXAxisLabelPosition();\n };\n\n Axis.prototype.textForXAxisLabel = function textForXAxisLabel() {\n return this.getLabelText('x');\n };\n\n Axis.prototype.textForYAxisLabel = function textForYAxisLabel() {\n return this.getLabelText('y');\n };\n\n Axis.prototype.textForY2AxisLabel = function textForY2AxisLabel() {\n return this.getLabelText('y2');\n };\n\n Axis.prototype.xForAxisLabel = function xForAxisLabel(forHorizontal, position) {\n var $$ = this.owner;\n\n if (forHorizontal) {\n return position.isLeft ? 0 : position.isCenter ? $$.width / 2 : $$.width;\n } else {\n return position.isBottom ? -$$.height : position.isMiddle ? -$$.height / 2 : 0;\n }\n };\n\n Axis.prototype.dxForAxisLabel = function dxForAxisLabel(forHorizontal, position) {\n if (forHorizontal) {\n return position.isLeft ? \"0.5em\" : position.isRight ? \"-0.5em\" : \"0\";\n } else {\n return position.isTop ? \"-0.5em\" : position.isBottom ? \"0.5em\" : \"0\";\n }\n };\n\n Axis.prototype.textAnchorForAxisLabel = function textAnchorForAxisLabel(forHorizontal, position) {\n if (forHorizontal) {\n return position.isLeft ? 'start' : position.isCenter ? 'middle' : 'end';\n } else {\n return position.isBottom ? 'start' : position.isMiddle ? 'middle' : 'end';\n }\n };\n\n Axis.prototype.xForXAxisLabel = function xForXAxisLabel() {\n return this.xForAxisLabel(!this.owner.config.axis_rotated, this.getXAxisLabelPosition());\n };\n\n Axis.prototype.xForYAxisLabel = function xForYAxisLabel() {\n return this.xForAxisLabel(this.owner.config.axis_rotated, this.getYAxisLabelPosition());\n };\n\n Axis.prototype.xForY2AxisLabel = function xForY2AxisLabel() {\n return this.xForAxisLabel(this.owner.config.axis_rotated, this.getY2AxisLabelPosition());\n };\n\n Axis.prototype.dxForXAxisLabel = function dxForXAxisLabel() {\n return this.dxForAxisLabel(!this.owner.config.axis_rotated, this.getXAxisLabelPosition());\n };\n\n Axis.prototype.dxForYAxisLabel = function dxForYAxisLabel() {\n return this.dxForAxisLabel(this.owner.config.axis_rotated, this.getYAxisLabelPosition());\n };\n\n Axis.prototype.dxForY2AxisLabel = function dxForY2AxisLabel() {\n return this.dxForAxisLabel(this.owner.config.axis_rotated, this.getY2AxisLabelPosition());\n };\n\n Axis.prototype.dyForXAxisLabel = function dyForXAxisLabel() {\n var $$ = this.owner,\n config = $$.config,\n position = this.getXAxisLabelPosition();\n\n if (config.axis_rotated) {\n return position.isInner ? \"1.2em\" : -25 - ($$.config.axis_x_inner ? 0 : this.getMaxTickWidth('x'));\n } else {\n return position.isInner ? \"-0.5em\" : config.axis_x_height ? config.axis_x_height - 10 : \"3em\";\n }\n };\n\n Axis.prototype.dyForYAxisLabel = function dyForYAxisLabel() {\n var $$ = this.owner,\n position = this.getYAxisLabelPosition();\n\n if ($$.config.axis_rotated) {\n return position.isInner ? \"-0.5em\" : \"3em\";\n } else {\n return position.isInner ? \"1.2em\" : -10 - ($$.config.axis_y_inner ? 0 : this.getMaxTickWidth('y') + 10);\n }\n };\n\n Axis.prototype.dyForY2AxisLabel = function dyForY2AxisLabel() {\n var $$ = this.owner,\n position = this.getY2AxisLabelPosition();\n\n if ($$.config.axis_rotated) {\n return position.isInner ? \"1.2em\" : \"-2.2em\";\n } else {\n return position.isInner ? \"-0.5em\" : 15 + ($$.config.axis_y2_inner ? 0 : this.getMaxTickWidth('y2') + 15);\n }\n };\n\n Axis.prototype.textAnchorForXAxisLabel = function textAnchorForXAxisLabel() {\n var $$ = this.owner;\n return this.textAnchorForAxisLabel(!$$.config.axis_rotated, this.getXAxisLabelPosition());\n };\n\n Axis.prototype.textAnchorForYAxisLabel = function textAnchorForYAxisLabel() {\n var $$ = this.owner;\n return this.textAnchorForAxisLabel($$.config.axis_rotated, this.getYAxisLabelPosition());\n };\n\n Axis.prototype.textAnchorForY2AxisLabel = function textAnchorForY2AxisLabel() {\n var $$ = this.owner;\n return this.textAnchorForAxisLabel($$.config.axis_rotated, this.getY2AxisLabelPosition());\n };\n\n Axis.prototype.getMaxTickWidth = function getMaxTickWidth(id, withoutRecompute) {\n var $$ = this.owner,\n config = $$.config,\n maxWidth = 0,\n targetsToShow,\n scale,\n axis,\n dummy,\n svg;\n\n if (withoutRecompute && $$.currentMaxTickWidths[id]) {\n return $$.currentMaxTickWidths[id];\n }\n\n if ($$.svg) {\n targetsToShow = $$.filterTargetsToShow($$.data.targets);\n\n if (id === 'y') {\n scale = $$.y.copy().domain($$.getYDomain(targetsToShow, 'y'));\n axis = this.getYAxis(scale, $$.yOrient, config.axis_y_tick_format, $$.yAxisTickValues, false, true, true);\n } else if (id === 'y2') {\n scale = $$.y2.copy().domain($$.getYDomain(targetsToShow, 'y2'));\n axis = this.getYAxis(scale, $$.y2Orient, config.axis_y2_tick_format, $$.y2AxisTickValues, false, true, true);\n } else {\n scale = $$.x.copy().domain($$.getXDomain(targetsToShow));\n axis = this.getXAxis(scale, $$.xOrient, $$.xAxisTickFormat, $$.xAxisTickValues, false, true, true);\n this.updateXAxisTickValues(targetsToShow, axis);\n }\n\n dummy = $$.d3.select('body').append('div').classed('c3', true);\n svg = dummy.append(\"svg\").style('visibility', 'hidden').style('position', 'fixed').style('top', 0).style('left', 0), svg.append('g').call(axis).each(function () {\n $$.d3.select(this).selectAll('text').each(function () {\n var box = this.getBoundingClientRect();\n\n if (maxWidth < box.width) {\n maxWidth = box.width;\n }\n });\n dummy.remove();\n });\n }\n\n $$.currentMaxTickWidths[id] = maxWidth <= 0 ? $$.currentMaxTickWidths[id] : maxWidth;\n return $$.currentMaxTickWidths[id];\n };\n\n Axis.prototype.updateLabels = function updateLabels(withTransition) {\n var $$ = this.owner;\n var axisXLabel = $$.main.select('.' + CLASS.axisX + ' .' + CLASS.axisXLabel),\n axisYLabel = $$.main.select('.' + CLASS.axisY + ' .' + CLASS.axisYLabel),\n axisY2Label = $$.main.select('.' + CLASS.axisY2 + ' .' + CLASS.axisY2Label);\n (withTransition ? axisXLabel.transition() : axisXLabel).attr(\"x\", this.xForXAxisLabel.bind(this)).attr(\"dx\", this.dxForXAxisLabel.bind(this)).attr(\"dy\", this.dyForXAxisLabel.bind(this)).text(this.textForXAxisLabel.bind(this));\n (withTransition ? axisYLabel.transition() : axisYLabel).attr(\"x\", this.xForYAxisLabel.bind(this)).attr(\"dx\", this.dxForYAxisLabel.bind(this)).attr(\"dy\", this.dyForYAxisLabel.bind(this)).text(this.textForYAxisLabel.bind(this));\n (withTransition ? axisY2Label.transition() : axisY2Label).attr(\"x\", this.xForY2AxisLabel.bind(this)).attr(\"dx\", this.dxForY2AxisLabel.bind(this)).attr(\"dy\", this.dyForY2AxisLabel.bind(this)).text(this.textForY2AxisLabel.bind(this));\n };\n\n Axis.prototype.getPadding = function getPadding(padding, key, defaultValue, domainLength) {\n var p = typeof padding === 'number' ? padding : padding[key];\n\n if (!isValue(p)) {\n return defaultValue;\n }\n\n if (padding.unit === 'ratio') {\n return padding[key] * domainLength;\n } // assume padding is pixels if unit is not specified\n\n\n return this.convertPixelsToAxisPadding(p, domainLength);\n };\n\n Axis.prototype.convertPixelsToAxisPadding = function convertPixelsToAxisPadding(pixels, domainLength) {\n var $$ = this.owner,\n length = $$.config.axis_rotated ? $$.width : $$.height;\n return domainLength * (pixels / length);\n };\n\n Axis.prototype.generateTickValues = function generateTickValues(values, tickCount, forTimeSeries) {\n var tickValues = values,\n targetCount,\n start,\n end,\n count,\n interval,\n i,\n tickValue;\n\n if (tickCount) {\n targetCount = isFunction(tickCount) ? tickCount() : tickCount; // compute ticks according to tickCount\n\n if (targetCount === 1) {\n tickValues = [values[0]];\n } else if (targetCount === 2) {\n tickValues = [values[0], values[values.length - 1]];\n } else if (targetCount > 2) {\n count = targetCount - 2;\n start = values[0];\n end = values[values.length - 1];\n interval = (end - start) / (count + 1); // re-construct unique values\n\n tickValues = [start];\n\n for (i = 0; i < count; i++) {\n tickValue = +start + interval * (i + 1);\n tickValues.push(forTimeSeries ? new Date(tickValue) : tickValue);\n }\n\n tickValues.push(end);\n }\n }\n\n if (!forTimeSeries) {\n tickValues = tickValues.sort(function (a, b) {\n return a - b;\n });\n }\n\n return tickValues;\n };\n\n Axis.prototype.generateTransitions = function generateTransitions(duration) {\n var $$ = this.owner,\n axes = $$.axes;\n return {\n axisX: duration ? axes.x.transition().duration(duration) : axes.x,\n axisY: duration ? axes.y.transition().duration(duration) : axes.y,\n axisY2: duration ? axes.y2.transition().duration(duration) : axes.y2,\n axisSubX: duration ? axes.subx.transition().duration(duration) : axes.subx\n };\n };\n\n Axis.prototype.redraw = function redraw(duration, isHidden) {\n var $$ = this.owner,\n transition = duration ? $$.d3.transition().duration(duration) : null;\n $$.axes.x.style(\"opacity\", isHidden ? 0 : 1).call($$.xAxis, transition);\n $$.axes.y.style(\"opacity\", isHidden ? 0 : 1).call($$.yAxis, transition);\n $$.axes.y2.style(\"opacity\", isHidden ? 0 : 1).call($$.y2Axis, transition);\n $$.axes.subx.style(\"opacity\", isHidden ? 0 : 1).call($$.subXAxis, transition);\n };\n\n var c3 = {\n version: \"0.6.14\",\n chart: {\n fn: Chart.prototype,\n internal: {\n fn: ChartInternal.prototype,\n axis: {\n fn: Axis.prototype,\n internal: {\n fn: AxisInternal.prototype\n }\n }\n }\n },\n generate: function generate(config) {\n return new Chart(config);\n }\n };\n\n ChartInternal.prototype.beforeInit = function () {// can do something\n };\n\n ChartInternal.prototype.afterInit = function () {// can do something\n };\n\n ChartInternal.prototype.init = function () {\n var $$ = this,\n config = $$.config;\n $$.initParams();\n\n if (config.data_url) {\n $$.convertUrlToData(config.data_url, config.data_mimeType, config.data_headers, config.data_keys, $$.initWithData);\n } else if (config.data_json) {\n $$.initWithData($$.convertJsonToData(config.data_json, config.data_keys));\n } else if (config.data_rows) {\n $$.initWithData($$.convertRowsToData(config.data_rows));\n } else if (config.data_columns) {\n $$.initWithData($$.convertColumnsToData(config.data_columns));\n } else {\n throw Error('url or json or rows or columns is required.');\n }\n };\n\n ChartInternal.prototype.initParams = function () {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config; // MEMO: clipId needs to be unique because it conflicts when multiple charts exist\n\n $$.clipId = \"c3-\" + +new Date() + '-clip';\n $$.clipIdForXAxis = $$.clipId + '-xaxis';\n $$.clipIdForYAxis = $$.clipId + '-yaxis';\n $$.clipIdForGrid = $$.clipId + '-grid';\n $$.clipIdForSubchart = $$.clipId + '-subchart';\n $$.clipPath = $$.getClipPath($$.clipId);\n $$.clipPathForXAxis = $$.getClipPath($$.clipIdForXAxis);\n $$.clipPathForYAxis = $$.getClipPath($$.clipIdForYAxis);\n $$.clipPathForGrid = $$.getClipPath($$.clipIdForGrid);\n $$.clipPathForSubchart = $$.getClipPath($$.clipIdForSubchart);\n $$.dragStart = null;\n $$.dragging = false;\n $$.flowing = false;\n $$.cancelClick = false;\n $$.mouseover = false;\n $$.transiting = false;\n $$.color = $$.generateColor();\n $$.levelColor = $$.generateLevelColor();\n $$.dataTimeParse = (config.data_xLocaltime ? d3.timeParse : d3.utcParse)($$.config.data_xFormat);\n $$.axisTimeFormat = config.axis_x_localtime ? d3.timeFormat : d3.utcFormat;\n\n $$.defaultAxisTimeFormat = function (date) {\n if (date.getMilliseconds()) {\n return d3.timeFormat(\".%L\")(date);\n }\n\n if (date.getSeconds()) {\n return d3.timeFormat(\":%S\")(date);\n }\n\n if (date.getMinutes()) {\n return d3.timeFormat(\"%I:%M\")(date);\n }\n\n if (date.getHours()) {\n return d3.timeFormat(\"%I %p\")(date);\n }\n\n if (date.getDay() && date.getDate() !== 1) {\n return d3.timeFormat(\"%-m/%-d\")(date);\n }\n\n if (date.getDate() !== 1) {\n return d3.timeFormat(\"%-m/%-d\")(date);\n }\n\n if (date.getMonth()) {\n return d3.timeFormat(\"%-m/%-d\")(date);\n }\n\n return d3.timeFormat(\"%Y/%-m/%-d\")(date);\n };\n\n $$.hiddenTargetIds = [];\n $$.hiddenLegendIds = [];\n $$.focusedTargetIds = [];\n $$.defocusedTargetIds = [];\n $$.xOrient = config.axis_rotated ? config.axis_x_inner ? \"right\" : \"left\" : config.axis_x_inner ? \"top\" : \"bottom\";\n $$.yOrient = config.axis_rotated ? config.axis_y_inner ? \"top\" : \"bottom\" : config.axis_y_inner ? \"right\" : \"left\";\n $$.y2Orient = config.axis_rotated ? config.axis_y2_inner ? \"bottom\" : \"top\" : config.axis_y2_inner ? \"left\" : \"right\";\n $$.subXOrient = config.axis_rotated ? \"left\" : \"bottom\";\n $$.isLegendRight = config.legend_position === 'right';\n $$.isLegendInset = config.legend_position === 'inset';\n $$.isLegendTop = config.legend_inset_anchor === 'top-left' || config.legend_inset_anchor === 'top-right';\n $$.isLegendLeft = config.legend_inset_anchor === 'top-left' || config.legend_inset_anchor === 'bottom-left';\n $$.legendStep = 0;\n $$.legendItemWidth = 0;\n $$.legendItemHeight = 0;\n $$.currentMaxTickWidths = {\n x: 0,\n y: 0,\n y2: 0\n };\n $$.rotated_padding_left = 30;\n $$.rotated_padding_right = config.axis_rotated && !config.axis_x_show ? 0 : 30;\n $$.rotated_padding_top = 5;\n $$.withoutFadeIn = {};\n $$.intervalForObserveInserted = undefined;\n $$.axes.subx = d3.selectAll([]); // needs when excluding subchart.js\n };\n\n ChartInternal.prototype.initChartElements = function () {\n if (this.initBar) {\n this.initBar();\n }\n\n if (this.initLine) {\n this.initLine();\n }\n\n if (this.initArc) {\n this.initArc();\n }\n\n if (this.initGauge) {\n this.initGauge();\n }\n\n if (this.initText) {\n this.initText();\n }\n };\n\n ChartInternal.prototype.initWithData = function (data) {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config;\n var defs,\n main,\n binding = true;\n $$.axis = new Axis($$);\n\n if (!config.bindto) {\n $$.selectChart = d3.selectAll([]);\n } else if (typeof config.bindto.node === 'function') {\n $$.selectChart = config.bindto;\n } else {\n $$.selectChart = d3.select(config.bindto);\n }\n\n if ($$.selectChart.empty()) {\n $$.selectChart = d3.select(document.createElement('div')).style('opacity', 0);\n $$.observeInserted($$.selectChart);\n binding = false;\n }\n\n $$.selectChart.html(\"\").classed(\"c3\", true); // Init data as targets\n\n $$.data.xs = {};\n $$.data.targets = $$.convertDataToTargets(data);\n\n if (config.data_filter) {\n $$.data.targets = $$.data.targets.filter(config.data_filter);\n } // Set targets to hide if needed\n\n\n if (config.data_hide) {\n $$.addHiddenTargetIds(config.data_hide === true ? $$.mapToIds($$.data.targets) : config.data_hide);\n }\n\n if (config.legend_hide) {\n $$.addHiddenLegendIds(config.legend_hide === true ? $$.mapToIds($$.data.targets) : config.legend_hide);\n } // Init sizes and scales\n\n\n $$.updateSizes();\n $$.updateScales(); // Set domains for each scale\n\n $$.x.domain(d3.extent($$.getXDomain($$.data.targets)));\n $$.y.domain($$.getYDomain($$.data.targets, 'y'));\n $$.y2.domain($$.getYDomain($$.data.targets, 'y2'));\n $$.subX.domain($$.x.domain());\n $$.subY.domain($$.y.domain());\n $$.subY2.domain($$.y2.domain()); // Save original x domain for zoom update\n\n $$.orgXDomain = $$.x.domain();\n /*-- Basic Elements --*/\n // Define svgs\n\n $$.svg = $$.selectChart.append(\"svg\").style(\"overflow\", \"hidden\").on('mouseenter', function () {\n return config.onmouseover.call($$);\n }).on('mouseleave', function () {\n return config.onmouseout.call($$);\n });\n\n if ($$.config.svg_classname) {\n $$.svg.attr('class', $$.config.svg_classname);\n } // Define defs\n\n\n defs = $$.svg.append(\"defs\");\n $$.clipChart = $$.appendClip(defs, $$.clipId);\n $$.clipXAxis = $$.appendClip(defs, $$.clipIdForXAxis);\n $$.clipYAxis = $$.appendClip(defs, $$.clipIdForYAxis);\n $$.clipGrid = $$.appendClip(defs, $$.clipIdForGrid);\n $$.clipSubchart = $$.appendClip(defs, $$.clipIdForSubchart);\n $$.updateSvgSize(); // Define regions\n\n main = $$.main = $$.svg.append(\"g\").attr(\"transform\", $$.getTranslate('main'));\n\n if ($$.initPie) {\n $$.initPie();\n }\n\n if ($$.initDragZoom) {\n $$.initDragZoom();\n }\n\n if ($$.initSubchart) {\n $$.initSubchart();\n }\n\n if ($$.initTooltip) {\n $$.initTooltip();\n }\n\n if ($$.initLegend) {\n $$.initLegend();\n }\n\n if ($$.initTitle) {\n $$.initTitle();\n }\n\n if ($$.initZoom) {\n $$.initZoom();\n } // Update selection based on size and scale\n // TODO: currently this must be called after initLegend because of update of sizes, but it should be done in initSubchart.\n\n\n if ($$.initSubchartBrush) {\n $$.initSubchartBrush();\n }\n /*-- Main Region --*/\n // text when empty\n\n\n main.append(\"text\").attr(\"class\", CLASS.text + ' ' + CLASS.empty).attr(\"text-anchor\", \"middle\") // horizontal centering of text at x position in all browsers.\n .attr(\"dominant-baseline\", \"middle\"); // vertical centering of text at y position in all browsers, except IE.\n // Regions\n\n $$.initRegion(); // Grids\n\n $$.initGrid(); // Define g for chart area\n\n main.append('g').attr(\"clip-path\", $$.clipPath).attr('class', CLASS.chart); // Grid lines\n\n if (config.grid_lines_front) {\n $$.initGridLines();\n } // Cover whole with rects for events\n\n\n $$.initEventRect(); // Define g for chart\n\n $$.initChartElements(); // Add Axis\n\n $$.axis.init(); // Set targets\n\n $$.updateTargets($$.data.targets); // Set default extent if defined\n\n if (config.axis_x_selection) {\n $$.brush.selectionAsValue($$.getDefaultSelection());\n } // Draw with targets\n\n\n if (binding) {\n $$.updateDimension();\n $$.config.oninit.call($$);\n $$.redraw({\n withTransition: false,\n withTransform: true,\n withUpdateXDomain: true,\n withUpdateOrgXDomain: true,\n withTransitionForAxis: false\n });\n } // Bind to resize event\n\n\n $$.bindResize(); // Bind to window focus event\n\n $$.bindWindowFocus(); // export element of the chart\n\n $$.api.element = $$.selectChart.node();\n };\n\n ChartInternal.prototype.smoothLines = function (el, type) {\n var $$ = this;\n\n if (type === 'grid') {\n el.each(function () {\n var g = $$.d3.select(this),\n x1 = g.attr('x1'),\n x2 = g.attr('x2'),\n y1 = g.attr('y1'),\n y2 = g.attr('y2');\n g.attr({\n 'x1': Math.ceil(x1),\n 'x2': Math.ceil(x2),\n 'y1': Math.ceil(y1),\n 'y2': Math.ceil(y2)\n });\n });\n }\n };\n\n ChartInternal.prototype.updateSizes = function () {\n var $$ = this,\n config = $$.config;\n var legendHeight = $$.legend ? $$.getLegendHeight() : 0,\n legendWidth = $$.legend ? $$.getLegendWidth() : 0,\n legendHeightForBottom = $$.isLegendRight || $$.isLegendInset ? 0 : legendHeight,\n hasArc = $$.hasArcType(),\n xAxisHeight = config.axis_rotated || hasArc ? 0 : $$.getHorizontalAxisHeight('x'),\n subchartHeight = config.subchart_show && !hasArc ? config.subchart_size_height + xAxisHeight : 0;\n $$.currentWidth = $$.getCurrentWidth();\n $$.currentHeight = $$.getCurrentHeight(); // for main\n\n $$.margin = config.axis_rotated ? {\n top: $$.getHorizontalAxisHeight('y2') + $$.getCurrentPaddingTop(),\n right: hasArc ? 0 : $$.getCurrentPaddingRight(),\n bottom: $$.getHorizontalAxisHeight('y') + legendHeightForBottom + $$.getCurrentPaddingBottom(),\n left: subchartHeight + (hasArc ? 0 : $$.getCurrentPaddingLeft())\n } : {\n top: 4 + $$.getCurrentPaddingTop(),\n // for top tick text\n right: hasArc ? 0 : $$.getCurrentPaddingRight(),\n bottom: xAxisHeight + subchartHeight + legendHeightForBottom + $$.getCurrentPaddingBottom(),\n left: hasArc ? 0 : $$.getCurrentPaddingLeft()\n }; // for subchart\n\n $$.margin2 = config.axis_rotated ? {\n top: $$.margin.top,\n right: NaN,\n bottom: 20 + legendHeightForBottom,\n left: $$.rotated_padding_left\n } : {\n top: $$.currentHeight - subchartHeight - legendHeightForBottom,\n right: NaN,\n bottom: xAxisHeight + legendHeightForBottom,\n left: $$.margin.left\n }; // for legend\n\n $$.margin3 = {\n top: 0,\n right: NaN,\n bottom: 0,\n left: 0\n };\n\n if ($$.updateSizeForLegend) {\n $$.updateSizeForLegend(legendHeight, legendWidth);\n }\n\n $$.width = $$.currentWidth - $$.margin.left - $$.margin.right;\n $$.height = $$.currentHeight - $$.margin.top - $$.margin.bottom;\n\n if ($$.width < 0) {\n $$.width = 0;\n }\n\n if ($$.height < 0) {\n $$.height = 0;\n }\n\n $$.width2 = config.axis_rotated ? $$.margin.left - $$.rotated_padding_left - $$.rotated_padding_right : $$.width;\n $$.height2 = config.axis_rotated ? $$.height : $$.currentHeight - $$.margin2.top - $$.margin2.bottom;\n\n if ($$.width2 < 0) {\n $$.width2 = 0;\n }\n\n if ($$.height2 < 0) {\n $$.height2 = 0;\n } // for arc\n\n\n $$.arcWidth = $$.width - ($$.isLegendRight ? legendWidth + 10 : 0);\n $$.arcHeight = $$.height - ($$.isLegendRight ? 0 : 10);\n\n if ($$.hasType('gauge') && !config.gauge_fullCircle) {\n $$.arcHeight += $$.height - $$.getGaugeLabelHeight();\n }\n\n if ($$.updateRadius) {\n $$.updateRadius();\n }\n\n if ($$.isLegendRight && hasArc) {\n $$.margin3.left = $$.arcWidth / 2 + $$.radiusExpanded * 1.1;\n }\n };\n\n ChartInternal.prototype.updateTargets = function (targets) {\n var $$ = this;\n /*-- Main --*/\n //-- Text --//\n\n $$.updateTargetsForText(targets); //-- Bar --//\n\n $$.updateTargetsForBar(targets); //-- Line --//\n\n $$.updateTargetsForLine(targets); //-- Arc --//\n\n if ($$.hasArcType() && $$.updateTargetsForArc) {\n $$.updateTargetsForArc(targets);\n }\n /*-- Sub --*/\n\n\n if ($$.updateTargetsForSubchart) {\n $$.updateTargetsForSubchart(targets);\n } // Fade-in each chart\n\n\n $$.showTargets();\n };\n\n ChartInternal.prototype.showTargets = function () {\n var $$ = this;\n $$.svg.selectAll('.' + CLASS.target).filter(function (d) {\n return $$.isTargetToShow(d.id);\n }).transition().duration($$.config.transition_duration).style(\"opacity\", 1);\n };\n\n ChartInternal.prototype.redraw = function (options, transitions) {\n var $$ = this,\n main = $$.main,\n d3 = $$.d3,\n config = $$.config;\n var areaIndices = $$.getShapeIndices($$.isAreaType),\n barIndices = $$.getShapeIndices($$.isBarType),\n lineIndices = $$.getShapeIndices($$.isLineType);\n var withY, withSubchart, withTransition, withTransitionForExit, withTransitionForAxis, withTransform, withUpdateXDomain, withUpdateOrgXDomain, withTrimXDomain, withLegend, withEventRect, withDimension, withUpdateXAxis;\n var hideAxis = $$.hasArcType();\n var drawArea, drawBar, drawLine, xForText, yForText;\n var duration, durationForExit, durationForAxis;\n var transitionsToWait, waitForDraw, flow, transition;\n var targetsToShow = $$.filterTargetsToShow($$.data.targets),\n tickValues,\n i,\n intervalForCulling,\n xDomainForZoom;\n var xv = $$.xv.bind($$),\n cx,\n cy;\n options = options || {};\n withY = getOption(options, \"withY\", true);\n withSubchart = getOption(options, \"withSubchart\", true);\n withTransition = getOption(options, \"withTransition\", true);\n withTransform = getOption(options, \"withTransform\", false);\n withUpdateXDomain = getOption(options, \"withUpdateXDomain\", false);\n withUpdateOrgXDomain = getOption(options, \"withUpdateOrgXDomain\", false);\n withTrimXDomain = getOption(options, \"withTrimXDomain\", true);\n withUpdateXAxis = getOption(options, \"withUpdateXAxis\", withUpdateXDomain);\n withLegend = getOption(options, \"withLegend\", false);\n withEventRect = getOption(options, \"withEventRect\", true);\n withDimension = getOption(options, \"withDimension\", true);\n withTransitionForExit = getOption(options, \"withTransitionForExit\", withTransition);\n withTransitionForAxis = getOption(options, \"withTransitionForAxis\", withTransition);\n duration = withTransition ? config.transition_duration : 0;\n durationForExit = withTransitionForExit ? duration : 0;\n durationForAxis = withTransitionForAxis ? duration : 0;\n transitions = transitions || $$.axis.generateTransitions(durationForAxis); // update legend and transform each g\n\n if (withLegend && config.legend_show) {\n $$.updateLegend($$.mapToIds($$.data.targets), options, transitions);\n } else if (withDimension) {\n // need to update dimension (e.g. axis.y.tick.values) because y tick values should change\n // no need to update axis in it because they will be updated in redraw()\n $$.updateDimension(true);\n } // MEMO: needed for grids calculation\n\n\n if ($$.isCategorized() && targetsToShow.length === 0) {\n $$.x.domain([0, $$.axes.x.selectAll('.tick').size()]);\n }\n\n if (targetsToShow.length) {\n $$.updateXDomain(targetsToShow, withUpdateXDomain, withUpdateOrgXDomain, withTrimXDomain);\n\n if (!config.axis_x_tick_values) {\n tickValues = $$.axis.updateXAxisTickValues(targetsToShow);\n }\n } else {\n $$.xAxis.tickValues([]);\n $$.subXAxis.tickValues([]);\n }\n\n if (config.zoom_rescale && !options.flow) {\n xDomainForZoom = $$.x.orgDomain();\n }\n\n $$.y.domain($$.getYDomain(targetsToShow, 'y', xDomainForZoom));\n $$.y2.domain($$.getYDomain(targetsToShow, 'y2', xDomainForZoom));\n\n if (!config.axis_y_tick_values && config.axis_y_tick_count) {\n $$.yAxis.tickValues($$.axis.generateTickValues($$.y.domain(), config.axis_y_tick_count));\n }\n\n if (!config.axis_y2_tick_values && config.axis_y2_tick_count) {\n $$.y2Axis.tickValues($$.axis.generateTickValues($$.y2.domain(), config.axis_y2_tick_count));\n } // axes\n\n\n $$.axis.redraw(durationForAxis, hideAxis); // Update axis label\n\n $$.axis.updateLabels(withTransition); // show/hide if manual culling needed\n\n if ((withUpdateXDomain || withUpdateXAxis) && targetsToShow.length) {\n if (config.axis_x_tick_culling && tickValues) {\n for (i = 1; i < tickValues.length; i++) {\n if (tickValues.length / i < config.axis_x_tick_culling_max) {\n intervalForCulling = i;\n break;\n }\n }\n\n $$.svg.selectAll('.' + CLASS.axisX + ' .tick text').each(function (e) {\n var index = tickValues.indexOf(e);\n\n if (index >= 0) {\n d3.select(this).style('display', index % intervalForCulling ? 'none' : 'block');\n }\n });\n } else {\n $$.svg.selectAll('.' + CLASS.axisX + ' .tick text').style('display', 'block');\n }\n } // setup drawer - MEMO: these must be called after axis updated\n\n\n drawArea = $$.generateDrawArea ? $$.generateDrawArea(areaIndices, false) : undefined;\n drawBar = $$.generateDrawBar ? $$.generateDrawBar(barIndices) : undefined;\n drawLine = $$.generateDrawLine ? $$.generateDrawLine(lineIndices, false) : undefined;\n xForText = $$.generateXYForText(areaIndices, barIndices, lineIndices, true);\n yForText = $$.generateXYForText(areaIndices, barIndices, lineIndices, false); // update circleY based on updated parameters\n\n $$.updateCircleY(); // generate circle x/y functions depending on updated params\n\n cx = ($$.config.axis_rotated ? $$.circleY : $$.circleX).bind($$);\n cy = ($$.config.axis_rotated ? $$.circleX : $$.circleY).bind($$); // Update sub domain\n\n if (withY) {\n $$.subY.domain($$.getYDomain(targetsToShow, 'y'));\n $$.subY2.domain($$.getYDomain(targetsToShow, 'y2'));\n } // xgrid focus\n\n\n $$.updateXgridFocus(); // Data empty label positioning and text.\n\n main.select(\"text.\" + CLASS.text + '.' + CLASS.empty).attr(\"x\", $$.width / 2).attr(\"y\", $$.height / 2).text(config.data_empty_label_text).transition().style('opacity', targetsToShow.length ? 0 : 1); // event rect\n\n if (withEventRect) {\n $$.redrawEventRect();\n } // grid\n\n\n $$.updateGrid(duration); // rect for regions\n\n $$.updateRegion(duration); // bars\n\n $$.updateBar(durationForExit); // lines, areas and cricles\n\n $$.updateLine(durationForExit);\n $$.updateArea(durationForExit);\n $$.updateCircle(cx, cy); // text\n\n if ($$.hasDataLabel()) {\n $$.updateText(xForText, yForText, durationForExit);\n } // title\n\n\n if ($$.redrawTitle) {\n $$.redrawTitle();\n } // arc\n\n\n if ($$.redrawArc) {\n $$.redrawArc(duration, durationForExit, withTransform);\n } // subchart\n\n\n if ($$.redrawSubchart) {\n $$.redrawSubchart(withSubchart, transitions, duration, durationForExit, areaIndices, barIndices, lineIndices);\n } // circles for select\n\n\n main.selectAll('.' + CLASS.selectedCircles).filter($$.isBarType.bind($$)).selectAll('circle').remove();\n\n if (options.flow) {\n flow = $$.generateFlow({\n targets: targetsToShow,\n flow: options.flow,\n duration: options.flow.duration,\n drawBar: drawBar,\n drawLine: drawLine,\n drawArea: drawArea,\n cx: cx,\n cy: cy,\n xv: xv,\n xForText: xForText,\n yForText: yForText\n });\n }\n\n if ($$.isTabVisible()) {\n // Only use transition if tab visible. See #938.\n if (duration) {\n // transition should be derived from one transition\n transition = d3.transition().duration(duration);\n transitionsToWait = [];\n [$$.redrawBar(drawBar, true, transition), $$.redrawLine(drawLine, true, transition), $$.redrawArea(drawArea, true, transition), $$.redrawCircle(cx, cy, true, transition), $$.redrawText(xForText, yForText, options.flow, true, transition), $$.redrawRegion(true, transition), $$.redrawGrid(true, transition)].forEach(function (transitions) {\n transitions.forEach(function (transition) {\n transitionsToWait.push(transition);\n });\n }); // Wait for end of transitions to call flow and onrendered callback\n\n waitForDraw = $$.generateWait();\n transitionsToWait.forEach(function (t) {\n waitForDraw.add(t);\n });\n waitForDraw(function () {\n if (flow) {\n flow();\n }\n\n if (config.onrendered) {\n config.onrendered.call($$);\n }\n });\n } else {\n $$.redrawBar(drawBar);\n $$.redrawLine(drawLine);\n $$.redrawArea(drawArea);\n $$.redrawCircle(cx, cy);\n $$.redrawText(xForText, yForText, options.flow);\n $$.redrawRegion();\n $$.redrawGrid();\n\n if (flow) {\n flow();\n }\n\n if (config.onrendered) {\n config.onrendered.call($$);\n }\n }\n } // update fadein condition\n\n\n $$.mapToIds($$.data.targets).forEach(function (id) {\n $$.withoutFadeIn[id] = true;\n });\n };\n\n ChartInternal.prototype.updateAndRedraw = function (options) {\n var $$ = this,\n config = $$.config,\n transitions;\n options = options || {}; // same with redraw\n\n options.withTransition = getOption(options, \"withTransition\", true);\n options.withTransform = getOption(options, \"withTransform\", false);\n options.withLegend = getOption(options, \"withLegend\", false); // NOT same with redraw\n\n options.withUpdateXDomain = getOption(options, \"withUpdateXDomain\", true);\n options.withUpdateOrgXDomain = getOption(options, \"withUpdateOrgXDomain\", true);\n options.withTransitionForExit = false;\n options.withTransitionForTransform = getOption(options, \"withTransitionForTransform\", options.withTransition); // MEMO: this needs to be called before updateLegend and it means this ALWAYS needs to be called)\n\n $$.updateSizes(); // MEMO: called in updateLegend in redraw if withLegend\n\n if (!(options.withLegend && config.legend_show)) {\n transitions = $$.axis.generateTransitions(options.withTransitionForAxis ? config.transition_duration : 0); // Update scales\n\n $$.updateScales();\n $$.updateSvgSize(); // Update g positions\n\n $$.transformAll(options.withTransitionForTransform, transitions);\n } // Draw with new sizes & scales\n\n\n $$.redraw(options, transitions);\n };\n\n ChartInternal.prototype.redrawWithoutRescale = function () {\n this.redraw({\n withY: false,\n withSubchart: false,\n withEventRect: false,\n withTransitionForAxis: false\n });\n };\n\n ChartInternal.prototype.isTimeSeries = function () {\n return this.config.axis_x_type === 'timeseries';\n };\n\n ChartInternal.prototype.isCategorized = function () {\n return this.config.axis_x_type.indexOf('categor') >= 0;\n };\n\n ChartInternal.prototype.isCustomX = function () {\n var $$ = this,\n config = $$.config;\n return !$$.isTimeSeries() && (config.data_x || notEmpty(config.data_xs));\n };\n\n ChartInternal.prototype.isTimeSeriesY = function () {\n return this.config.axis_y_type === 'timeseries';\n };\n\n ChartInternal.prototype.getTranslate = function (target) {\n var $$ = this,\n config = $$.config,\n x,\n y;\n\n if (target === 'main') {\n x = asHalfPixel($$.margin.left);\n y = asHalfPixel($$.margin.top);\n } else if (target === 'context') {\n x = asHalfPixel($$.margin2.left);\n y = asHalfPixel($$.margin2.top);\n } else if (target === 'legend') {\n x = $$.margin3.left;\n y = $$.margin3.top;\n } else if (target === 'x') {\n x = 0;\n y = config.axis_rotated ? 0 : $$.height;\n } else if (target === 'y') {\n x = 0;\n y = config.axis_rotated ? $$.height : 0;\n } else if (target === 'y2') {\n x = config.axis_rotated ? 0 : $$.width;\n y = config.axis_rotated ? 1 : 0;\n } else if (target === 'subx') {\n x = 0;\n y = config.axis_rotated ? 0 : $$.height2;\n } else if (target === 'arc') {\n x = $$.arcWidth / 2;\n y = $$.arcHeight / 2 - ($$.hasType('gauge') ? 6 : 0); // to prevent wrong display of min and max label\n }\n\n return \"translate(\" + x + \",\" + y + \")\";\n };\n\n ChartInternal.prototype.initialOpacity = function (d) {\n return d.value !== null && this.withoutFadeIn[d.id] ? 1 : 0;\n };\n\n ChartInternal.prototype.initialOpacityForCircle = function (d) {\n return d.value !== null && this.withoutFadeIn[d.id] ? this.opacityForCircle(d) : 0;\n };\n\n ChartInternal.prototype.opacityForCircle = function (d) {\n var isPointShouldBeShown = isFunction(this.config.point_show) ? this.config.point_show(d) : this.config.point_show;\n var opacity = isPointShouldBeShown ? 1 : 0;\n return isValue(d.value) ? this.isScatterType(d) ? 0.5 : opacity : 0;\n };\n\n ChartInternal.prototype.opacityForText = function () {\n return this.hasDataLabel() ? 1 : 0;\n };\n\n ChartInternal.prototype.xx = function (d) {\n return d ? this.x(d.x) : null;\n };\n\n ChartInternal.prototype.xv = function (d) {\n var $$ = this,\n value = d.value;\n\n if ($$.isTimeSeries()) {\n value = $$.parseDate(d.value);\n } else if ($$.isCategorized() && typeof d.value === 'string') {\n value = $$.config.axis_x_categories.indexOf(d.value);\n }\n\n return Math.ceil($$.x(value));\n };\n\n ChartInternal.prototype.yv = function (d) {\n var $$ = this,\n yScale = d.axis && d.axis === 'y2' ? $$.y2 : $$.y;\n return Math.ceil(yScale(d.value));\n };\n\n ChartInternal.prototype.subxx = function (d) {\n return d ? this.subX(d.x) : null;\n };\n\n ChartInternal.prototype.transformMain = function (withTransition, transitions) {\n var $$ = this,\n xAxis,\n yAxis,\n y2Axis;\n\n if (transitions && transitions.axisX) {\n xAxis = transitions.axisX;\n } else {\n xAxis = $$.main.select('.' + CLASS.axisX);\n\n if (withTransition) {\n xAxis = xAxis.transition();\n }\n }\n\n if (transitions && transitions.axisY) {\n yAxis = transitions.axisY;\n } else {\n yAxis = $$.main.select('.' + CLASS.axisY);\n\n if (withTransition) {\n yAxis = yAxis.transition();\n }\n }\n\n if (transitions && transitions.axisY2) {\n y2Axis = transitions.axisY2;\n } else {\n y2Axis = $$.main.select('.' + CLASS.axisY2);\n\n if (withTransition) {\n y2Axis = y2Axis.transition();\n }\n }\n\n (withTransition ? $$.main.transition() : $$.main).attr(\"transform\", $$.getTranslate('main'));\n xAxis.attr(\"transform\", $$.getTranslate('x'));\n yAxis.attr(\"transform\", $$.getTranslate('y'));\n y2Axis.attr(\"transform\", $$.getTranslate('y2'));\n $$.main.select('.' + CLASS.chartArcs).attr(\"transform\", $$.getTranslate('arc'));\n };\n\n ChartInternal.prototype.transformAll = function (withTransition, transitions) {\n var $$ = this;\n $$.transformMain(withTransition, transitions);\n\n if ($$.config.subchart_show) {\n $$.transformContext(withTransition, transitions);\n }\n\n if ($$.legend) {\n $$.transformLegend(withTransition);\n }\n };\n\n ChartInternal.prototype.updateSvgSize = function () {\n var $$ = this,\n brush = $$.svg.select(\".c3-brush .overlay\");\n $$.svg.attr('width', $$.currentWidth).attr('height', $$.currentHeight);\n $$.svg.selectAll(['#' + $$.clipId, '#' + $$.clipIdForGrid]).select('rect').attr('width', $$.width).attr('height', $$.height);\n $$.svg.select('#' + $$.clipIdForXAxis).select('rect').attr('x', $$.getXAxisClipX.bind($$)).attr('y', $$.getXAxisClipY.bind($$)).attr('width', $$.getXAxisClipWidth.bind($$)).attr('height', $$.getXAxisClipHeight.bind($$));\n $$.svg.select('#' + $$.clipIdForYAxis).select('rect').attr('x', $$.getYAxisClipX.bind($$)).attr('y', $$.getYAxisClipY.bind($$)).attr('width', $$.getYAxisClipWidth.bind($$)).attr('height', $$.getYAxisClipHeight.bind($$));\n $$.svg.select('#' + $$.clipIdForSubchart).select('rect').attr('width', $$.width).attr('height', brush.size() ? brush.attr('height') : 0); // MEMO: parent div's height will be bigger than svg when \n\n $$.selectChart.style('max-height', $$.currentHeight + \"px\");\n };\n\n ChartInternal.prototype.updateDimension = function (withoutAxis) {\n var $$ = this;\n\n if (!withoutAxis) {\n if ($$.config.axis_rotated) {\n $$.axes.x.call($$.xAxis);\n $$.axes.subx.call($$.subXAxis);\n } else {\n $$.axes.y.call($$.yAxis);\n $$.axes.y2.call($$.y2Axis);\n }\n }\n\n $$.updateSizes();\n $$.updateScales();\n $$.updateSvgSize();\n $$.transformAll(false);\n };\n\n ChartInternal.prototype.observeInserted = function (selection) {\n var $$ = this,\n observer;\n\n if (typeof MutationObserver === 'undefined') {\n window.console.error(\"MutationObserver not defined.\");\n return;\n }\n\n observer = new MutationObserver(function (mutations) {\n mutations.forEach(function (mutation) {\n if (mutation.type === 'childList' && mutation.previousSibling) {\n observer.disconnect(); // need to wait for completion of load because size calculation requires the actual sizes determined after that completion\n\n $$.intervalForObserveInserted = window.setInterval(function () {\n // parentNode will NOT be null when completed\n if (selection.node().parentNode) {\n window.clearInterval($$.intervalForObserveInserted);\n $$.updateDimension();\n\n if ($$.brush) {\n $$.brush.update();\n }\n\n $$.config.oninit.call($$);\n $$.redraw({\n withTransform: true,\n withUpdateXDomain: true,\n withUpdateOrgXDomain: true,\n withTransition: false,\n withTransitionForTransform: false,\n withLegend: true\n });\n selection.transition().style('opacity', 1);\n }\n }, 10);\n }\n });\n });\n observer.observe(selection.node(), {\n attributes: true,\n childList: true,\n characterData: true\n });\n };\n /**\n * Binds handlers to the window resize event.\n */\n\n\n ChartInternal.prototype.bindResize = function () {\n var $$ = this,\n config = $$.config;\n $$.resizeFunction = $$.generateResize(); // need to call .remove\n\n $$.resizeFunction.add(function () {\n config.onresize.call($$);\n });\n\n if (config.resize_auto) {\n $$.resizeFunction.add(function () {\n if ($$.resizeTimeout !== undefined) {\n window.clearTimeout($$.resizeTimeout);\n }\n\n $$.resizeTimeout = window.setTimeout(function () {\n delete $$.resizeTimeout;\n $$.updateAndRedraw({\n withUpdateXDomain: false,\n withUpdateOrgXDomain: false,\n withTransition: false,\n withTransitionForTransform: false,\n withLegend: true\n });\n\n if ($$.brush) {\n $$.brush.update();\n }\n }, 100);\n });\n }\n\n $$.resizeFunction.add(function () {\n config.onresized.call($$);\n });\n\n $$.resizeIfElementDisplayed = function () {\n // if element not displayed skip it\n if ($$.api == null || !$$.api.element.offsetParent) {\n return;\n }\n\n $$.resizeFunction();\n };\n\n if (window.attachEvent) {\n window.attachEvent('onresize', $$.resizeIfElementDisplayed);\n } else if (window.addEventListener) {\n window.addEventListener('resize', $$.resizeIfElementDisplayed, false);\n } else {\n // fallback to this, if this is a very old browser\n var wrapper = window.onresize;\n\n if (!wrapper) {\n // create a wrapper that will call all charts\n wrapper = $$.generateResize();\n } else if (!wrapper.add || !wrapper.remove) {\n // there is already a handler registered, make sure we call it too\n wrapper = $$.generateResize();\n wrapper.add(window.onresize);\n } // add this graph to the wrapper, we will be removed if the user calls destroy\n\n\n wrapper.add($$.resizeFunction);\n\n window.onresize = function () {\n // if element not displayed skip it\n if (!$$.api.element.offsetParent) {\n return;\n }\n\n wrapper();\n };\n }\n };\n /**\n * Binds handlers to the window focus event.\n */\n\n\n ChartInternal.prototype.bindWindowFocus = function () {\n var _this = this;\n\n if (this.windowFocusHandler) {\n // The handler is already set\n return;\n }\n\n this.windowFocusHandler = function () {\n _this.redraw();\n };\n\n window.addEventListener('focus', this.windowFocusHandler);\n };\n /**\n * Unbinds from the window focus event.\n */\n\n\n ChartInternal.prototype.unbindWindowFocus = function () {\n window.removeEventListener('focus', this.windowFocusHandler);\n delete this.windowFocusHandler;\n };\n\n ChartInternal.prototype.generateResize = function () {\n var resizeFunctions = [];\n\n function callResizeFunctions() {\n resizeFunctions.forEach(function (f) {\n f();\n });\n }\n\n callResizeFunctions.add = function (f) {\n resizeFunctions.push(f);\n };\n\n callResizeFunctions.remove = function (f) {\n for (var i = 0; i < resizeFunctions.length; i++) {\n if (resizeFunctions[i] === f) {\n resizeFunctions.splice(i, 1);\n break;\n }\n }\n };\n\n return callResizeFunctions;\n };\n\n ChartInternal.prototype.endall = function (transition, callback) {\n var n = 0;\n transition.each(function () {\n ++n;\n }).on(\"end\", function () {\n if (! --n) {\n callback.apply(this, arguments);\n }\n });\n };\n\n ChartInternal.prototype.generateWait = function () {\n var $$ = this;\n\n var transitionsToWait = [],\n f = function f(callback) {\n var timer = setInterval(function () {\n if (!$$.isTabVisible()) {\n return;\n }\n\n var done = 0;\n transitionsToWait.forEach(function (t) {\n if (t.empty()) {\n done += 1;\n return;\n }\n\n try {\n t.transition();\n } catch (e) {\n done += 1;\n }\n });\n\n if (done === transitionsToWait.length) {\n clearInterval(timer);\n\n if (callback) {\n callback();\n }\n }\n }, 50);\n };\n\n f.add = function (transition) {\n transitionsToWait.push(transition);\n };\n\n return f;\n };\n\n ChartInternal.prototype.parseDate = function (date) {\n var $$ = this,\n parsedDate;\n\n if (date instanceof Date) {\n parsedDate = date;\n } else if (typeof date === 'string') {\n parsedDate = $$.dataTimeParse(date);\n } else if (_typeof(date) === 'object') {\n parsedDate = new Date(+date);\n } else if (typeof date === 'number' && !isNaN(date)) {\n parsedDate = new Date(+date);\n }\n\n if (!parsedDate || isNaN(+parsedDate)) {\n window.console.error(\"Failed to parse x '\" + date + \"' to Date object\");\n }\n\n return parsedDate;\n };\n\n ChartInternal.prototype.isTabVisible = function () {\n return !document.hidden;\n };\n\n ChartInternal.prototype.getPathBox = getPathBox;\n ChartInternal.prototype.CLASS = CLASS;\n\n /* jshint ignore:start */\n // SVGPathSeg API polyfill\n // https://github.com/progers/pathseg\n //\n // This is a drop-in replacement for the SVGPathSeg and SVGPathSegList APIs that were removed from\n // SVG2 (https://lists.w3.org/Archives/Public/www-svg/2015Jun/0044.html), including the latest spec\n // changes which were implemented in Firefox 43 and Chrome 46.\n (function () {\n\n if (!(\"SVGPathSeg\" in window)) {\n // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-InterfaceSVGPathSeg\n window.SVGPathSeg = function (type, typeAsLetter, owningPathSegList) {\n this.pathSegType = type;\n this.pathSegTypeAsLetter = typeAsLetter;\n this._owningPathSegList = owningPathSegList;\n };\n\n window.SVGPathSeg.prototype.classname = \"SVGPathSeg\";\n window.SVGPathSeg.PATHSEG_UNKNOWN = 0;\n window.SVGPathSeg.PATHSEG_CLOSEPATH = 1;\n window.SVGPathSeg.PATHSEG_MOVETO_ABS = 2;\n window.SVGPathSeg.PATHSEG_MOVETO_REL = 3;\n window.SVGPathSeg.PATHSEG_LINETO_ABS = 4;\n window.SVGPathSeg.PATHSEG_LINETO_REL = 5;\n window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS = 6;\n window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL = 7;\n window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS = 8;\n window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL = 9;\n window.SVGPathSeg.PATHSEG_ARC_ABS = 10;\n window.SVGPathSeg.PATHSEG_ARC_REL = 11;\n window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS = 12;\n window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL = 13;\n window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS = 14;\n window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL = 15;\n window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS = 16;\n window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL = 17;\n window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS = 18;\n window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL = 19; // Notify owning PathSegList on any changes so they can be synchronized back to the path element.\n\n window.SVGPathSeg.prototype._segmentChanged = function () {\n if (this._owningPathSegList) this._owningPathSegList.segmentChanged(this);\n };\n\n window.SVGPathSegClosePath = function (owningPathSegList) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CLOSEPATH, \"z\", owningPathSegList);\n };\n\n window.SVGPathSegClosePath.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegClosePath.prototype.toString = function () {\n return \"[object SVGPathSegClosePath]\";\n };\n\n window.SVGPathSegClosePath.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter;\n };\n\n window.SVGPathSegClosePath.prototype.clone = function () {\n return new window.SVGPathSegClosePath(undefined);\n };\n\n window.SVGPathSegMovetoAbs = function (owningPathSegList, x, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_MOVETO_ABS, \"M\", owningPathSegList);\n this._x = x;\n this._y = y;\n };\n\n window.SVGPathSegMovetoAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegMovetoAbs.prototype.toString = function () {\n return \"[object SVGPathSegMovetoAbs]\";\n };\n\n window.SVGPathSegMovetoAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegMovetoAbs.prototype.clone = function () {\n return new window.SVGPathSegMovetoAbs(undefined, this._x, this._y);\n };\n\n Object.defineProperty(window.SVGPathSegMovetoAbs.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegMovetoAbs.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegMovetoRel = function (owningPathSegList, x, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_MOVETO_REL, \"m\", owningPathSegList);\n this._x = x;\n this._y = y;\n };\n\n window.SVGPathSegMovetoRel.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegMovetoRel.prototype.toString = function () {\n return \"[object SVGPathSegMovetoRel]\";\n };\n\n window.SVGPathSegMovetoRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegMovetoRel.prototype.clone = function () {\n return new window.SVGPathSegMovetoRel(undefined, this._x, this._y);\n };\n\n Object.defineProperty(window.SVGPathSegMovetoRel.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegMovetoRel.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegLinetoAbs = function (owningPathSegList, x, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_ABS, \"L\", owningPathSegList);\n this._x = x;\n this._y = y;\n };\n\n window.SVGPathSegLinetoAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegLinetoAbs.prototype.toString = function () {\n return \"[object SVGPathSegLinetoAbs]\";\n };\n\n window.SVGPathSegLinetoAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegLinetoAbs.prototype.clone = function () {\n return new window.SVGPathSegLinetoAbs(undefined, this._x, this._y);\n };\n\n Object.defineProperty(window.SVGPathSegLinetoAbs.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegLinetoAbs.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegLinetoRel = function (owningPathSegList, x, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_REL, \"l\", owningPathSegList);\n this._x = x;\n this._y = y;\n };\n\n window.SVGPathSegLinetoRel.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegLinetoRel.prototype.toString = function () {\n return \"[object SVGPathSegLinetoRel]\";\n };\n\n window.SVGPathSegLinetoRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegLinetoRel.prototype.clone = function () {\n return new window.SVGPathSegLinetoRel(undefined, this._x, this._y);\n };\n\n Object.defineProperty(window.SVGPathSegLinetoRel.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegLinetoRel.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegCurvetoCubicAbs = function (owningPathSegList, x, y, x1, y1, x2, y2) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS, \"C\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._x1 = x1;\n this._y1 = y1;\n this._x2 = x2;\n this._y2 = y2;\n };\n\n window.SVGPathSegCurvetoCubicAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegCurvetoCubicAbs.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoCubicAbs]\";\n };\n\n window.SVGPathSegCurvetoCubicAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x1 + \" \" + this._y1 + \" \" + this._x2 + \" \" + this._y2 + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegCurvetoCubicAbs.prototype.clone = function () {\n return new window.SVGPathSegCurvetoCubicAbs(undefined, this._x, this._y, this._x1, this._y1, this._x2, this._y2);\n };\n\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"x1\", {\n get: function get() {\n return this._x1;\n },\n set: function set(x1) {\n this._x1 = x1;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"y1\", {\n get: function get() {\n return this._y1;\n },\n set: function set(y1) {\n this._y1 = y1;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"x2\", {\n get: function get() {\n return this._x2;\n },\n set: function set(x2) {\n this._x2 = x2;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"y2\", {\n get: function get() {\n return this._y2;\n },\n set: function set(y2) {\n this._y2 = y2;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegCurvetoCubicRel = function (owningPathSegList, x, y, x1, y1, x2, y2) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL, \"c\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._x1 = x1;\n this._y1 = y1;\n this._x2 = x2;\n this._y2 = y2;\n };\n\n window.SVGPathSegCurvetoCubicRel.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegCurvetoCubicRel.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoCubicRel]\";\n };\n\n window.SVGPathSegCurvetoCubicRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x1 + \" \" + this._y1 + \" \" + this._x2 + \" \" + this._y2 + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegCurvetoCubicRel.prototype.clone = function () {\n return new window.SVGPathSegCurvetoCubicRel(undefined, this._x, this._y, this._x1, this._y1, this._x2, this._y2);\n };\n\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"x1\", {\n get: function get() {\n return this._x1;\n },\n set: function set(x1) {\n this._x1 = x1;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"y1\", {\n get: function get() {\n return this._y1;\n },\n set: function set(y1) {\n this._y1 = y1;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"x2\", {\n get: function get() {\n return this._x2;\n },\n set: function set(x2) {\n this._x2 = x2;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"y2\", {\n get: function get() {\n return this._y2;\n },\n set: function set(y2) {\n this._y2 = y2;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegCurvetoQuadraticAbs = function (owningPathSegList, x, y, x1, y1) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS, \"Q\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._x1 = x1;\n this._y1 = y1;\n };\n\n window.SVGPathSegCurvetoQuadraticAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegCurvetoQuadraticAbs.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoQuadraticAbs]\";\n };\n\n window.SVGPathSegCurvetoQuadraticAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x1 + \" \" + this._y1 + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegCurvetoQuadraticAbs.prototype.clone = function () {\n return new window.SVGPathSegCurvetoQuadraticAbs(undefined, this._x, this._y, this._x1, this._y1);\n };\n\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, \"x1\", {\n get: function get() {\n return this._x1;\n },\n set: function set(x1) {\n this._x1 = x1;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, \"y1\", {\n get: function get() {\n return this._y1;\n },\n set: function set(y1) {\n this._y1 = y1;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegCurvetoQuadraticRel = function (owningPathSegList, x, y, x1, y1) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL, \"q\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._x1 = x1;\n this._y1 = y1;\n };\n\n window.SVGPathSegCurvetoQuadraticRel.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegCurvetoQuadraticRel.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoQuadraticRel]\";\n };\n\n window.SVGPathSegCurvetoQuadraticRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x1 + \" \" + this._y1 + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegCurvetoQuadraticRel.prototype.clone = function () {\n return new window.SVGPathSegCurvetoQuadraticRel(undefined, this._x, this._y, this._x1, this._y1);\n };\n\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, \"x1\", {\n get: function get() {\n return this._x1;\n },\n set: function set(x1) {\n this._x1 = x1;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, \"y1\", {\n get: function get() {\n return this._y1;\n },\n set: function set(y1) {\n this._y1 = y1;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegArcAbs = function (owningPathSegList, x, y, r1, r2, angle, largeArcFlag, sweepFlag) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_ARC_ABS, \"A\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._r1 = r1;\n this._r2 = r2;\n this._angle = angle;\n this._largeArcFlag = largeArcFlag;\n this._sweepFlag = sweepFlag;\n };\n\n window.SVGPathSegArcAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegArcAbs.prototype.toString = function () {\n return \"[object SVGPathSegArcAbs]\";\n };\n\n window.SVGPathSegArcAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._r1 + \" \" + this._r2 + \" \" + this._angle + \" \" + (this._largeArcFlag ? \"1\" : \"0\") + \" \" + (this._sweepFlag ? \"1\" : \"0\") + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegArcAbs.prototype.clone = function () {\n return new window.SVGPathSegArcAbs(undefined, this._x, this._y, this._r1, this._r2, this._angle, this._largeArcFlag, this._sweepFlag);\n };\n\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"r1\", {\n get: function get() {\n return this._r1;\n },\n set: function set(r1) {\n this._r1 = r1;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"r2\", {\n get: function get() {\n return this._r2;\n },\n set: function set(r2) {\n this._r2 = r2;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"angle\", {\n get: function get() {\n return this._angle;\n },\n set: function set(angle) {\n this._angle = angle;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"largeArcFlag\", {\n get: function get() {\n return this._largeArcFlag;\n },\n set: function set(largeArcFlag) {\n this._largeArcFlag = largeArcFlag;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"sweepFlag\", {\n get: function get() {\n return this._sweepFlag;\n },\n set: function set(sweepFlag) {\n this._sweepFlag = sweepFlag;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegArcRel = function (owningPathSegList, x, y, r1, r2, angle, largeArcFlag, sweepFlag) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_ARC_REL, \"a\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._r1 = r1;\n this._r2 = r2;\n this._angle = angle;\n this._largeArcFlag = largeArcFlag;\n this._sweepFlag = sweepFlag;\n };\n\n window.SVGPathSegArcRel.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegArcRel.prototype.toString = function () {\n return \"[object SVGPathSegArcRel]\";\n };\n\n window.SVGPathSegArcRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._r1 + \" \" + this._r2 + \" \" + this._angle + \" \" + (this._largeArcFlag ? \"1\" : \"0\") + \" \" + (this._sweepFlag ? \"1\" : \"0\") + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegArcRel.prototype.clone = function () {\n return new window.SVGPathSegArcRel(undefined, this._x, this._y, this._r1, this._r2, this._angle, this._largeArcFlag, this._sweepFlag);\n };\n\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"r1\", {\n get: function get() {\n return this._r1;\n },\n set: function set(r1) {\n this._r1 = r1;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"r2\", {\n get: function get() {\n return this._r2;\n },\n set: function set(r2) {\n this._r2 = r2;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"angle\", {\n get: function get() {\n return this._angle;\n },\n set: function set(angle) {\n this._angle = angle;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"largeArcFlag\", {\n get: function get() {\n return this._largeArcFlag;\n },\n set: function set(largeArcFlag) {\n this._largeArcFlag = largeArcFlag;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"sweepFlag\", {\n get: function get() {\n return this._sweepFlag;\n },\n set: function set(sweepFlag) {\n this._sweepFlag = sweepFlag;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegLinetoHorizontalAbs = function (owningPathSegList, x) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS, \"H\", owningPathSegList);\n this._x = x;\n };\n\n window.SVGPathSegLinetoHorizontalAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegLinetoHorizontalAbs.prototype.toString = function () {\n return \"[object SVGPathSegLinetoHorizontalAbs]\";\n };\n\n window.SVGPathSegLinetoHorizontalAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x;\n };\n\n window.SVGPathSegLinetoHorizontalAbs.prototype.clone = function () {\n return new window.SVGPathSegLinetoHorizontalAbs(undefined, this._x);\n };\n\n Object.defineProperty(window.SVGPathSegLinetoHorizontalAbs.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegLinetoHorizontalRel = function (owningPathSegList, x) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL, \"h\", owningPathSegList);\n this._x = x;\n };\n\n window.SVGPathSegLinetoHorizontalRel.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegLinetoHorizontalRel.prototype.toString = function () {\n return \"[object SVGPathSegLinetoHorizontalRel]\";\n };\n\n window.SVGPathSegLinetoHorizontalRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x;\n };\n\n window.SVGPathSegLinetoHorizontalRel.prototype.clone = function () {\n return new window.SVGPathSegLinetoHorizontalRel(undefined, this._x);\n };\n\n Object.defineProperty(window.SVGPathSegLinetoHorizontalRel.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegLinetoVerticalAbs = function (owningPathSegList, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS, \"V\", owningPathSegList);\n this._y = y;\n };\n\n window.SVGPathSegLinetoVerticalAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegLinetoVerticalAbs.prototype.toString = function () {\n return \"[object SVGPathSegLinetoVerticalAbs]\";\n };\n\n window.SVGPathSegLinetoVerticalAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._y;\n };\n\n window.SVGPathSegLinetoVerticalAbs.prototype.clone = function () {\n return new window.SVGPathSegLinetoVerticalAbs(undefined, this._y);\n };\n\n Object.defineProperty(window.SVGPathSegLinetoVerticalAbs.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegLinetoVerticalRel = function (owningPathSegList, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL, \"v\", owningPathSegList);\n this._y = y;\n };\n\n window.SVGPathSegLinetoVerticalRel.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegLinetoVerticalRel.prototype.toString = function () {\n return \"[object SVGPathSegLinetoVerticalRel]\";\n };\n\n window.SVGPathSegLinetoVerticalRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._y;\n };\n\n window.SVGPathSegLinetoVerticalRel.prototype.clone = function () {\n return new window.SVGPathSegLinetoVerticalRel(undefined, this._y);\n };\n\n Object.defineProperty(window.SVGPathSegLinetoVerticalRel.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegCurvetoCubicSmoothAbs = function (owningPathSegList, x, y, x2, y2) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS, \"S\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._x2 = x2;\n this._y2 = y2;\n };\n\n window.SVGPathSegCurvetoCubicSmoothAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegCurvetoCubicSmoothAbs.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoCubicSmoothAbs]\";\n };\n\n window.SVGPathSegCurvetoCubicSmoothAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x2 + \" \" + this._y2 + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegCurvetoCubicSmoothAbs.prototype.clone = function () {\n return new window.SVGPathSegCurvetoCubicSmoothAbs(undefined, this._x, this._y, this._x2, this._y2);\n };\n\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, \"x2\", {\n get: function get() {\n return this._x2;\n },\n set: function set(x2) {\n this._x2 = x2;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, \"y2\", {\n get: function get() {\n return this._y2;\n },\n set: function set(y2) {\n this._y2 = y2;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegCurvetoCubicSmoothRel = function (owningPathSegList, x, y, x2, y2) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL, \"s\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._x2 = x2;\n this._y2 = y2;\n };\n\n window.SVGPathSegCurvetoCubicSmoothRel.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegCurvetoCubicSmoothRel.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoCubicSmoothRel]\";\n };\n\n window.SVGPathSegCurvetoCubicSmoothRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x2 + \" \" + this._y2 + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegCurvetoCubicSmoothRel.prototype.clone = function () {\n return new window.SVGPathSegCurvetoCubicSmoothRel(undefined, this._x, this._y, this._x2, this._y2);\n };\n\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, \"x2\", {\n get: function get() {\n return this._x2;\n },\n set: function set(x2) {\n this._x2 = x2;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, \"y2\", {\n get: function get() {\n return this._y2;\n },\n set: function set(y2) {\n this._y2 = y2;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegCurvetoQuadraticSmoothAbs = function (owningPathSegList, x, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS, \"T\", owningPathSegList);\n this._x = x;\n this._y = y;\n };\n\n window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoQuadraticSmoothAbs]\";\n };\n\n window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype.clone = function () {\n return new window.SVGPathSegCurvetoQuadraticSmoothAbs(undefined, this._x, this._y);\n };\n\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegCurvetoQuadraticSmoothRel = function (owningPathSegList, x, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL, \"t\", owningPathSegList);\n this._x = x;\n this._y = y;\n };\n\n window.SVGPathSegCurvetoQuadraticSmoothRel.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegCurvetoQuadraticSmoothRel.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoQuadraticSmoothRel]\";\n };\n\n window.SVGPathSegCurvetoQuadraticSmoothRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegCurvetoQuadraticSmoothRel.prototype.clone = function () {\n return new window.SVGPathSegCurvetoQuadraticSmoothRel(undefined, this._x, this._y);\n };\n\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothRel.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothRel.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n }); // Add createSVGPathSeg* functions to window.SVGPathElement.\n // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-Interfacewindow.SVGPathElement.\n\n window.SVGPathElement.prototype.createSVGPathSegClosePath = function () {\n return new window.SVGPathSegClosePath(undefined);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegMovetoAbs = function (x, y) {\n return new window.SVGPathSegMovetoAbs(undefined, x, y);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegMovetoRel = function (x, y) {\n return new window.SVGPathSegMovetoRel(undefined, x, y);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegLinetoAbs = function (x, y) {\n return new window.SVGPathSegLinetoAbs(undefined, x, y);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegLinetoRel = function (x, y) {\n return new window.SVGPathSegLinetoRel(undefined, x, y);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicAbs = function (x, y, x1, y1, x2, y2) {\n return new window.SVGPathSegCurvetoCubicAbs(undefined, x, y, x1, y1, x2, y2);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicRel = function (x, y, x1, y1, x2, y2) {\n return new window.SVGPathSegCurvetoCubicRel(undefined, x, y, x1, y1, x2, y2);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticAbs = function (x, y, x1, y1) {\n return new window.SVGPathSegCurvetoQuadraticAbs(undefined, x, y, x1, y1);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticRel = function (x, y, x1, y1) {\n return new window.SVGPathSegCurvetoQuadraticRel(undefined, x, y, x1, y1);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegArcAbs = function (x, y, r1, r2, angle, largeArcFlag, sweepFlag) {\n return new window.SVGPathSegArcAbs(undefined, x, y, r1, r2, angle, largeArcFlag, sweepFlag);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegArcRel = function (x, y, r1, r2, angle, largeArcFlag, sweepFlag) {\n return new window.SVGPathSegArcRel(undefined, x, y, r1, r2, angle, largeArcFlag, sweepFlag);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegLinetoHorizontalAbs = function (x) {\n return new window.SVGPathSegLinetoHorizontalAbs(undefined, x);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegLinetoHorizontalRel = function (x) {\n return new window.SVGPathSegLinetoHorizontalRel(undefined, x);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegLinetoVerticalAbs = function (y) {\n return new window.SVGPathSegLinetoVerticalAbs(undefined, y);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegLinetoVerticalRel = function (y) {\n return new window.SVGPathSegLinetoVerticalRel(undefined, y);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothAbs = function (x, y, x2, y2) {\n return new window.SVGPathSegCurvetoCubicSmoothAbs(undefined, x, y, x2, y2);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothRel = function (x, y, x2, y2) {\n return new window.SVGPathSegCurvetoCubicSmoothRel(undefined, x, y, x2, y2);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothAbs = function (x, y) {\n return new window.SVGPathSegCurvetoQuadraticSmoothAbs(undefined, x, y);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothRel = function (x, y) {\n return new window.SVGPathSegCurvetoQuadraticSmoothRel(undefined, x, y);\n };\n\n if (!(\"getPathSegAtLength\" in window.SVGPathElement.prototype)) {\n // Add getPathSegAtLength to SVGPathElement.\n // Spec: https://www.w3.org/TR/SVG11/single-page.html#paths-__svg__SVGPathElement__getPathSegAtLength\n // This polyfill requires SVGPathElement.getTotalLength to implement the distance-along-a-path algorithm.\n window.SVGPathElement.prototype.getPathSegAtLength = function (distance) {\n if (distance === undefined || !isFinite(distance)) throw \"Invalid arguments.\";\n var measurementElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n measurementElement.setAttribute(\"d\", this.getAttribute(\"d\"));\n var lastPathSegment = measurementElement.pathSegList.numberOfItems - 1; // If the path is empty, return 0.\n\n if (lastPathSegment <= 0) return 0;\n\n do {\n measurementElement.pathSegList.removeItem(lastPathSegment);\n if (distance > measurementElement.getTotalLength()) break;\n lastPathSegment--;\n } while (lastPathSegment > 0);\n\n return lastPathSegment;\n };\n }\n }\n\n if (!(\"SVGPathSegList\" in window)) {\n // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-InterfaceSVGPathSegList\n window.SVGPathSegList = function (pathElement) {\n this._pathElement = pathElement;\n this._list = this._parsePath(this._pathElement.getAttribute(\"d\")); // Use a MutationObserver to catch changes to the path's \"d\" attribute.\n\n this._mutationObserverConfig = {\n \"attributes\": true,\n \"attributeFilter\": [\"d\"]\n };\n this._pathElementMutationObserver = new MutationObserver(this._updateListFromPathMutations.bind(this));\n\n this._pathElementMutationObserver.observe(this._pathElement, this._mutationObserverConfig);\n };\n\n window.SVGPathSegList.prototype.classname = \"SVGPathSegList\";\n Object.defineProperty(window.SVGPathSegList.prototype, \"numberOfItems\", {\n get: function get() {\n this._checkPathSynchronizedToList();\n\n return this._list.length;\n },\n enumerable: true\n }); // Add the pathSegList accessors to window.SVGPathElement.\n // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-InterfaceSVGAnimatedPathData\n\n Object.defineProperty(window.SVGPathElement.prototype, \"pathSegList\", {\n get: function get() {\n if (!this._pathSegList) this._pathSegList = new window.SVGPathSegList(this);\n return this._pathSegList;\n },\n enumerable: true\n }); // FIXME: The following are not implemented and simply return window.SVGPathElement.pathSegList.\n\n Object.defineProperty(window.SVGPathElement.prototype, \"normalizedPathSegList\", {\n get: function get() {\n return this.pathSegList;\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathElement.prototype, \"animatedPathSegList\", {\n get: function get() {\n return this.pathSegList;\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathElement.prototype, \"animatedNormalizedPathSegList\", {\n get: function get() {\n return this.pathSegList;\n },\n enumerable: true\n }); // Process any pending mutations to the path element and update the list as needed.\n // This should be the first call of all public functions and is needed because\n // MutationObservers are not synchronous so we can have pending asynchronous mutations.\n\n window.SVGPathSegList.prototype._checkPathSynchronizedToList = function () {\n this._updateListFromPathMutations(this._pathElementMutationObserver.takeRecords());\n };\n\n window.SVGPathSegList.prototype._updateListFromPathMutations = function (mutationRecords) {\n if (!this._pathElement) return;\n var hasPathMutations = false;\n mutationRecords.forEach(function (record) {\n if (record.attributeName == \"d\") hasPathMutations = true;\n });\n if (hasPathMutations) this._list = this._parsePath(this._pathElement.getAttribute(\"d\"));\n }; // Serialize the list and update the path's 'd' attribute.\n\n\n window.SVGPathSegList.prototype._writeListToPath = function () {\n this._pathElementMutationObserver.disconnect();\n\n this._pathElement.setAttribute(\"d\", window.SVGPathSegList._pathSegArrayAsString(this._list));\n\n this._pathElementMutationObserver.observe(this._pathElement, this._mutationObserverConfig);\n }; // When a path segment changes the list needs to be synchronized back to the path element.\n\n\n window.SVGPathSegList.prototype.segmentChanged = function (pathSeg) {\n this._writeListToPath();\n };\n\n window.SVGPathSegList.prototype.clear = function () {\n this._checkPathSynchronizedToList();\n\n this._list.forEach(function (pathSeg) {\n pathSeg._owningPathSegList = null;\n });\n\n this._list = [];\n\n this._writeListToPath();\n };\n\n window.SVGPathSegList.prototype.initialize = function (newItem) {\n this._checkPathSynchronizedToList();\n\n this._list = [newItem];\n newItem._owningPathSegList = this;\n\n this._writeListToPath();\n\n return newItem;\n };\n\n window.SVGPathSegList.prototype._checkValidIndex = function (index) {\n if (isNaN(index) || index < 0 || index >= this.numberOfItems) throw \"INDEX_SIZE_ERR\";\n };\n\n window.SVGPathSegList.prototype.getItem = function (index) {\n this._checkPathSynchronizedToList();\n\n this._checkValidIndex(index);\n\n return this._list[index];\n };\n\n window.SVGPathSegList.prototype.insertItemBefore = function (newItem, index) {\n this._checkPathSynchronizedToList(); // Spec: If the index is greater than or equal to numberOfItems, then the new item is appended to the end of the list.\n\n\n if (index > this.numberOfItems) index = this.numberOfItems;\n\n if (newItem._owningPathSegList) {\n // SVG2 spec says to make a copy.\n newItem = newItem.clone();\n }\n\n this._list.splice(index, 0, newItem);\n\n newItem._owningPathSegList = this;\n\n this._writeListToPath();\n\n return newItem;\n };\n\n window.SVGPathSegList.prototype.replaceItem = function (newItem, index) {\n this._checkPathSynchronizedToList();\n\n if (newItem._owningPathSegList) {\n // SVG2 spec says to make a copy.\n newItem = newItem.clone();\n }\n\n this._checkValidIndex(index);\n\n this._list[index] = newItem;\n newItem._owningPathSegList = this;\n\n this._writeListToPath();\n\n return newItem;\n };\n\n window.SVGPathSegList.prototype.removeItem = function (index) {\n this._checkPathSynchronizedToList();\n\n this._checkValidIndex(index);\n\n var item = this._list[index];\n\n this._list.splice(index, 1);\n\n this._writeListToPath();\n\n return item;\n };\n\n window.SVGPathSegList.prototype.appendItem = function (newItem) {\n this._checkPathSynchronizedToList();\n\n if (newItem._owningPathSegList) {\n // SVG2 spec says to make a copy.\n newItem = newItem.clone();\n }\n\n this._list.push(newItem);\n\n newItem._owningPathSegList = this; // TODO: Optimize this to just append to the existing attribute.\n\n this._writeListToPath();\n\n return newItem;\n };\n\n window.SVGPathSegList._pathSegArrayAsString = function (pathSegArray) {\n var string = \"\";\n var first = true;\n pathSegArray.forEach(function (pathSeg) {\n if (first) {\n first = false;\n string += pathSeg._asPathString();\n } else {\n string += \" \" + pathSeg._asPathString();\n }\n });\n return string;\n }; // This closely follows SVGPathParser::parsePath from Source/core/svg/SVGPathParser.cpp.\n\n\n window.SVGPathSegList.prototype._parsePath = function (string) {\n if (!string || string.length == 0) return [];\n var owningPathSegList = this;\n\n var Builder = function Builder() {\n this.pathSegList = [];\n };\n\n Builder.prototype.appendSegment = function (pathSeg) {\n this.pathSegList.push(pathSeg);\n };\n\n var Source = function Source(string) {\n this._string = string;\n this._currentIndex = 0;\n this._endIndex = this._string.length;\n this._previousCommand = window.SVGPathSeg.PATHSEG_UNKNOWN;\n\n this._skipOptionalSpaces();\n };\n\n Source.prototype._isCurrentSpace = function () {\n var character = this._string[this._currentIndex];\n return character <= \" \" && (character == \" \" || character == \"\\n\" || character == \"\\t\" || character == \"\\r\" || character == \"\\f\");\n };\n\n Source.prototype._skipOptionalSpaces = function () {\n while (this._currentIndex < this._endIndex && this._isCurrentSpace()) {\n this._currentIndex++;\n }\n\n return this._currentIndex < this._endIndex;\n };\n\n Source.prototype._skipOptionalSpacesOrDelimiter = function () {\n if (this._currentIndex < this._endIndex && !this._isCurrentSpace() && this._string.charAt(this._currentIndex) != \",\") return false;\n\n if (this._skipOptionalSpaces()) {\n if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == \",\") {\n this._currentIndex++;\n\n this._skipOptionalSpaces();\n }\n }\n\n return this._currentIndex < this._endIndex;\n };\n\n Source.prototype.hasMoreData = function () {\n return this._currentIndex < this._endIndex;\n };\n\n Source.prototype.peekSegmentType = function () {\n var lookahead = this._string[this._currentIndex];\n return this._pathSegTypeFromChar(lookahead);\n };\n\n Source.prototype._pathSegTypeFromChar = function (lookahead) {\n switch (lookahead) {\n case \"Z\":\n case \"z\":\n return window.SVGPathSeg.PATHSEG_CLOSEPATH;\n\n case \"M\":\n return window.SVGPathSeg.PATHSEG_MOVETO_ABS;\n\n case \"m\":\n return window.SVGPathSeg.PATHSEG_MOVETO_REL;\n\n case \"L\":\n return window.SVGPathSeg.PATHSEG_LINETO_ABS;\n\n case \"l\":\n return window.SVGPathSeg.PATHSEG_LINETO_REL;\n\n case \"C\":\n return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS;\n\n case \"c\":\n return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL;\n\n case \"Q\":\n return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS;\n\n case \"q\":\n return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL;\n\n case \"A\":\n return window.SVGPathSeg.PATHSEG_ARC_ABS;\n\n case \"a\":\n return window.SVGPathSeg.PATHSEG_ARC_REL;\n\n case \"H\":\n return window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS;\n\n case \"h\":\n return window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL;\n\n case \"V\":\n return window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS;\n\n case \"v\":\n return window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL;\n\n case \"S\":\n return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS;\n\n case \"s\":\n return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL;\n\n case \"T\":\n return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS;\n\n case \"t\":\n return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL;\n\n default:\n return window.SVGPathSeg.PATHSEG_UNKNOWN;\n }\n };\n\n Source.prototype._nextCommandHelper = function (lookahead, previousCommand) {\n // Check for remaining coordinates in the current command.\n if ((lookahead == \"+\" || lookahead == \"-\" || lookahead == \".\" || lookahead >= \"0\" && lookahead <= \"9\") && previousCommand != window.SVGPathSeg.PATHSEG_CLOSEPATH) {\n if (previousCommand == window.SVGPathSeg.PATHSEG_MOVETO_ABS) return window.SVGPathSeg.PATHSEG_LINETO_ABS;\n if (previousCommand == window.SVGPathSeg.PATHSEG_MOVETO_REL) return window.SVGPathSeg.PATHSEG_LINETO_REL;\n return previousCommand;\n }\n\n return window.SVGPathSeg.PATHSEG_UNKNOWN;\n };\n\n Source.prototype.initialCommandIsMoveTo = function () {\n // If the path is empty it is still valid, so return true.\n if (!this.hasMoreData()) return true;\n var command = this.peekSegmentType(); // Path must start with moveTo.\n\n return command == window.SVGPathSeg.PATHSEG_MOVETO_ABS || command == window.SVGPathSeg.PATHSEG_MOVETO_REL;\n }; // Parse a number from an SVG path. This very closely follows genericParseNumber(...) from Source/core/svg/SVGParserUtilities.cpp.\n // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-PathDataBNF\n\n\n Source.prototype._parseNumber = function () {\n var exponent = 0;\n var integer = 0;\n var frac = 1;\n var decimal = 0;\n var sign = 1;\n var expsign = 1;\n var startIndex = this._currentIndex;\n\n this._skipOptionalSpaces(); // Read the sign.\n\n\n if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == \"+\") this._currentIndex++;else if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == \"-\") {\n this._currentIndex++;\n sign = -1;\n }\n if (this._currentIndex == this._endIndex || (this._string.charAt(this._currentIndex) < \"0\" || this._string.charAt(this._currentIndex) > \"9\") && this._string.charAt(this._currentIndex) != \".\") // The first character of a number must be one of [0-9+-.].\n return undefined; // Read the integer part, build right-to-left.\n\n var startIntPartIndex = this._currentIndex;\n\n while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= \"0\" && this._string.charAt(this._currentIndex) <= \"9\") {\n this._currentIndex++;\n } // Advance to first non-digit.\n\n\n if (this._currentIndex != startIntPartIndex) {\n var scanIntPartIndex = this._currentIndex - 1;\n var multiplier = 1;\n\n while (scanIntPartIndex >= startIntPartIndex) {\n integer += multiplier * (this._string.charAt(scanIntPartIndex--) - \"0\");\n multiplier *= 10;\n }\n } // Read the decimals.\n\n\n if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == \".\") {\n this._currentIndex++; // There must be a least one digit following the .\n\n if (this._currentIndex >= this._endIndex || this._string.charAt(this._currentIndex) < \"0\" || this._string.charAt(this._currentIndex) > \"9\") return undefined;\n\n while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= \"0\" && this._string.charAt(this._currentIndex) <= \"9\") {\n frac *= 10;\n decimal += (this._string.charAt(this._currentIndex) - \"0\") / frac;\n this._currentIndex += 1;\n }\n } // Read the exponent part.\n\n\n if (this._currentIndex != startIndex && this._currentIndex + 1 < this._endIndex && (this._string.charAt(this._currentIndex) == \"e\" || this._string.charAt(this._currentIndex) == \"E\") && this._string.charAt(this._currentIndex + 1) != \"x\" && this._string.charAt(this._currentIndex + 1) != \"m\") {\n this._currentIndex++; // Read the sign of the exponent.\n\n if (this._string.charAt(this._currentIndex) == \"+\") {\n this._currentIndex++;\n } else if (this._string.charAt(this._currentIndex) == \"-\") {\n this._currentIndex++;\n expsign = -1;\n } // There must be an exponent.\n\n\n if (this._currentIndex >= this._endIndex || this._string.charAt(this._currentIndex) < \"0\" || this._string.charAt(this._currentIndex) > \"9\") return undefined;\n\n while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= \"0\" && this._string.charAt(this._currentIndex) <= \"9\") {\n exponent *= 10;\n exponent += this._string.charAt(this._currentIndex) - \"0\";\n this._currentIndex++;\n }\n }\n\n var number = integer + decimal;\n number *= sign;\n if (exponent) number *= Math.pow(10, expsign * exponent);\n if (startIndex == this._currentIndex) return undefined;\n\n this._skipOptionalSpacesOrDelimiter();\n\n return number;\n };\n\n Source.prototype._parseArcFlag = function () {\n if (this._currentIndex >= this._endIndex) return undefined;\n var flag = false;\n\n var flagChar = this._string.charAt(this._currentIndex++);\n\n if (flagChar == \"0\") flag = false;else if (flagChar == \"1\") flag = true;else return undefined;\n\n this._skipOptionalSpacesOrDelimiter();\n\n return flag;\n };\n\n Source.prototype.parseSegment = function () {\n var lookahead = this._string[this._currentIndex];\n\n var command = this._pathSegTypeFromChar(lookahead);\n\n if (command == window.SVGPathSeg.PATHSEG_UNKNOWN) {\n // Possibly an implicit command. Not allowed if this is the first command.\n if (this._previousCommand == window.SVGPathSeg.PATHSEG_UNKNOWN) return null;\n command = this._nextCommandHelper(lookahead, this._previousCommand);\n if (command == window.SVGPathSeg.PATHSEG_UNKNOWN) return null;\n } else {\n this._currentIndex++;\n }\n\n this._previousCommand = command;\n\n switch (command) {\n case window.SVGPathSeg.PATHSEG_MOVETO_REL:\n return new window.SVGPathSegMovetoRel(owningPathSegList, this._parseNumber(), this._parseNumber());\n\n case window.SVGPathSeg.PATHSEG_MOVETO_ABS:\n return new window.SVGPathSegMovetoAbs(owningPathSegList, this._parseNumber(), this._parseNumber());\n\n case window.SVGPathSeg.PATHSEG_LINETO_REL:\n return new window.SVGPathSegLinetoRel(owningPathSegList, this._parseNumber(), this._parseNumber());\n\n case window.SVGPathSeg.PATHSEG_LINETO_ABS:\n return new window.SVGPathSegLinetoAbs(owningPathSegList, this._parseNumber(), this._parseNumber());\n\n case window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL:\n return new window.SVGPathSegLinetoHorizontalRel(owningPathSegList, this._parseNumber());\n\n case window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS:\n return new window.SVGPathSegLinetoHorizontalAbs(owningPathSegList, this._parseNumber());\n\n case window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL:\n return new window.SVGPathSegLinetoVerticalRel(owningPathSegList, this._parseNumber());\n\n case window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS:\n return new window.SVGPathSegLinetoVerticalAbs(owningPathSegList, this._parseNumber());\n\n case window.SVGPathSeg.PATHSEG_CLOSEPATH:\n this._skipOptionalSpaces();\n\n return new window.SVGPathSegClosePath(owningPathSegList);\n\n case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL:\n var points = {\n x1: this._parseNumber(),\n y1: this._parseNumber(),\n x2: this._parseNumber(),\n y2: this._parseNumber(),\n x: this._parseNumber(),\n y: this._parseNumber()\n };\n return new window.SVGPathSegCurvetoCubicRel(owningPathSegList, points.x, points.y, points.x1, points.y1, points.x2, points.y2);\n\n case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS:\n var points = {\n x1: this._parseNumber(),\n y1: this._parseNumber(),\n x2: this._parseNumber(),\n y2: this._parseNumber(),\n x: this._parseNumber(),\n y: this._parseNumber()\n };\n return new window.SVGPathSegCurvetoCubicAbs(owningPathSegList, points.x, points.y, points.x1, points.y1, points.x2, points.y2);\n\n case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL:\n var points = {\n x2: this._parseNumber(),\n y2: this._parseNumber(),\n x: this._parseNumber(),\n y: this._parseNumber()\n };\n return new window.SVGPathSegCurvetoCubicSmoothRel(owningPathSegList, points.x, points.y, points.x2, points.y2);\n\n case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS:\n var points = {\n x2: this._parseNumber(),\n y2: this._parseNumber(),\n x: this._parseNumber(),\n y: this._parseNumber()\n };\n return new window.SVGPathSegCurvetoCubicSmoothAbs(owningPathSegList, points.x, points.y, points.x2, points.y2);\n\n case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL:\n var points = {\n x1: this._parseNumber(),\n y1: this._parseNumber(),\n x: this._parseNumber(),\n y: this._parseNumber()\n };\n return new window.SVGPathSegCurvetoQuadraticRel(owningPathSegList, points.x, points.y, points.x1, points.y1);\n\n case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS:\n var points = {\n x1: this._parseNumber(),\n y1: this._parseNumber(),\n x: this._parseNumber(),\n y: this._parseNumber()\n };\n return new window.SVGPathSegCurvetoQuadraticAbs(owningPathSegList, points.x, points.y, points.x1, points.y1);\n\n case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL:\n return new window.SVGPathSegCurvetoQuadraticSmoothRel(owningPathSegList, this._parseNumber(), this._parseNumber());\n\n case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS:\n return new window.SVGPathSegCurvetoQuadraticSmoothAbs(owningPathSegList, this._parseNumber(), this._parseNumber());\n\n case window.SVGPathSeg.PATHSEG_ARC_REL:\n var points = {\n x1: this._parseNumber(),\n y1: this._parseNumber(),\n arcAngle: this._parseNumber(),\n arcLarge: this._parseArcFlag(),\n arcSweep: this._parseArcFlag(),\n x: this._parseNumber(),\n y: this._parseNumber()\n };\n return new window.SVGPathSegArcRel(owningPathSegList, points.x, points.y, points.x1, points.y1, points.arcAngle, points.arcLarge, points.arcSweep);\n\n case window.SVGPathSeg.PATHSEG_ARC_ABS:\n var points = {\n x1: this._parseNumber(),\n y1: this._parseNumber(),\n arcAngle: this._parseNumber(),\n arcLarge: this._parseArcFlag(),\n arcSweep: this._parseArcFlag(),\n x: this._parseNumber(),\n y: this._parseNumber()\n };\n return new window.SVGPathSegArcAbs(owningPathSegList, points.x, points.y, points.x1, points.y1, points.arcAngle, points.arcLarge, points.arcSweep);\n\n default:\n throw \"Unknown path seg type.\";\n }\n };\n\n var builder = new Builder();\n var source = new Source(string);\n if (!source.initialCommandIsMoveTo()) return [];\n\n while (source.hasMoreData()) {\n var pathSeg = source.parseSegment();\n if (!pathSeg) return [];\n builder.appendSegment(pathSeg);\n }\n\n return builder.pathSegList;\n };\n }\n })(); // String.padEnd polyfill for IE11\n //\n // https://github.com/uxitten/polyfill/blob/master/string.polyfill.js\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padEnd\n\n\n if (!String.prototype.padEnd) {\n String.prototype.padEnd = function padEnd(targetLength, padString) {\n targetLength = targetLength >> 0; //floor if number or convert non-number to 0;\n\n padString = String(typeof padString !== 'undefined' ? padString : ' ');\n\n if (this.length > targetLength) {\n return String(this);\n } else {\n targetLength = targetLength - this.length;\n\n if (targetLength > padString.length) {\n padString += padString.repeat(targetLength / padString.length); //append to original to ensure we are longer than needed\n }\n\n return String(this) + padString.slice(0, targetLength);\n }\n };\n }\n /* jshint ignore:end */\n\n Chart.prototype.axis = function () {};\n\n Chart.prototype.axis.labels = function (labels) {\n var $$ = this.internal;\n\n if (arguments.length) {\n Object.keys(labels).forEach(function (axisId) {\n $$.axis.setLabelText(axisId, labels[axisId]);\n });\n $$.axis.updateLabels();\n } // TODO: return some values?\n\n };\n\n Chart.prototype.axis.max = function (max) {\n var $$ = this.internal,\n config = $$.config;\n\n if (arguments.length) {\n if (_typeof(max) === 'object') {\n if (isValue(max.x)) {\n config.axis_x_max = max.x;\n }\n\n if (isValue(max.y)) {\n config.axis_y_max = max.y;\n }\n\n if (isValue(max.y2)) {\n config.axis_y2_max = max.y2;\n }\n } else {\n config.axis_y_max = config.axis_y2_max = max;\n }\n\n $$.redraw({\n withUpdateOrgXDomain: true,\n withUpdateXDomain: true\n });\n } else {\n return {\n x: config.axis_x_max,\n y: config.axis_y_max,\n y2: config.axis_y2_max\n };\n }\n };\n\n Chart.prototype.axis.min = function (min) {\n var $$ = this.internal,\n config = $$.config;\n\n if (arguments.length) {\n if (_typeof(min) === 'object') {\n if (isValue(min.x)) {\n config.axis_x_min = min.x;\n }\n\n if (isValue(min.y)) {\n config.axis_y_min = min.y;\n }\n\n if (isValue(min.y2)) {\n config.axis_y2_min = min.y2;\n }\n } else {\n config.axis_y_min = config.axis_y2_min = min;\n }\n\n $$.redraw({\n withUpdateOrgXDomain: true,\n withUpdateXDomain: true\n });\n } else {\n return {\n x: config.axis_x_min,\n y: config.axis_y_min,\n y2: config.axis_y2_min\n };\n }\n };\n\n Chart.prototype.axis.range = function (range) {\n if (arguments.length) {\n if (isDefined(range.max)) {\n this.axis.max(range.max);\n }\n\n if (isDefined(range.min)) {\n this.axis.min(range.min);\n }\n } else {\n return {\n max: this.axis.max(),\n min: this.axis.min()\n };\n }\n };\n\n Chart.prototype.category = function (i, category) {\n var $$ = this.internal,\n config = $$.config;\n\n if (arguments.length > 1) {\n config.axis_x_categories[i] = category;\n $$.redraw();\n }\n\n return config.axis_x_categories[i];\n };\n\n Chart.prototype.categories = function (categories) {\n var $$ = this.internal,\n config = $$.config;\n\n if (!arguments.length) {\n return config.axis_x_categories;\n }\n\n config.axis_x_categories = categories;\n $$.redraw();\n return config.axis_x_categories;\n };\n\n Chart.prototype.resize = function (size) {\n var $$ = this.internal,\n config = $$.config;\n config.size_width = size ? size.width : null;\n config.size_height = size ? size.height : null;\n this.flush();\n };\n\n Chart.prototype.flush = function () {\n var $$ = this.internal;\n $$.updateAndRedraw({\n withLegend: true,\n withTransition: false,\n withTransitionForTransform: false\n });\n };\n\n Chart.prototype.destroy = function () {\n var $$ = this.internal;\n window.clearInterval($$.intervalForObserveInserted);\n\n if ($$.resizeTimeout !== undefined) {\n window.clearTimeout($$.resizeTimeout);\n }\n\n if (window.detachEvent) {\n window.detachEvent('onresize', $$.resizeIfElementDisplayed);\n } else if (window.removeEventListener) {\n window.removeEventListener('resize', $$.resizeIfElementDisplayed);\n } else {\n var wrapper = window.onresize; // check if no one else removed our wrapper and remove our resizeFunction from it\n\n if (wrapper && wrapper.add && wrapper.remove) {\n wrapper.remove($$.resizeFunction);\n }\n } // Removes the inner resize functions\n\n\n $$.resizeFunction.remove(); // Unbinds from the window focus event\n\n $$.unbindWindowFocus();\n $$.selectChart.classed('c3', false).html(\"\"); // MEMO: this is needed because the reference of some elements will not be released, then memory leak will happen.\n\n Object.keys($$).forEach(function (key) {\n $$[key] = null;\n });\n return null;\n };\n\n Chart.prototype.color = function (id) {\n var $$ = this.internal;\n return $$.color(id); // more patterns\n };\n\n Chart.prototype.data = function (targetIds) {\n var targets = this.internal.data.targets;\n return typeof targetIds === 'undefined' ? targets : targets.filter(function (t) {\n return [].concat(targetIds).indexOf(t.id) >= 0;\n });\n };\n\n Chart.prototype.data.shown = function (targetIds) {\n return this.internal.filterTargetsToShow(this.data(targetIds));\n };\n\n Chart.prototype.data.values = function (targetId) {\n var targets,\n values = null;\n\n if (targetId) {\n targets = this.data(targetId);\n values = targets[0] ? targets[0].values.map(function (d) {\n return d.value;\n }) : null;\n }\n\n return values;\n };\n\n Chart.prototype.data.names = function (names) {\n this.internal.clearLegendItemTextBoxCache();\n return this.internal.updateDataAttributes('names', names);\n };\n\n Chart.prototype.data.colors = function (colors) {\n return this.internal.updateDataAttributes('colors', colors);\n };\n\n Chart.prototype.data.axes = function (axes) {\n return this.internal.updateDataAttributes('axes', axes);\n };\n\n Chart.prototype.flow = function (args) {\n var $$ = this.internal,\n targets,\n data,\n notfoundIds = [],\n orgDataCount = $$.getMaxDataCount(),\n dataCount,\n domain,\n baseTarget,\n baseValue,\n length = 0,\n tail = 0,\n diff,\n to;\n\n if (args.json) {\n data = $$.convertJsonToData(args.json, args.keys);\n } else if (args.rows) {\n data = $$.convertRowsToData(args.rows);\n } else if (args.columns) {\n data = $$.convertColumnsToData(args.columns);\n } else {\n return;\n }\n\n targets = $$.convertDataToTargets(data, true); // Update/Add data\n\n $$.data.targets.forEach(function (t) {\n var found = false,\n i,\n j;\n\n for (i = 0; i < targets.length; i++) {\n if (t.id === targets[i].id) {\n found = true;\n\n if (t.values[t.values.length - 1]) {\n tail = t.values[t.values.length - 1].index + 1;\n }\n\n length = targets[i].values.length;\n\n for (j = 0; j < length; j++) {\n targets[i].values[j].index = tail + j;\n\n if (!$$.isTimeSeries()) {\n targets[i].values[j].x = tail + j;\n }\n }\n\n t.values = t.values.concat(targets[i].values);\n targets.splice(i, 1);\n break;\n }\n }\n\n if (!found) {\n notfoundIds.push(t.id);\n }\n }); // Append null for not found targets\n\n $$.data.targets.forEach(function (t) {\n var i, j;\n\n for (i = 0; i < notfoundIds.length; i++) {\n if (t.id === notfoundIds[i]) {\n tail = t.values[t.values.length - 1].index + 1;\n\n for (j = 0; j < length; j++) {\n t.values.push({\n id: t.id,\n index: tail + j,\n x: $$.isTimeSeries() ? $$.getOtherTargetX(tail + j) : tail + j,\n value: null\n });\n }\n }\n }\n }); // Generate null values for new target\n\n if ($$.data.targets.length) {\n targets.forEach(function (t) {\n var i,\n missing = [];\n\n for (i = $$.data.targets[0].values[0].index; i < tail; i++) {\n missing.push({\n id: t.id,\n index: i,\n x: $$.isTimeSeries() ? $$.getOtherTargetX(i) : i,\n value: null\n });\n }\n\n t.values.forEach(function (v) {\n v.index += tail;\n\n if (!$$.isTimeSeries()) {\n v.x += tail;\n }\n });\n t.values = missing.concat(t.values);\n });\n }\n\n $$.data.targets = $$.data.targets.concat(targets); // add remained\n // check data count because behavior needs to change when it's only one\n\n dataCount = $$.getMaxDataCount();\n baseTarget = $$.data.targets[0];\n baseValue = baseTarget.values[0]; // Update length to flow if needed\n\n if (isDefined(args.to)) {\n length = 0;\n to = $$.isTimeSeries() ? $$.parseDate(args.to) : args.to;\n baseTarget.values.forEach(function (v) {\n if (v.x < to) {\n length++;\n }\n });\n } else if (isDefined(args.length)) {\n length = args.length;\n } // If only one data, update the domain to flow from left edge of the chart\n\n\n if (!orgDataCount) {\n if ($$.isTimeSeries()) {\n if (baseTarget.values.length > 1) {\n diff = baseTarget.values[baseTarget.values.length - 1].x - baseValue.x;\n } else {\n diff = baseValue.x - $$.getXDomain($$.data.targets)[0];\n }\n } else {\n diff = 1;\n }\n\n domain = [baseValue.x - diff, baseValue.x];\n $$.updateXDomain(null, true, true, false, domain);\n } else if (orgDataCount === 1) {\n if ($$.isTimeSeries()) {\n diff = (baseTarget.values[baseTarget.values.length - 1].x - baseValue.x) / 2;\n domain = [new Date(+baseValue.x - diff), new Date(+baseValue.x + diff)];\n $$.updateXDomain(null, true, true, false, domain);\n }\n } // Set targets\n\n\n $$.updateTargets($$.data.targets); // Redraw with new targets\n\n $$.redraw({\n flow: {\n index: baseValue.index,\n length: length,\n duration: isValue(args.duration) ? args.duration : $$.config.transition_duration,\n done: args.done,\n orgDataCount: orgDataCount\n },\n withLegend: true,\n withTransition: orgDataCount > 1,\n withTrimXDomain: false,\n withUpdateXAxis: true\n });\n };\n\n ChartInternal.prototype.generateFlow = function (args) {\n var $$ = this,\n config = $$.config,\n d3 = $$.d3;\n return function () {\n var targets = args.targets,\n flow = args.flow,\n drawBar = args.drawBar,\n drawLine = args.drawLine,\n drawArea = args.drawArea,\n cx = args.cx,\n cy = args.cy,\n xv = args.xv,\n xForText = args.xForText,\n yForText = args.yForText,\n duration = args.duration;\n\n var translateX,\n scaleX = 1,\n transform,\n flowIndex = flow.index,\n flowLength = flow.length,\n flowStart = $$.getValueOnIndex($$.data.targets[0].values, flowIndex),\n flowEnd = $$.getValueOnIndex($$.data.targets[0].values, flowIndex + flowLength),\n orgDomain = $$.x.domain(),\n domain,\n durationForFlow = flow.duration || duration,\n done = flow.done || function () {},\n wait = $$.generateWait();\n\n var xgrid, xgridLines, mainRegion, mainText, mainBar, mainLine, mainArea, mainCircle; // set flag\n\n $$.flowing = true; // remove head data after rendered\n\n $$.data.targets.forEach(function (d) {\n d.values.splice(0, flowLength);\n }); // update x domain to generate axis elements for flow\n\n domain = $$.updateXDomain(targets, true, true); // update elements related to x scale\n\n if ($$.updateXGrid) {\n $$.updateXGrid(true);\n }\n\n xgrid = $$.xgrid || d3.selectAll([]); // xgrid needs to be obtained after updateXGrid\n\n xgridLines = $$.xgridLines || d3.selectAll([]);\n mainRegion = $$.mainRegion || d3.selectAll([]);\n mainText = $$.mainText || d3.selectAll([]);\n mainBar = $$.mainBar || d3.selectAll([]);\n mainLine = $$.mainLine || d3.selectAll([]);\n mainArea = $$.mainArea || d3.selectAll([]);\n mainCircle = $$.mainCircle || d3.selectAll([]); // generate transform to flow\n\n if (!flow.orgDataCount) {\n // if empty\n if ($$.data.targets[0].values.length !== 1) {\n translateX = $$.x(orgDomain[0]) - $$.x(domain[0]);\n } else {\n if ($$.isTimeSeries()) {\n flowStart = $$.getValueOnIndex($$.data.targets[0].values, 0);\n flowEnd = $$.getValueOnIndex($$.data.targets[0].values, $$.data.targets[0].values.length - 1);\n translateX = $$.x(flowStart.x) - $$.x(flowEnd.x);\n } else {\n translateX = diffDomain(domain) / 2;\n }\n }\n } else if (flow.orgDataCount === 1 || (flowStart && flowStart.x) === (flowEnd && flowEnd.x)) {\n translateX = $$.x(orgDomain[0]) - $$.x(domain[0]);\n } else {\n if ($$.isTimeSeries()) {\n translateX = $$.x(orgDomain[0]) - $$.x(domain[0]);\n } else {\n translateX = $$.x(flowStart.x) - $$.x(flowEnd.x);\n }\n }\n\n scaleX = diffDomain(orgDomain) / diffDomain(domain);\n transform = 'translate(' + translateX + ',0) scale(' + scaleX + ',1)';\n $$.hideXGridFocus();\n var flowTransition = d3.transition().ease(d3.easeLinear).duration(durationForFlow);\n wait.add($$.xAxis($$.axes.x, flowTransition));\n wait.add(mainBar.transition(flowTransition).attr('transform', transform));\n wait.add(mainLine.transition(flowTransition).attr('transform', transform));\n wait.add(mainArea.transition(flowTransition).attr('transform', transform));\n wait.add(mainCircle.transition(flowTransition).attr('transform', transform));\n wait.add(mainText.transition(flowTransition).attr('transform', transform));\n wait.add(mainRegion.filter($$.isRegionOnX).transition(flowTransition).attr('transform', transform));\n wait.add(xgrid.transition(flowTransition).attr('transform', transform));\n wait.add(xgridLines.transition(flowTransition).attr('transform', transform));\n wait(function () {\n var i,\n shapes = [],\n texts = []; // remove flowed elements\n\n if (flowLength) {\n for (i = 0; i < flowLength; i++) {\n shapes.push('.' + CLASS.shape + '-' + (flowIndex + i));\n texts.push('.' + CLASS.text + '-' + (flowIndex + i));\n }\n\n $$.svg.selectAll('.' + CLASS.shapes).selectAll(shapes).remove();\n $$.svg.selectAll('.' + CLASS.texts).selectAll(texts).remove();\n $$.svg.select('.' + CLASS.xgrid).remove();\n } // draw again for removing flowed elements and reverting attr\n\n\n xgrid.attr('transform', null).attr('x1', $$.xgridAttr.x1).attr('x2', $$.xgridAttr.x2).attr('y1', $$.xgridAttr.y1).attr('y2', $$.xgridAttr.y2).style(\"opacity\", $$.xgridAttr.opacity);\n xgridLines.attr('transform', null);\n xgridLines.select('line').attr(\"x1\", config.axis_rotated ? 0 : xv).attr(\"x2\", config.axis_rotated ? $$.width : xv);\n xgridLines.select('text').attr(\"x\", config.axis_rotated ? $$.width : 0).attr(\"y\", xv);\n mainBar.attr('transform', null).attr(\"d\", drawBar);\n mainLine.attr('transform', null).attr(\"d\", drawLine);\n mainArea.attr('transform', null).attr(\"d\", drawArea);\n mainCircle.attr('transform', null).attr(\"cx\", cx).attr(\"cy\", cy);\n mainText.attr('transform', null).attr('x', xForText).attr('y', yForText).style('fill-opacity', $$.opacityForText.bind($$));\n mainRegion.attr('transform', null);\n mainRegion.filter($$.isRegionOnX).attr(\"x\", $$.regionX.bind($$)).attr(\"width\", $$.regionWidth.bind($$)); // callback for end of flow\n\n done();\n $$.flowing = false;\n });\n };\n };\n\n Chart.prototype.focus = function (targetIds) {\n var $$ = this.internal,\n candidates;\n targetIds = $$.mapToTargetIds(targetIds);\n candidates = $$.svg.selectAll($$.selectorTargets(targetIds.filter($$.isTargetToShow, $$))), this.revert();\n this.defocus();\n candidates.classed(CLASS.focused, true).classed(CLASS.defocused, false);\n\n if ($$.hasArcType()) {\n $$.expandArc(targetIds);\n }\n\n $$.toggleFocusLegend(targetIds, true);\n $$.focusedTargetIds = targetIds;\n $$.defocusedTargetIds = $$.defocusedTargetIds.filter(function (id) {\n return targetIds.indexOf(id) < 0;\n });\n };\n\n Chart.prototype.defocus = function (targetIds) {\n var $$ = this.internal,\n candidates;\n targetIds = $$.mapToTargetIds(targetIds);\n candidates = $$.svg.selectAll($$.selectorTargets(targetIds.filter($$.isTargetToShow, $$))), candidates.classed(CLASS.focused, false).classed(CLASS.defocused, true);\n\n if ($$.hasArcType()) {\n $$.unexpandArc(targetIds);\n }\n\n $$.toggleFocusLegend(targetIds, false);\n $$.focusedTargetIds = $$.focusedTargetIds.filter(function (id) {\n return targetIds.indexOf(id) < 0;\n });\n $$.defocusedTargetIds = targetIds;\n };\n\n Chart.prototype.revert = function (targetIds) {\n var $$ = this.internal,\n candidates;\n targetIds = $$.mapToTargetIds(targetIds);\n candidates = $$.svg.selectAll($$.selectorTargets(targetIds)); // should be for all targets\n\n candidates.classed(CLASS.focused, false).classed(CLASS.defocused, false);\n\n if ($$.hasArcType()) {\n $$.unexpandArc(targetIds);\n }\n\n if ($$.config.legend_show) {\n $$.showLegend(targetIds.filter($$.isLegendToShow.bind($$)));\n $$.legend.selectAll($$.selectorLegends(targetIds)).filter(function () {\n return $$.d3.select(this).classed(CLASS.legendItemFocused);\n }).classed(CLASS.legendItemFocused, false);\n }\n\n $$.focusedTargetIds = [];\n $$.defocusedTargetIds = [];\n };\n\n Chart.prototype.xgrids = function (grids) {\n var $$ = this.internal,\n config = $$.config;\n\n if (!grids) {\n return config.grid_x_lines;\n }\n\n config.grid_x_lines = grids;\n $$.redrawWithoutRescale();\n return config.grid_x_lines;\n };\n\n Chart.prototype.xgrids.add = function (grids) {\n var $$ = this.internal;\n return this.xgrids($$.config.grid_x_lines.concat(grids ? grids : []));\n };\n\n Chart.prototype.xgrids.remove = function (params) {\n // TODO: multiple\n var $$ = this.internal;\n $$.removeGridLines(params, true);\n };\n\n Chart.prototype.ygrids = function (grids) {\n var $$ = this.internal,\n config = $$.config;\n\n if (!grids) {\n return config.grid_y_lines;\n }\n\n config.grid_y_lines = grids;\n $$.redrawWithoutRescale();\n return config.grid_y_lines;\n };\n\n Chart.prototype.ygrids.add = function (grids) {\n var $$ = this.internal;\n return this.ygrids($$.config.grid_y_lines.concat(grids ? grids : []));\n };\n\n Chart.prototype.ygrids.remove = function (params) {\n // TODO: multiple\n var $$ = this.internal;\n $$.removeGridLines(params, false);\n };\n\n Chart.prototype.groups = function (groups) {\n var $$ = this.internal,\n config = $$.config;\n\n if (isUndefined(groups)) {\n return config.data_groups;\n }\n\n config.data_groups = groups;\n $$.redraw();\n return config.data_groups;\n };\n\n Chart.prototype.legend = function () {};\n\n Chart.prototype.legend.show = function (targetIds) {\n var $$ = this.internal;\n $$.showLegend($$.mapToTargetIds(targetIds));\n $$.updateAndRedraw({\n withLegend: true\n });\n };\n\n Chart.prototype.legend.hide = function (targetIds) {\n var $$ = this.internal;\n $$.hideLegend($$.mapToTargetIds(targetIds));\n $$.updateAndRedraw({\n withLegend: false\n });\n };\n\n Chart.prototype.load = function (args) {\n var $$ = this.internal,\n config = $$.config; // update xs if specified\n\n if (args.xs) {\n $$.addXs(args.xs);\n } // update names if exists\n\n\n if ('names' in args) {\n Chart.prototype.data.names.bind(this)(args.names);\n } // update classes if exists\n\n\n if ('classes' in args) {\n Object.keys(args.classes).forEach(function (id) {\n config.data_classes[id] = args.classes[id];\n });\n } // update categories if exists\n\n\n if ('categories' in args && $$.isCategorized()) {\n config.axis_x_categories = args.categories;\n } // update axes if exists\n\n\n if ('axes' in args) {\n Object.keys(args.axes).forEach(function (id) {\n config.data_axes[id] = args.axes[id];\n });\n } // update colors if exists\n\n\n if ('colors' in args) {\n Object.keys(args.colors).forEach(function (id) {\n config.data_colors[id] = args.colors[id];\n });\n } // use cache if exists\n\n\n if ('cacheIds' in args && $$.hasCaches(args.cacheIds)) {\n $$.load($$.getCaches(args.cacheIds), args.done);\n return;\n } // unload if needed\n\n\n if ('unload' in args) {\n // TODO: do not unload if target will load (included in url/rows/columns)\n $$.unload($$.mapToTargetIds(typeof args.unload === 'boolean' && args.unload ? null : args.unload), function () {\n $$.loadFromArgs(args);\n });\n } else {\n $$.loadFromArgs(args);\n }\n };\n\n Chart.prototype.unload = function (args) {\n var $$ = this.internal;\n args = args || {};\n\n if (args instanceof Array) {\n args = {\n ids: args\n };\n } else if (typeof args === 'string') {\n args = {\n ids: [args]\n };\n }\n\n $$.unload($$.mapToTargetIds(args.ids), function () {\n $$.redraw({\n withUpdateOrgXDomain: true,\n withUpdateXDomain: true,\n withLegend: true\n });\n\n if (args.done) {\n args.done();\n }\n });\n };\n\n Chart.prototype.regions = function (regions) {\n var $$ = this.internal,\n config = $$.config;\n\n if (!regions) {\n return config.regions;\n }\n\n config.regions = regions;\n $$.redrawWithoutRescale();\n return config.regions;\n };\n\n Chart.prototype.regions.add = function (regions) {\n var $$ = this.internal,\n config = $$.config;\n\n if (!regions) {\n return config.regions;\n }\n\n config.regions = config.regions.concat(regions);\n $$.redrawWithoutRescale();\n return config.regions;\n };\n\n Chart.prototype.regions.remove = function (options) {\n var $$ = this.internal,\n config = $$.config,\n duration,\n classes,\n regions;\n options = options || {};\n duration = getOption(options, \"duration\", config.transition_duration);\n classes = getOption(options, \"classes\", [CLASS.region]);\n regions = $$.main.select('.' + CLASS.regions).selectAll(classes.map(function (c) {\n return '.' + c;\n }));\n (duration ? regions.transition().duration(duration) : regions).style('opacity', 0).remove();\n config.regions = config.regions.filter(function (region) {\n var found = false;\n\n if (!region['class']) {\n return true;\n }\n\n region['class'].split(' ').forEach(function (c) {\n if (classes.indexOf(c) >= 0) {\n found = true;\n }\n });\n return !found;\n });\n return config.regions;\n };\n\n Chart.prototype.selected = function (targetId) {\n var $$ = this.internal,\n d3 = $$.d3;\n return $$.main.selectAll('.' + CLASS.shapes + $$.getTargetSelectorSuffix(targetId)).selectAll('.' + CLASS.shape).filter(function () {\n return d3.select(this).classed(CLASS.SELECTED);\n }).nodes().map(function (d) {\n var data = d.__data__;\n return data.data ? data.data : data;\n });\n };\n\n Chart.prototype.select = function (ids, indices, resetOther) {\n var $$ = this.internal,\n d3 = $$.d3,\n config = $$.config;\n\n if (!config.data_selection_enabled) {\n return;\n }\n\n $$.main.selectAll('.' + CLASS.shapes).selectAll('.' + CLASS.shape).each(function (d, i) {\n var shape = d3.select(this),\n id = d.data ? d.data.id : d.id,\n toggle = $$.getToggle(this, d).bind($$),\n isTargetId = config.data_selection_grouped || !ids || ids.indexOf(id) >= 0,\n isTargetIndex = !indices || indices.indexOf(i) >= 0,\n isSelected = shape.classed(CLASS.SELECTED); // line/area selection not supported yet\n\n if (shape.classed(CLASS.line) || shape.classed(CLASS.area)) {\n return;\n }\n\n if (isTargetId && isTargetIndex) {\n if (config.data_selection_isselectable(d) && !isSelected) {\n toggle(true, shape.classed(CLASS.SELECTED, true), d, i);\n }\n } else if (isDefined(resetOther) && resetOther) {\n if (isSelected) {\n toggle(false, shape.classed(CLASS.SELECTED, false), d, i);\n }\n }\n });\n };\n\n Chart.prototype.unselect = function (ids, indices) {\n var $$ = this.internal,\n d3 = $$.d3,\n config = $$.config;\n\n if (!config.data_selection_enabled) {\n return;\n }\n\n $$.main.selectAll('.' + CLASS.shapes).selectAll('.' + CLASS.shape).each(function (d, i) {\n var shape = d3.select(this),\n id = d.data ? d.data.id : d.id,\n toggle = $$.getToggle(this, d).bind($$),\n isTargetId = config.data_selection_grouped || !ids || ids.indexOf(id) >= 0,\n isTargetIndex = !indices || indices.indexOf(i) >= 0,\n isSelected = shape.classed(CLASS.SELECTED); // line/area selection not supported yet\n\n if (shape.classed(CLASS.line) || shape.classed(CLASS.area)) {\n return;\n }\n\n if (isTargetId && isTargetIndex) {\n if (config.data_selection_isselectable(d)) {\n if (isSelected) {\n toggle(false, shape.classed(CLASS.SELECTED, false), d, i);\n }\n }\n }\n });\n };\n\n Chart.prototype.show = function (targetIds, options) {\n var $$ = this.internal,\n targets;\n targetIds = $$.mapToTargetIds(targetIds);\n options = options || {};\n $$.removeHiddenTargetIds(targetIds);\n targets = $$.svg.selectAll($$.selectorTargets(targetIds));\n targets.transition().style('display', 'initial', 'important').style('opacity', 1, 'important').call($$.endall, function () {\n targets.style('opacity', null).style('opacity', 1);\n });\n\n if (options.withLegend) {\n $$.showLegend(targetIds);\n }\n\n $$.redraw({\n withUpdateOrgXDomain: true,\n withUpdateXDomain: true,\n withLegend: true\n });\n };\n\n Chart.prototype.hide = function (targetIds, options) {\n var $$ = this.internal,\n targets;\n targetIds = $$.mapToTargetIds(targetIds);\n options = options || {};\n $$.addHiddenTargetIds(targetIds);\n targets = $$.svg.selectAll($$.selectorTargets(targetIds));\n targets.transition().style('opacity', 0, 'important').call($$.endall, function () {\n targets.style('opacity', null).style('opacity', 0);\n targets.style('display', 'none');\n });\n\n if (options.withLegend) {\n $$.hideLegend(targetIds);\n }\n\n $$.redraw({\n withUpdateOrgXDomain: true,\n withUpdateXDomain: true,\n withLegend: true\n });\n };\n\n Chart.prototype.toggle = function (targetIds, options) {\n var that = this,\n $$ = this.internal;\n $$.mapToTargetIds(targetIds).forEach(function (targetId) {\n $$.isTargetToShow(targetId) ? that.hide(targetId, options) : that.show(targetId, options);\n });\n };\n\n Chart.prototype.tooltip = function () {};\n\n Chart.prototype.tooltip.show = function (args) {\n var $$ = this.internal,\n targets,\n data,\n mouse = {}; // determine mouse position on the chart\n\n if (args.mouse) {\n mouse = args.mouse;\n } else {\n // determine focus data\n if (args.data) {\n data = args.data;\n } else if (typeof args.x !== 'undefined') {\n if (args.id) {\n targets = $$.data.targets.filter(function (t) {\n return t.id === args.id;\n });\n } else {\n targets = $$.data.targets;\n }\n\n data = $$.filterByX(targets, args.x).slice(0, 1)[0];\n }\n\n mouse = data ? $$.getMousePosition(data) : null;\n } // emulate mouse events to show\n\n\n $$.dispatchEvent('mousemove', mouse);\n $$.config.tooltip_onshow.call($$, data);\n };\n\n Chart.prototype.tooltip.hide = function () {\n // TODO: get target data by checking the state of focus\n this.internal.dispatchEvent('mouseout', 0);\n this.internal.config.tooltip_onhide.call(this);\n };\n\n Chart.prototype.transform = function (type, targetIds) {\n var $$ = this.internal,\n options = ['pie', 'donut'].indexOf(type) >= 0 ? {\n withTransform: true\n } : null;\n $$.transformTo(targetIds, type, options);\n };\n\n ChartInternal.prototype.transformTo = function (targetIds, type, optionsForRedraw) {\n var $$ = this,\n withTransitionForAxis = !$$.hasArcType(),\n options = optionsForRedraw || {\n withTransitionForAxis: withTransitionForAxis\n };\n options.withTransitionForTransform = false;\n $$.transiting = false;\n $$.setTargetType(targetIds, type);\n $$.updateTargets($$.data.targets); // this is needed when transforming to arc\n\n $$.updateAndRedraw(options);\n };\n\n Chart.prototype.x = function (x) {\n var $$ = this.internal;\n\n if (arguments.length) {\n $$.updateTargetX($$.data.targets, x);\n $$.redraw({\n withUpdateOrgXDomain: true,\n withUpdateXDomain: true\n });\n }\n\n return $$.data.xs;\n };\n\n Chart.prototype.xs = function (xs) {\n var $$ = this.internal;\n\n if (arguments.length) {\n $$.updateTargetXs($$.data.targets, xs);\n $$.redraw({\n withUpdateOrgXDomain: true,\n withUpdateXDomain: true\n });\n }\n\n return $$.data.xs;\n };\n\n Chart.prototype.zoom = function (domain) {\n var $$ = this.internal;\n\n if (domain) {\n if ($$.isTimeSeries()) {\n domain = domain.map(function (x) {\n return $$.parseDate(x);\n });\n }\n\n if ($$.config.subchart_show) {\n $$.brush.selectionAsValue(domain, true);\n } else {\n $$.updateXDomain(null, true, false, false, domain);\n $$.redraw({\n withY: $$.config.zoom_rescale,\n withSubchart: false\n });\n }\n\n $$.config.zoom_onzoom.call(this, $$.x.orgDomain());\n return domain;\n } else {\n return $$.x.domain();\n }\n };\n\n Chart.prototype.zoom.enable = function (enabled) {\n var $$ = this.internal;\n $$.config.zoom_enabled = enabled;\n $$.updateAndRedraw();\n };\n\n Chart.prototype.unzoom = function () {\n var $$ = this.internal;\n\n if ($$.config.subchart_show) {\n $$.brush.clear();\n } else {\n $$.updateXDomain(null, true, false, false, $$.subX.domain());\n $$.redraw({\n withY: $$.config.zoom_rescale,\n withSubchart: false\n });\n }\n };\n\n Chart.prototype.zoom.max = function (max) {\n var $$ = this.internal,\n config = $$.config,\n d3 = $$.d3;\n\n if (max === 0 || max) {\n config.zoom_x_max = d3.max([$$.orgXDomain[1], max]);\n } else {\n return config.zoom_x_max;\n }\n };\n\n Chart.prototype.zoom.min = function (min) {\n var $$ = this.internal,\n config = $$.config,\n d3 = $$.d3;\n\n if (min === 0 || min) {\n config.zoom_x_min = d3.min([$$.orgXDomain[0], min]);\n } else {\n return config.zoom_x_min;\n }\n };\n\n Chart.prototype.zoom.range = function (range) {\n if (arguments.length) {\n if (isDefined(range.max)) {\n this.domain.max(range.max);\n }\n\n if (isDefined(range.min)) {\n this.domain.min(range.min);\n }\n } else {\n return {\n max: this.domain.max(),\n min: this.domain.min()\n };\n }\n };\n\n ChartInternal.prototype.initPie = function () {\n var $$ = this,\n d3 = $$.d3;\n $$.pie = d3.pie().value(function (d) {\n return d.values.reduce(function (a, b) {\n return a + b.value;\n }, 0);\n });\n var orderFct = $$.getOrderFunction(); // we need to reverse the returned order if asc or desc to have the slice in expected order.\n\n if (orderFct && ($$.isOrderAsc() || $$.isOrderDesc())) {\n var defaultSort = orderFct;\n\n orderFct = function orderFct(t1, t2) {\n return defaultSort(t1, t2) * -1;\n };\n }\n\n $$.pie.sort(orderFct || null);\n };\n\n ChartInternal.prototype.updateRadius = function () {\n var $$ = this,\n config = $$.config,\n w = config.gauge_width || config.donut_width,\n gaugeArcWidth = $$.filterTargetsToShow($$.data.targets).length * $$.config.gauge_arcs_minWidth;\n $$.radiusExpanded = Math.min($$.arcWidth, $$.arcHeight) / 2 * ($$.hasType('gauge') ? 0.85 : 1);\n $$.radius = $$.radiusExpanded * 0.95;\n $$.innerRadiusRatio = w ? ($$.radius - w) / $$.radius : 0.6;\n $$.innerRadius = $$.hasType('donut') || $$.hasType('gauge') ? $$.radius * $$.innerRadiusRatio : 0;\n $$.gaugeArcWidth = w ? w : gaugeArcWidth <= $$.radius - $$.innerRadius ? $$.radius - $$.innerRadius : gaugeArcWidth <= $$.radius ? gaugeArcWidth : $$.radius;\n };\n\n ChartInternal.prototype.updateArc = function () {\n var $$ = this;\n $$.svgArc = $$.getSvgArc();\n $$.svgArcExpanded = $$.getSvgArcExpanded();\n $$.svgArcExpandedSub = $$.getSvgArcExpanded(0.98);\n };\n\n ChartInternal.prototype.updateAngle = function (d) {\n var $$ = this,\n config = $$.config,\n found = false,\n index = 0,\n gMin,\n gMax,\n gTic,\n gValue;\n\n if (!config) {\n return null;\n }\n\n $$.pie($$.filterTargetsToShow($$.data.targets)).forEach(function (t) {\n if (!found && t.data.id === d.data.id) {\n found = true;\n d = t;\n d.index = index;\n }\n\n index++;\n });\n\n if (isNaN(d.startAngle)) {\n d.startAngle = 0;\n }\n\n if (isNaN(d.endAngle)) {\n d.endAngle = d.startAngle;\n }\n\n if ($$.isGaugeType(d.data)) {\n gMin = config.gauge_min;\n gMax = config.gauge_max;\n gTic = Math.PI * (config.gauge_fullCircle ? 2 : 1) / (gMax - gMin);\n gValue = d.value < gMin ? 0 : d.value < gMax ? d.value - gMin : gMax - gMin;\n d.startAngle = config.gauge_startingAngle;\n d.endAngle = d.startAngle + gTic * gValue;\n }\n\n return found ? d : null;\n };\n\n ChartInternal.prototype.getSvgArc = function () {\n var $$ = this,\n hasGaugeType = $$.hasType('gauge'),\n singleArcWidth = $$.gaugeArcWidth / $$.filterTargetsToShow($$.data.targets).length,\n arc = $$.d3.arc().outerRadius(function (d) {\n return hasGaugeType ? $$.radius - singleArcWidth * d.index : $$.radius;\n }).innerRadius(function (d) {\n return hasGaugeType ? $$.radius - singleArcWidth * (d.index + 1) : $$.innerRadius;\n }),\n newArc = function newArc(d, withoutUpdate) {\n var updated;\n\n if (withoutUpdate) {\n return arc(d);\n } // for interpolate\n\n\n updated = $$.updateAngle(d);\n return updated ? arc(updated) : \"M 0 0\";\n }; // TODO: extends all function\n\n\n newArc.centroid = arc.centroid;\n return newArc;\n };\n\n ChartInternal.prototype.getSvgArcExpanded = function (rate) {\n rate = rate || 1;\n var $$ = this,\n hasGaugeType = $$.hasType('gauge'),\n singleArcWidth = $$.gaugeArcWidth / $$.filterTargetsToShow($$.data.targets).length,\n expandWidth = Math.min($$.radiusExpanded * rate - $$.radius, singleArcWidth * 0.8 - (1 - rate) * 100),\n arc = $$.d3.arc().outerRadius(function (d) {\n return hasGaugeType ? $$.radius - singleArcWidth * d.index + expandWidth : $$.radiusExpanded * rate;\n }).innerRadius(function (d) {\n return hasGaugeType ? $$.radius - singleArcWidth * (d.index + 1) : $$.innerRadius;\n });\n return function (d) {\n var updated = $$.updateAngle(d);\n return updated ? arc(updated) : \"M 0 0\";\n };\n };\n\n ChartInternal.prototype.getArc = function (d, withoutUpdate, force) {\n return force || this.isArcType(d.data) ? this.svgArc(d, withoutUpdate) : \"M 0 0\";\n };\n\n ChartInternal.prototype.transformForArcLabel = function (d) {\n var $$ = this,\n config = $$.config,\n updated = $$.updateAngle(d),\n c,\n x,\n y,\n h,\n ratio,\n translate = \"\",\n hasGauge = $$.hasType('gauge');\n\n if (updated && !hasGauge) {\n c = this.svgArc.centroid(updated);\n x = isNaN(c[0]) ? 0 : c[0];\n y = isNaN(c[1]) ? 0 : c[1];\n h = Math.sqrt(x * x + y * y);\n\n if ($$.hasType('donut') && config.donut_label_ratio) {\n ratio = isFunction(config.donut_label_ratio) ? config.donut_label_ratio(d, $$.radius, h) : config.donut_label_ratio;\n } else if ($$.hasType('pie') && config.pie_label_ratio) {\n ratio = isFunction(config.pie_label_ratio) ? config.pie_label_ratio(d, $$.radius, h) : config.pie_label_ratio;\n } else {\n ratio = $$.radius && h ? (36 / $$.radius > 0.375 ? 1.175 - 36 / $$.radius : 0.8) * $$.radius / h : 0;\n }\n\n translate = \"translate(\" + x * ratio + ',' + y * ratio + \")\";\n } else if (updated && hasGauge && $$.filterTargetsToShow($$.data.targets).length > 1) {\n var y1 = Math.sin(updated.endAngle - Math.PI / 2);\n x = Math.cos(updated.endAngle - Math.PI / 2) * ($$.radiusExpanded + 25);\n y = y1 * ($$.radiusExpanded + 15 - Math.abs(y1 * 10)) + 3;\n translate = \"translate(\" + x + ',' + y + \")\";\n }\n\n return translate;\n };\n\n ChartInternal.prototype.getArcRatio = function (d) {\n var $$ = this,\n config = $$.config,\n whole = Math.PI * ($$.hasType('gauge') && !config.gauge_fullCircle ? 1 : 2);\n return d ? (d.endAngle - d.startAngle) / whole : null;\n };\n\n ChartInternal.prototype.convertToArcData = function (d) {\n return this.addName({\n id: d.data.id,\n value: d.value,\n ratio: this.getArcRatio(d),\n index: d.index\n });\n };\n\n ChartInternal.prototype.textForArcLabel = function (d) {\n var $$ = this,\n updated,\n value,\n ratio,\n id,\n format;\n\n if (!$$.shouldShowArcLabel()) {\n return \"\";\n }\n\n updated = $$.updateAngle(d);\n value = updated ? updated.value : null;\n ratio = $$.getArcRatio(updated);\n id = d.data.id;\n\n if (!$$.hasType('gauge') && !$$.meetsArcLabelThreshold(ratio)) {\n return \"\";\n }\n\n format = $$.getArcLabelFormat();\n return format ? format(value, ratio, id) : $$.defaultArcValueFormat(value, ratio);\n };\n\n ChartInternal.prototype.textForGaugeMinMax = function (value, isMax) {\n var $$ = this,\n format = $$.getGaugeLabelExtents();\n return format ? format(value, isMax) : value;\n };\n\n ChartInternal.prototype.expandArc = function (targetIds) {\n var $$ = this,\n interval; // MEMO: avoid to cancel transition\n\n if ($$.transiting) {\n interval = window.setInterval(function () {\n if (!$$.transiting) {\n window.clearInterval(interval);\n\n if ($$.legend.selectAll('.c3-legend-item-focused').size() > 0) {\n $$.expandArc(targetIds);\n }\n }\n }, 10);\n return;\n }\n\n targetIds = $$.mapToTargetIds(targetIds);\n $$.svg.selectAll($$.selectorTargets(targetIds, '.' + CLASS.chartArc)).each(function (d) {\n if (!$$.shouldExpand(d.data.id)) {\n return;\n }\n\n $$.d3.select(this).selectAll('path').transition().duration($$.expandDuration(d.data.id)).attr(\"d\", $$.svgArcExpanded).transition().duration($$.expandDuration(d.data.id) * 2).attr(\"d\", $$.svgArcExpandedSub).each(function (d) {\n if ($$.isDonutType(d.data)) ;\n });\n });\n };\n\n ChartInternal.prototype.unexpandArc = function (targetIds) {\n var $$ = this;\n\n if ($$.transiting) {\n return;\n }\n\n targetIds = $$.mapToTargetIds(targetIds);\n $$.svg.selectAll($$.selectorTargets(targetIds, '.' + CLASS.chartArc)).selectAll('path').transition().duration(function (d) {\n return $$.expandDuration(d.data.id);\n }).attr(\"d\", $$.svgArc);\n $$.svg.selectAll('.' + CLASS.arc);\n };\n\n ChartInternal.prototype.expandDuration = function (id) {\n var $$ = this,\n config = $$.config;\n\n if ($$.isDonutType(id)) {\n return config.donut_expand_duration;\n } else if ($$.isGaugeType(id)) {\n return config.gauge_expand_duration;\n } else if ($$.isPieType(id)) {\n return config.pie_expand_duration;\n } else {\n return 50;\n }\n };\n\n ChartInternal.prototype.shouldExpand = function (id) {\n var $$ = this,\n config = $$.config;\n return $$.isDonutType(id) && config.donut_expand || $$.isGaugeType(id) && config.gauge_expand || $$.isPieType(id) && config.pie_expand;\n };\n\n ChartInternal.prototype.shouldShowArcLabel = function () {\n var $$ = this,\n config = $$.config,\n shouldShow = true;\n\n if ($$.hasType('donut')) {\n shouldShow = config.donut_label_show;\n } else if ($$.hasType('pie')) {\n shouldShow = config.pie_label_show;\n } // when gauge, always true\n\n\n return shouldShow;\n };\n\n ChartInternal.prototype.meetsArcLabelThreshold = function (ratio) {\n var $$ = this,\n config = $$.config,\n threshold = $$.hasType('donut') ? config.donut_label_threshold : config.pie_label_threshold;\n return ratio >= threshold;\n };\n\n ChartInternal.prototype.getArcLabelFormat = function () {\n var $$ = this,\n config = $$.config,\n format = config.pie_label_format;\n\n if ($$.hasType('gauge')) {\n format = config.gauge_label_format;\n } else if ($$.hasType('donut')) {\n format = config.donut_label_format;\n }\n\n return format;\n };\n\n ChartInternal.prototype.getGaugeLabelExtents = function () {\n var $$ = this,\n config = $$.config;\n return config.gauge_label_extents;\n };\n\n ChartInternal.prototype.getArcTitle = function () {\n var $$ = this;\n return $$.hasType('donut') ? $$.config.donut_title : \"\";\n };\n\n ChartInternal.prototype.updateTargetsForArc = function (targets) {\n var $$ = this,\n main = $$.main,\n mainPies,\n mainPieEnter,\n classChartArc = $$.classChartArc.bind($$),\n classArcs = $$.classArcs.bind($$),\n classFocus = $$.classFocus.bind($$);\n mainPies = main.select('.' + CLASS.chartArcs).selectAll('.' + CLASS.chartArc).data($$.pie(targets)).attr(\"class\", function (d) {\n return classChartArc(d) + classFocus(d.data);\n });\n mainPieEnter = mainPies.enter().append(\"g\").attr(\"class\", classChartArc);\n mainPieEnter.append('g').attr('class', classArcs);\n mainPieEnter.append(\"text\").attr(\"dy\", $$.hasType('gauge') ? \"-.1em\" : \".35em\").style(\"opacity\", 0).style(\"text-anchor\", \"middle\").style(\"pointer-events\", \"none\"); // MEMO: can not keep same color..., but not bad to update color in redraw\n //mainPieUpdate.exit().remove();\n };\n\n ChartInternal.prototype.initArc = function () {\n var $$ = this;\n $$.arcs = $$.main.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.chartArcs).attr(\"transform\", $$.getTranslate('arc'));\n $$.arcs.append('text').attr('class', CLASS.chartArcsTitle).style(\"text-anchor\", \"middle\").text($$.getArcTitle());\n };\n\n ChartInternal.prototype.redrawArc = function (duration, durationForExit, withTransform) {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config,\n main = $$.main,\n arcs,\n mainArc,\n arcLabelLines,\n mainArcLabelLine,\n hasGaugeType = $$.hasType('gauge');\n arcs = main.selectAll('.' + CLASS.arcs).selectAll('.' + CLASS.arc).data($$.arcData.bind($$));\n mainArc = arcs.enter().append('path').attr(\"class\", $$.classArc.bind($$)).style(\"fill\", function (d) {\n return $$.color(d.data);\n }).style(\"cursor\", function (d) {\n return config.interaction_enabled && config.data_selection_isselectable(d) ? \"pointer\" : null;\n }).each(function (d) {\n if ($$.isGaugeType(d.data)) {\n d.startAngle = d.endAngle = config.gauge_startingAngle;\n }\n\n this._current = d;\n }).merge(arcs);\n\n if (hasGaugeType) {\n arcLabelLines = main.selectAll('.' + CLASS.arcs).selectAll('.' + CLASS.arcLabelLine).data($$.arcData.bind($$));\n mainArcLabelLine = arcLabelLines.enter().append('rect').attr(\"class\", function (d) {\n return CLASS.arcLabelLine + ' ' + CLASS.target + ' ' + CLASS.target + '-' + d.data.id;\n }).merge(arcLabelLines);\n\n if ($$.filterTargetsToShow($$.data.targets).length === 1) {\n mainArcLabelLine.style(\"display\", \"none\");\n } else {\n mainArcLabelLine.style(\"fill\", function (d) {\n return $$.levelColor ? $$.levelColor(d.data.values[0].value) : $$.color(d.data);\n }).style(\"display\", config.gauge_labelLine_show ? \"\" : \"none\").each(function (d) {\n var lineLength = 0,\n lineThickness = 2,\n x = 0,\n y = 0,\n transform = \"\";\n\n if ($$.hiddenTargetIds.indexOf(d.data.id) < 0) {\n var updated = $$.updateAngle(d),\n innerLineLength = $$.gaugeArcWidth / $$.filterTargetsToShow($$.data.targets).length * (updated.index + 1),\n lineAngle = updated.endAngle - Math.PI / 2,\n arcInnerRadius = $$.radius - innerLineLength,\n linePositioningAngle = lineAngle - (arcInnerRadius === 0 ? 0 : 1 / arcInnerRadius);\n lineLength = $$.radiusExpanded - $$.radius + innerLineLength;\n x = Math.cos(linePositioningAngle) * arcInnerRadius;\n y = Math.sin(linePositioningAngle) * arcInnerRadius;\n transform = \"rotate(\" + lineAngle * 180 / Math.PI + \", \" + x + \", \" + y + \")\";\n }\n\n d3.select(this).attr('x', x).attr('y', y).attr('width', lineLength).attr('height', lineThickness).attr('transform', transform).style(\"stroke-dasharray\", \"0, \" + (lineLength + lineThickness) + \", 0\");\n });\n }\n }\n\n mainArc.attr(\"transform\", function (d) {\n return !$$.isGaugeType(d.data) && withTransform ? \"scale(0)\" : \"\";\n }).on('mouseover', config.interaction_enabled ? function (d) {\n var updated, arcData;\n\n if ($$.transiting) {\n // skip while transiting\n return;\n }\n\n updated = $$.updateAngle(d);\n\n if (updated) {\n arcData = $$.convertToArcData(updated); // transitions\n\n $$.expandArc(updated.data.id);\n $$.api.focus(updated.data.id);\n $$.toggleFocusLegend(updated.data.id, true);\n $$.config.data_onmouseover(arcData, this);\n }\n } : null).on('mousemove', config.interaction_enabled ? function (d) {\n var updated = $$.updateAngle(d),\n arcData,\n selectedData;\n\n if (updated) {\n arcData = $$.convertToArcData(updated), selectedData = [arcData];\n $$.showTooltip(selectedData, this);\n }\n } : null).on('mouseout', config.interaction_enabled ? function (d) {\n var updated, arcData;\n\n if ($$.transiting) {\n // skip while transiting\n return;\n }\n\n updated = $$.updateAngle(d);\n\n if (updated) {\n arcData = $$.convertToArcData(updated); // transitions\n\n $$.unexpandArc(updated.data.id);\n $$.api.revert();\n $$.revertLegend();\n $$.hideTooltip();\n $$.config.data_onmouseout(arcData, this);\n }\n } : null).on('click', config.interaction_enabled ? function (d, i) {\n var updated = $$.updateAngle(d),\n arcData;\n\n if (updated) {\n arcData = $$.convertToArcData(updated);\n\n if ($$.toggleShape) {\n $$.toggleShape(this, arcData, i);\n }\n\n $$.config.data_onclick.call($$.api, arcData, this);\n }\n } : null).each(function () {\n $$.transiting = true;\n }).transition().duration(duration).attrTween(\"d\", function (d) {\n var updated = $$.updateAngle(d),\n interpolate;\n\n if (!updated) {\n return function () {\n return \"M 0 0\";\n };\n } // if (this._current === d) {\n // this._current = {\n // startAngle: Math.PI*2,\n // endAngle: Math.PI*2,\n // };\n // }\n\n\n if (isNaN(this._current.startAngle)) {\n this._current.startAngle = 0;\n }\n\n if (isNaN(this._current.endAngle)) {\n this._current.endAngle = this._current.startAngle;\n }\n\n interpolate = d3.interpolate(this._current, updated);\n this._current = interpolate(0);\n return function (t) {\n var interpolated = interpolate(t);\n interpolated.data = d.data; // data.id will be updated by interporator\n\n return $$.getArc(interpolated, true);\n };\n }).attr(\"transform\", withTransform ? \"scale(1)\" : \"\").style(\"fill\", function (d) {\n return $$.levelColor ? $$.levelColor(d.data.values[0].value) : $$.color(d.data.id);\n }) // Where gauge reading color would receive customization.\n .call($$.endall, function () {\n $$.transiting = false;\n });\n arcs.exit().transition().duration(durationForExit).style('opacity', 0).remove();\n main.selectAll('.' + CLASS.chartArc).select('text').style(\"opacity\", 0).attr('class', function (d) {\n return $$.isGaugeType(d.data) ? CLASS.gaugeValue : '';\n }).text($$.textForArcLabel.bind($$)).attr(\"transform\", $$.transformForArcLabel.bind($$)).style('font-size', function (d) {\n return $$.isGaugeType(d.data) && $$.filterTargetsToShow($$.data.targets).length === 1 ? Math.round($$.radius / 5) + 'px' : '';\n }).transition().duration(duration).style(\"opacity\", function (d) {\n return $$.isTargetToShow(d.data.id) && $$.isArcType(d.data) ? 1 : 0;\n });\n main.select('.' + CLASS.chartArcsTitle).style(\"opacity\", $$.hasType('donut') || hasGaugeType ? 1 : 0);\n\n if (hasGaugeType) {\n var index = 0;\n var backgroundArc = $$.arcs.select('g.' + CLASS.chartArcsBackground).selectAll('path.' + CLASS.chartArcsBackground).data($$.data.targets);\n backgroundArc.enter().append(\"path\").attr(\"class\", function (d, i) {\n return CLASS.chartArcsBackground + ' ' + CLASS.chartArcsBackground + '-' + i;\n }).merge(backgroundArc).attr(\"d\", function (d1) {\n if ($$.hiddenTargetIds.indexOf(d1.id) >= 0) {\n return \"M 0 0\";\n }\n\n var d = {\n data: [{\n value: config.gauge_max\n }],\n startAngle: config.gauge_startingAngle,\n endAngle: -1 * config.gauge_startingAngle * (config.gauge_fullCircle ? Math.PI : 1),\n index: index++\n };\n return $$.getArc(d, true, true);\n });\n backgroundArc.exit().remove();\n $$.arcs.select('.' + CLASS.chartArcsGaugeUnit).attr(\"dy\", \".75em\").text(config.gauge_label_show ? config.gauge_units : '');\n $$.arcs.select('.' + CLASS.chartArcsGaugeMin).attr(\"dx\", -1 * ($$.innerRadius + ($$.radius - $$.innerRadius) / (config.gauge_fullCircle ? 1 : 2)) + \"px\").attr(\"dy\", \"1.2em\").text(config.gauge_label_show ? $$.textForGaugeMinMax(config.gauge_min, false) : '');\n $$.arcs.select('.' + CLASS.chartArcsGaugeMax).attr(\"dx\", $$.innerRadius + ($$.radius - $$.innerRadius) / (config.gauge_fullCircle ? 1 : 2) + \"px\").attr(\"dy\", \"1.2em\").text(config.gauge_label_show ? $$.textForGaugeMinMax(config.gauge_max, true) : '');\n }\n };\n\n ChartInternal.prototype.initGauge = function () {\n var arcs = this.arcs;\n\n if (this.hasType('gauge')) {\n arcs.append('g').attr(\"class\", CLASS.chartArcsBackground);\n arcs.append(\"text\").attr(\"class\", CLASS.chartArcsGaugeUnit).style(\"text-anchor\", \"middle\").style(\"pointer-events\", \"none\");\n arcs.append(\"text\").attr(\"class\", CLASS.chartArcsGaugeMin).style(\"text-anchor\", \"middle\").style(\"pointer-events\", \"none\");\n arcs.append(\"text\").attr(\"class\", CLASS.chartArcsGaugeMax).style(\"text-anchor\", \"middle\").style(\"pointer-events\", \"none\");\n }\n };\n\n ChartInternal.prototype.getGaugeLabelHeight = function () {\n return this.config.gauge_label_show ? 20 : 0;\n };\n\n ChartInternal.prototype.hasCaches = function (ids) {\n for (var i = 0; i < ids.length; i++) {\n if (!(ids[i] in this.cache)) {\n return false;\n }\n }\n\n return true;\n };\n\n ChartInternal.prototype.addCache = function (id, target) {\n this.cache[id] = this.cloneTarget(target);\n };\n\n ChartInternal.prototype.getCaches = function (ids) {\n var targets = [],\n i;\n\n for (i = 0; i < ids.length; i++) {\n if (ids[i] in this.cache) {\n targets.push(this.cloneTarget(this.cache[ids[i]]));\n }\n }\n\n return targets;\n };\n\n ChartInternal.prototype.categoryName = function (i) {\n var config = this.config;\n return i < config.axis_x_categories.length ? config.axis_x_categories[i] : i;\n };\n\n ChartInternal.prototype.generateTargetClass = function (targetId) {\n return targetId || targetId === 0 ? ('-' + targetId).replace(/\\s/g, '-') : '';\n };\n\n ChartInternal.prototype.generateClass = function (prefix, targetId) {\n return \" \" + prefix + \" \" + prefix + this.generateTargetClass(targetId);\n };\n\n ChartInternal.prototype.classText = function (d) {\n return this.generateClass(CLASS.text, d.index);\n };\n\n ChartInternal.prototype.classTexts = function (d) {\n return this.generateClass(CLASS.texts, d.id);\n };\n\n ChartInternal.prototype.classShape = function (d) {\n return this.generateClass(CLASS.shape, d.index);\n };\n\n ChartInternal.prototype.classShapes = function (d) {\n return this.generateClass(CLASS.shapes, d.id);\n };\n\n ChartInternal.prototype.classLine = function (d) {\n return this.classShape(d) + this.generateClass(CLASS.line, d.id);\n };\n\n ChartInternal.prototype.classLines = function (d) {\n return this.classShapes(d) + this.generateClass(CLASS.lines, d.id);\n };\n\n ChartInternal.prototype.classCircle = function (d) {\n return this.classShape(d) + this.generateClass(CLASS.circle, d.index);\n };\n\n ChartInternal.prototype.classCircles = function (d) {\n return this.classShapes(d) + this.generateClass(CLASS.circles, d.id);\n };\n\n ChartInternal.prototype.classBar = function (d) {\n return this.classShape(d) + this.generateClass(CLASS.bar, d.index);\n };\n\n ChartInternal.prototype.classBars = function (d) {\n return this.classShapes(d) + this.generateClass(CLASS.bars, d.id);\n };\n\n ChartInternal.prototype.classArc = function (d) {\n return this.classShape(d.data) + this.generateClass(CLASS.arc, d.data.id);\n };\n\n ChartInternal.prototype.classArcs = function (d) {\n return this.classShapes(d.data) + this.generateClass(CLASS.arcs, d.data.id);\n };\n\n ChartInternal.prototype.classArea = function (d) {\n return this.classShape(d) + this.generateClass(CLASS.area, d.id);\n };\n\n ChartInternal.prototype.classAreas = function (d) {\n return this.classShapes(d) + this.generateClass(CLASS.areas, d.id);\n };\n\n ChartInternal.prototype.classRegion = function (d, i) {\n return this.generateClass(CLASS.region, i) + ' ' + ('class' in d ? d['class'] : '');\n };\n\n ChartInternal.prototype.classEvent = function (d) {\n return this.generateClass(CLASS.eventRect, d.index);\n };\n\n ChartInternal.prototype.classTarget = function (id) {\n var $$ = this;\n var additionalClassSuffix = $$.config.data_classes[id],\n additionalClass = '';\n\n if (additionalClassSuffix) {\n additionalClass = ' ' + CLASS.target + '-' + additionalClassSuffix;\n }\n\n return $$.generateClass(CLASS.target, id) + additionalClass;\n };\n\n ChartInternal.prototype.classFocus = function (d) {\n return this.classFocused(d) + this.classDefocused(d);\n };\n\n ChartInternal.prototype.classFocused = function (d) {\n return ' ' + (this.focusedTargetIds.indexOf(d.id) >= 0 ? CLASS.focused : '');\n };\n\n ChartInternal.prototype.classDefocused = function (d) {\n return ' ' + (this.defocusedTargetIds.indexOf(d.id) >= 0 ? CLASS.defocused : '');\n };\n\n ChartInternal.prototype.classChartText = function (d) {\n return CLASS.chartText + this.classTarget(d.id);\n };\n\n ChartInternal.prototype.classChartLine = function (d) {\n return CLASS.chartLine + this.classTarget(d.id);\n };\n\n ChartInternal.prototype.classChartBar = function (d) {\n return CLASS.chartBar + this.classTarget(d.id);\n };\n\n ChartInternal.prototype.classChartArc = function (d) {\n return CLASS.chartArc + this.classTarget(d.data.id);\n };\n\n ChartInternal.prototype.getTargetSelectorSuffix = function (targetId) {\n return this.generateTargetClass(targetId).replace(/([?!@#$%^&*()_=+,.<>'\":;\\[\\]\\/|~`{}\\\\])/g, '\\\\$1');\n };\n\n ChartInternal.prototype.selectorTarget = function (id, prefix) {\n return (prefix || '') + '.' + CLASS.target + this.getTargetSelectorSuffix(id);\n };\n\n ChartInternal.prototype.selectorTargets = function (ids, prefix) {\n var $$ = this;\n ids = ids || [];\n return ids.length ? ids.map(function (id) {\n return $$.selectorTarget(id, prefix);\n }) : null;\n };\n\n ChartInternal.prototype.selectorLegend = function (id) {\n return '.' + CLASS.legendItem + this.getTargetSelectorSuffix(id);\n };\n\n ChartInternal.prototype.selectorLegends = function (ids) {\n var $$ = this;\n return ids && ids.length ? ids.map(function (id) {\n return $$.selectorLegend(id);\n }) : null;\n };\n\n ChartInternal.prototype.getClipPath = function (id) {\n var isIE9 = window.navigator.appVersion.toLowerCase().indexOf(\"msie 9.\") >= 0;\n return \"url(\" + (isIE9 ? \"\" : document.URL.split('#')[0]) + \"#\" + id + \")\";\n };\n\n ChartInternal.prototype.appendClip = function (parent, id) {\n return parent.append(\"clipPath\").attr(\"id\", id).append(\"rect\");\n };\n\n ChartInternal.prototype.getAxisClipX = function (forHorizontal) {\n // axis line width + padding for left\n var left = Math.max(30, this.margin.left);\n return forHorizontal ? -(1 + left) : -(left - 1);\n };\n\n ChartInternal.prototype.getAxisClipY = function (forHorizontal) {\n return forHorizontal ? -20 : -this.margin.top;\n };\n\n ChartInternal.prototype.getXAxisClipX = function () {\n var $$ = this;\n return $$.getAxisClipX(!$$.config.axis_rotated);\n };\n\n ChartInternal.prototype.getXAxisClipY = function () {\n var $$ = this;\n return $$.getAxisClipY(!$$.config.axis_rotated);\n };\n\n ChartInternal.prototype.getYAxisClipX = function () {\n var $$ = this;\n return $$.config.axis_y_inner ? -1 : $$.getAxisClipX($$.config.axis_rotated);\n };\n\n ChartInternal.prototype.getYAxisClipY = function () {\n var $$ = this;\n return $$.getAxisClipY($$.config.axis_rotated);\n };\n\n ChartInternal.prototype.getAxisClipWidth = function (forHorizontal) {\n var $$ = this,\n left = Math.max(30, $$.margin.left),\n right = Math.max(30, $$.margin.right); // width + axis line width + padding for left/right\n\n return forHorizontal ? $$.width + 2 + left + right : $$.margin.left + 20;\n };\n\n ChartInternal.prototype.getAxisClipHeight = function (forHorizontal) {\n // less than 20 is not enough to show the axis label 'outer' without legend\n return (forHorizontal ? this.margin.bottom : this.margin.top + this.height) + 20;\n };\n\n ChartInternal.prototype.getXAxisClipWidth = function () {\n var $$ = this;\n return $$.getAxisClipWidth(!$$.config.axis_rotated);\n };\n\n ChartInternal.prototype.getXAxisClipHeight = function () {\n var $$ = this;\n return $$.getAxisClipHeight(!$$.config.axis_rotated);\n };\n\n ChartInternal.prototype.getYAxisClipWidth = function () {\n var $$ = this;\n return $$.getAxisClipWidth($$.config.axis_rotated) + ($$.config.axis_y_inner ? 20 : 0);\n };\n\n ChartInternal.prototype.getYAxisClipHeight = function () {\n var $$ = this;\n return $$.getAxisClipHeight($$.config.axis_rotated);\n };\n\n ChartInternal.prototype.generateColor = function () {\n var $$ = this,\n config = $$.config,\n d3 = $$.d3,\n colors = config.data_colors,\n pattern = notEmpty(config.color_pattern) ? config.color_pattern : d3.schemeCategory10,\n callback = config.data_color,\n ids = [];\n return function (d) {\n var id = d.id || d.data && d.data.id || d,\n color; // if callback function is provided\n\n if (colors[id] instanceof Function) {\n color = colors[id](d);\n } // if specified, choose that color\n else if (colors[id]) {\n color = colors[id];\n } // if not specified, choose from pattern\n else {\n if (ids.indexOf(id) < 0) {\n ids.push(id);\n }\n\n color = pattern[ids.indexOf(id) % pattern.length];\n colors[id] = color;\n }\n\n return callback instanceof Function ? callback(color, d) : color;\n };\n };\n\n ChartInternal.prototype.generateLevelColor = function () {\n var $$ = this,\n config = $$.config,\n colors = config.color_pattern,\n threshold = config.color_threshold,\n asValue = threshold.unit === 'value',\n values = threshold.values && threshold.values.length ? threshold.values : [],\n max = threshold.max || 100;\n return notEmpty(threshold) && notEmpty(colors) ? function (value) {\n var i,\n v,\n color = colors[colors.length - 1];\n\n for (i = 0; i < values.length; i++) {\n v = asValue ? value : value * 100 / max;\n\n if (v < values[i]) {\n color = colors[i];\n break;\n }\n }\n\n return color;\n } : null;\n };\n\n ChartInternal.prototype.getDefaultConfig = function () {\n var config = {\n bindto: '#chart',\n svg_classname: undefined,\n size_width: undefined,\n size_height: undefined,\n padding_left: undefined,\n padding_right: undefined,\n padding_top: undefined,\n padding_bottom: undefined,\n resize_auto: true,\n zoom_enabled: false,\n zoom_initialRange: undefined,\n zoom_type: 'scroll',\n zoom_disableDefaultBehavior: false,\n zoom_privileged: false,\n zoom_rescale: false,\n zoom_onzoom: function zoom_onzoom() {},\n zoom_onzoomstart: function zoom_onzoomstart() {},\n zoom_onzoomend: function zoom_onzoomend() {},\n zoom_x_min: undefined,\n zoom_x_max: undefined,\n interaction_brighten: true,\n interaction_enabled: true,\n onmouseover: function onmouseover() {},\n onmouseout: function onmouseout() {},\n onresize: function onresize() {},\n onresized: function onresized() {},\n oninit: function oninit() {},\n onrendered: function onrendered() {},\n transition_duration: 350,\n data_x: undefined,\n data_xs: {},\n data_xFormat: '%Y-%m-%d',\n data_xLocaltime: true,\n data_xSort: true,\n data_idConverter: function data_idConverter(id) {\n return id;\n },\n data_names: {},\n data_classes: {},\n data_groups: [],\n data_axes: {},\n data_type: undefined,\n data_types: {},\n data_labels: {},\n data_order: 'desc',\n data_regions: {},\n data_color: undefined,\n data_colors: {},\n data_hide: false,\n data_filter: undefined,\n data_selection_enabled: false,\n data_selection_grouped: false,\n data_selection_isselectable: function data_selection_isselectable() {\n return true;\n },\n data_selection_multiple: true,\n data_selection_draggable: false,\n data_onclick: function data_onclick() {},\n data_onmouseover: function data_onmouseover() {},\n data_onmouseout: function data_onmouseout() {},\n data_onselected: function data_onselected() {},\n data_onunselected: function data_onunselected() {},\n data_url: undefined,\n data_headers: undefined,\n data_json: undefined,\n data_rows: undefined,\n data_columns: undefined,\n data_mimeType: undefined,\n data_keys: undefined,\n // configuration for no plot-able data supplied.\n data_empty_label_text: \"\",\n // subchart\n subchart_show: false,\n subchart_size_height: 60,\n subchart_axis_x_show: true,\n subchart_onbrush: function subchart_onbrush() {},\n // color\n color_pattern: [],\n color_threshold: {},\n // legend\n legend_show: true,\n legend_hide: false,\n legend_position: 'bottom',\n legend_inset_anchor: 'top-left',\n legend_inset_x: 10,\n legend_inset_y: 0,\n legend_inset_step: undefined,\n legend_item_onclick: undefined,\n legend_item_onmouseover: undefined,\n legend_item_onmouseout: undefined,\n legend_equally: false,\n legend_padding: 0,\n legend_item_tile_width: 10,\n legend_item_tile_height: 10,\n // axis\n axis_rotated: false,\n axis_x_show: true,\n axis_x_type: 'indexed',\n axis_x_localtime: true,\n axis_x_categories: [],\n axis_x_tick_centered: false,\n axis_x_tick_format: undefined,\n axis_x_tick_culling: {},\n axis_x_tick_culling_max: 10,\n axis_x_tick_count: undefined,\n axis_x_tick_fit: true,\n axis_x_tick_values: null,\n axis_x_tick_rotate: 0,\n axis_x_tick_outer: true,\n axis_x_tick_multiline: true,\n axis_x_tick_multilineMax: 0,\n axis_x_tick_width: null,\n axis_x_max: undefined,\n axis_x_min: undefined,\n axis_x_padding: {},\n axis_x_height: undefined,\n axis_x_selection: undefined,\n axis_x_label: {},\n axis_x_inner: undefined,\n axis_y_show: true,\n axis_y_type: undefined,\n axis_y_max: undefined,\n axis_y_min: undefined,\n axis_y_inverted: false,\n axis_y_center: undefined,\n axis_y_inner: undefined,\n axis_y_label: {},\n axis_y_tick_format: undefined,\n axis_y_tick_outer: true,\n axis_y_tick_values: null,\n axis_y_tick_rotate: 0,\n axis_y_tick_count: undefined,\n axis_y_tick_time_type: undefined,\n axis_y_tick_time_interval: undefined,\n axis_y_padding: {},\n axis_y_default: undefined,\n axis_y2_show: false,\n axis_y2_max: undefined,\n axis_y2_min: undefined,\n axis_y2_inverted: false,\n axis_y2_center: undefined,\n axis_y2_inner: undefined,\n axis_y2_label: {},\n axis_y2_tick_format: undefined,\n axis_y2_tick_outer: true,\n axis_y2_tick_values: null,\n axis_y2_tick_count: undefined,\n axis_y2_padding: {},\n axis_y2_default: undefined,\n // grid\n grid_x_show: false,\n grid_x_type: 'tick',\n grid_x_lines: [],\n grid_y_show: false,\n // not used\n // grid_y_type: 'tick',\n grid_y_lines: [],\n grid_y_ticks: 10,\n grid_focus_show: true,\n grid_lines_front: true,\n // point - point of each data\n point_show: true,\n point_r: 2.5,\n point_sensitivity: 10,\n point_focus_expand_enabled: true,\n point_focus_expand_r: undefined,\n point_select_r: undefined,\n // line\n line_connectNull: false,\n line_step_type: 'step',\n // bar\n bar_width: undefined,\n bar_width_ratio: 0.6,\n bar_width_max: undefined,\n bar_zerobased: true,\n bar_space: 0,\n // area\n area_zerobased: true,\n area_above: false,\n // pie\n pie_label_show: true,\n pie_label_format: undefined,\n pie_label_threshold: 0.05,\n pie_label_ratio: undefined,\n pie_expand: {},\n pie_expand_duration: 50,\n // gauge\n gauge_fullCircle: false,\n gauge_label_show: true,\n gauge_labelLine_show: true,\n gauge_label_format: undefined,\n gauge_min: 0,\n gauge_max: 100,\n gauge_startingAngle: -1 * Math.PI / 2,\n gauge_label_extents: undefined,\n gauge_units: undefined,\n gauge_width: undefined,\n gauge_arcs_minWidth: 5,\n gauge_expand: {},\n gauge_expand_duration: 50,\n // donut\n donut_label_show: true,\n donut_label_format: undefined,\n donut_label_threshold: 0.05,\n donut_label_ratio: undefined,\n donut_width: undefined,\n donut_title: \"\",\n donut_expand: {},\n donut_expand_duration: 50,\n // spline\n spline_interpolation_type: 'cardinal',\n // region - region to change style\n regions: [],\n // tooltip - show when mouseover on each data\n tooltip_show: true,\n tooltip_grouped: true,\n tooltip_order: undefined,\n tooltip_format_title: undefined,\n tooltip_format_name: undefined,\n tooltip_format_value: undefined,\n tooltip_position: undefined,\n tooltip_contents: function tooltip_contents(d, defaultTitleFormat, defaultValueFormat, color) {\n return this.getTooltipContent ? this.getTooltipContent(d, defaultTitleFormat, defaultValueFormat, color) : '';\n },\n tooltip_init_show: false,\n tooltip_init_x: 0,\n tooltip_init_position: {\n top: '0px',\n left: '50px'\n },\n tooltip_onshow: function tooltip_onshow() {},\n tooltip_onhide: function tooltip_onhide() {},\n // title\n title_text: undefined,\n title_padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n },\n title_position: 'top-center'\n };\n Object.keys(this.additionalConfig).forEach(function (key) {\n config[key] = this.additionalConfig[key];\n }, this);\n return config;\n };\n\n ChartInternal.prototype.additionalConfig = {};\n\n ChartInternal.prototype.loadConfig = function (config) {\n var this_config = this.config,\n target,\n keys,\n read;\n\n function find() {\n var key = keys.shift(); // console.log(\"key =>\", key, \", target =>\", target);\n\n if (key && target && _typeof(target) === 'object' && key in target) {\n target = target[key];\n return find();\n } else if (!key) {\n return target;\n } else {\n return undefined;\n }\n }\n\n Object.keys(this_config).forEach(function (key) {\n target = config;\n keys = key.split('_');\n read = find(); // console.log(\"CONFIG : \", key, read);\n\n if (isDefined(read)) {\n this_config[key] = read;\n }\n });\n };\n\n ChartInternal.prototype.convertUrlToData = function (url, mimeType, headers, keys, done) {\n var $$ = this,\n type = mimeType ? mimeType : 'csv',\n f,\n converter;\n\n if (type === 'json') {\n f = $$.d3.json;\n converter = $$.convertJsonToData;\n } else if (type === 'tsv') {\n f = $$.d3.tsv;\n converter = $$.convertXsvToData;\n } else {\n f = $$.d3.csv;\n converter = $$.convertXsvToData;\n }\n\n f(url, headers).then(function (data) {\n done.call($$, converter.call($$, data, keys));\n }).catch(function (error) {\n throw error;\n });\n };\n\n ChartInternal.prototype.convertXsvToData = function (xsv) {\n var keys = xsv.columns,\n rows = xsv;\n\n if (rows.length === 0) {\n return {\n keys: keys,\n rows: [keys.reduce(function (row, key) {\n return Object.assign(row, _defineProperty({}, key, null));\n }, {})]\n };\n } else {\n // [].concat() is to convert result into a plain array otherwise\n // test is not happy because rows have properties.\n return {\n keys: keys,\n rows: [].concat(xsv)\n };\n }\n };\n\n ChartInternal.prototype.convertJsonToData = function (json, keys) {\n var $$ = this,\n new_rows = [],\n targetKeys,\n data;\n\n if (keys) {\n // when keys specified, json would be an array that includes objects\n if (keys.x) {\n targetKeys = keys.value.concat(keys.x);\n $$.config.data_x = keys.x;\n } else {\n targetKeys = keys.value;\n }\n\n new_rows.push(targetKeys);\n json.forEach(function (o) {\n var new_row = [];\n targetKeys.forEach(function (key) {\n // convert undefined to null because undefined data will be removed in convertDataToTargets()\n var v = $$.findValueInJson(o, key);\n\n if (isUndefined(v)) {\n v = null;\n }\n\n new_row.push(v);\n });\n new_rows.push(new_row);\n });\n data = $$.convertRowsToData(new_rows);\n } else {\n Object.keys(json).forEach(function (key) {\n new_rows.push([key].concat(json[key]));\n });\n data = $$.convertColumnsToData(new_rows);\n }\n\n return data;\n };\n\n ChartInternal.prototype.findValueInJson = function (object, path) {\n path = path.replace(/\\[(\\w+)\\]/g, '.$1'); // convert indexes to properties (replace [] with .)\n\n path = path.replace(/^\\./, ''); // strip a leading dot\n\n var pathArray = path.split('.');\n\n for (var i = 0; i < pathArray.length; ++i) {\n var k = pathArray[i];\n\n if (k in object) {\n object = object[k];\n } else {\n return;\n }\n }\n\n return object;\n };\n /**\n * Converts the rows to normalized data.\n * @param {any[][]} rows The row data\n * @return {Object}\n */\n\n\n ChartInternal.prototype.convertRowsToData = function (rows) {\n var newRows = [];\n var keys = rows[0];\n\n for (var i = 1; i < rows.length; i++) {\n var newRow = {};\n\n for (var j = 0; j < rows[i].length; j++) {\n if (isUndefined(rows[i][j])) {\n throw new Error(\"Source data is missing a component at (\" + i + \",\" + j + \")!\");\n }\n\n newRow[keys[j]] = rows[i][j];\n }\n\n newRows.push(newRow);\n }\n\n return {\n keys: keys,\n rows: newRows\n };\n };\n /**\n * Converts the columns to normalized data.\n * @param {any[][]} columns The column data\n * @return {Object}\n */\n\n\n ChartInternal.prototype.convertColumnsToData = function (columns) {\n var newRows = [];\n var keys = [];\n\n for (var i = 0; i < columns.length; i++) {\n var key = columns[i][0];\n\n for (var j = 1; j < columns[i].length; j++) {\n if (isUndefined(newRows[j - 1])) {\n newRows[j - 1] = {};\n }\n\n if (isUndefined(columns[i][j])) {\n throw new Error(\"Source data is missing a component at (\" + i + \",\" + j + \")!\");\n }\n\n newRows[j - 1][key] = columns[i][j];\n }\n\n keys.push(key);\n }\n\n return {\n keys: keys,\n rows: newRows\n };\n };\n /**\n * Converts the data format into the target format.\n * @param {!Object} data\n * @param {!Array} data.keys Ordered list of target IDs.\n * @param {!Array} data.rows Rows of data to convert.\n * @param {boolean} appendXs True to append to $$.data.xs, False to replace.\n * @return {!Array}\n */\n\n\n ChartInternal.prototype.convertDataToTargets = function (data, appendXs) {\n var $$ = this,\n config = $$.config,\n targets,\n ids,\n xs,\n keys; // handles format where keys are not orderly provided\n\n if (isArray(data)) {\n keys = Object.keys(data[0]);\n } else {\n keys = data.keys;\n data = data.rows;\n }\n\n ids = keys.filter($$.isNotX, $$);\n xs = keys.filter($$.isX, $$); // save x for update data by load when custom x and c3.x API\n\n ids.forEach(function (id) {\n var xKey = $$.getXKey(id);\n\n if ($$.isCustomX() || $$.isTimeSeries()) {\n // if included in input data\n if (xs.indexOf(xKey) >= 0) {\n $$.data.xs[id] = (appendXs && $$.data.xs[id] ? $$.data.xs[id] : []).concat(data.map(function (d) {\n return d[xKey];\n }).filter(isValue).map(function (rawX, i) {\n return $$.generateTargetX(rawX, id, i);\n }));\n } // if not included in input data, find from preloaded data of other id's x\n else if (config.data_x) {\n $$.data.xs[id] = $$.getOtherTargetXs();\n } // if not included in input data, find from preloaded data\n else if (notEmpty(config.data_xs)) {\n $$.data.xs[id] = $$.getXValuesOfXKey(xKey, $$.data.targets);\n } // MEMO: if no x included, use same x of current will be used\n\n } else {\n $$.data.xs[id] = data.map(function (d, i) {\n return i;\n });\n }\n }); // check x is defined\n\n ids.forEach(function (id) {\n if (!$$.data.xs[id]) {\n throw new Error('x is not defined for id = \"' + id + '\".');\n }\n }); // convert to target\n\n targets = ids.map(function (id, index) {\n var convertedId = config.data_idConverter(id);\n return {\n id: convertedId,\n id_org: id,\n values: data.map(function (d, i) {\n var xKey = $$.getXKey(id),\n rawX = d[xKey],\n value = d[id] !== null && !isNaN(d[id]) ? +d[id] : null,\n x; // use x as categories if custom x and categorized\n\n if ($$.isCustomX() && $$.isCategorized() && !isUndefined(rawX)) {\n if (index === 0 && i === 0) {\n config.axis_x_categories = [];\n }\n\n x = config.axis_x_categories.indexOf(rawX);\n\n if (x === -1) {\n x = config.axis_x_categories.length;\n config.axis_x_categories.push(rawX);\n }\n } else {\n x = $$.generateTargetX(rawX, id, i);\n } // mark as x = undefined if value is undefined and filter to remove after mapped\n\n\n if (isUndefined(d[id]) || $$.data.xs[id].length <= i) {\n x = undefined;\n }\n\n return {\n x: x,\n value: value,\n id: convertedId\n };\n }).filter(function (v) {\n return isDefined(v.x);\n })\n };\n }); // finish targets\n\n targets.forEach(function (t) {\n var i; // sort values by its x\n\n if (config.data_xSort) {\n t.values = t.values.sort(function (v1, v2) {\n var x1 = v1.x || v1.x === 0 ? v1.x : Infinity,\n x2 = v2.x || v2.x === 0 ? v2.x : Infinity;\n return x1 - x2;\n });\n } // indexing each value\n\n\n i = 0;\n t.values.forEach(function (v) {\n v.index = i++;\n }); // this needs to be sorted because its index and value.index is identical\n\n $$.data.xs[t.id].sort(function (v1, v2) {\n return v1 - v2;\n });\n }); // cache information about values\n\n $$.hasNegativeValue = $$.hasNegativeValueInTargets(targets);\n $$.hasPositiveValue = $$.hasPositiveValueInTargets(targets); // set target types\n\n if (config.data_type) {\n $$.setTargetType($$.mapToIds(targets).filter(function (id) {\n return !(id in config.data_types);\n }), config.data_type);\n } // cache as original id keyed\n\n\n targets.forEach(function (d) {\n $$.addCache(d.id_org, d);\n });\n return targets;\n };\n\n ChartInternal.prototype.isX = function (key) {\n var $$ = this,\n config = $$.config;\n return config.data_x && key === config.data_x || notEmpty(config.data_xs) && hasValue(config.data_xs, key);\n };\n\n ChartInternal.prototype.isNotX = function (key) {\n return !this.isX(key);\n };\n\n ChartInternal.prototype.getXKey = function (id) {\n var $$ = this,\n config = $$.config;\n return config.data_x ? config.data_x : notEmpty(config.data_xs) ? config.data_xs[id] : null;\n };\n\n ChartInternal.prototype.getXValuesOfXKey = function (key, targets) {\n var $$ = this,\n xValues,\n ids = targets && notEmpty(targets) ? $$.mapToIds(targets) : [];\n ids.forEach(function (id) {\n if ($$.getXKey(id) === key) {\n xValues = $$.data.xs[id];\n }\n });\n return xValues;\n };\n\n ChartInternal.prototype.getXValue = function (id, i) {\n var $$ = this;\n return id in $$.data.xs && $$.data.xs[id] && isValue($$.data.xs[id][i]) ? $$.data.xs[id][i] : i;\n };\n\n ChartInternal.prototype.getOtherTargetXs = function () {\n var $$ = this,\n idsForX = Object.keys($$.data.xs);\n return idsForX.length ? $$.data.xs[idsForX[0]] : null;\n };\n\n ChartInternal.prototype.getOtherTargetX = function (index) {\n var xs = this.getOtherTargetXs();\n return xs && index < xs.length ? xs[index] : null;\n };\n\n ChartInternal.prototype.addXs = function (xs) {\n var $$ = this;\n Object.keys(xs).forEach(function (id) {\n $$.config.data_xs[id] = xs[id];\n });\n };\n\n ChartInternal.prototype.addName = function (data) {\n var $$ = this,\n name;\n\n if (data) {\n name = $$.config.data_names[data.id];\n data.name = name !== undefined ? name : data.id;\n }\n\n return data;\n };\n\n ChartInternal.prototype.getValueOnIndex = function (values, index) {\n var valueOnIndex = values.filter(function (v) {\n return v.index === index;\n });\n return valueOnIndex.length ? valueOnIndex[0] : null;\n };\n\n ChartInternal.prototype.updateTargetX = function (targets, x) {\n var $$ = this;\n targets.forEach(function (t) {\n t.values.forEach(function (v, i) {\n v.x = $$.generateTargetX(x[i], t.id, i);\n });\n $$.data.xs[t.id] = x;\n });\n };\n\n ChartInternal.prototype.updateTargetXs = function (targets, xs) {\n var $$ = this;\n targets.forEach(function (t) {\n if (xs[t.id]) {\n $$.updateTargetX([t], xs[t.id]);\n }\n });\n };\n\n ChartInternal.prototype.generateTargetX = function (rawX, id, index) {\n var $$ = this,\n x;\n\n if ($$.isTimeSeries()) {\n x = rawX ? $$.parseDate(rawX) : $$.parseDate($$.getXValue(id, index));\n } else if ($$.isCustomX() && !$$.isCategorized()) {\n x = isValue(rawX) ? +rawX : $$.getXValue(id, index);\n } else {\n x = index;\n }\n\n return x;\n };\n\n ChartInternal.prototype.cloneTarget = function (target) {\n return {\n id: target.id,\n id_org: target.id_org,\n values: target.values.map(function (d) {\n return {\n x: d.x,\n value: d.value,\n id: d.id\n };\n })\n };\n };\n\n ChartInternal.prototype.getMaxDataCount = function () {\n var $$ = this;\n return $$.d3.max($$.data.targets, function (t) {\n return t.values.length;\n });\n };\n\n ChartInternal.prototype.mapToIds = function (targets) {\n return targets.map(function (d) {\n return d.id;\n });\n };\n\n ChartInternal.prototype.mapToTargetIds = function (ids) {\n var $$ = this;\n return ids ? [].concat(ids) : $$.mapToIds($$.data.targets);\n };\n\n ChartInternal.prototype.hasTarget = function (targets, id) {\n var ids = this.mapToIds(targets),\n i;\n\n for (i = 0; i < ids.length; i++) {\n if (ids[i] === id) {\n return true;\n }\n }\n\n return false;\n };\n\n ChartInternal.prototype.isTargetToShow = function (targetId) {\n return this.hiddenTargetIds.indexOf(targetId) < 0;\n };\n\n ChartInternal.prototype.isLegendToShow = function (targetId) {\n return this.hiddenLegendIds.indexOf(targetId) < 0;\n };\n\n ChartInternal.prototype.filterTargetsToShow = function (targets) {\n var $$ = this;\n return targets.filter(function (t) {\n return $$.isTargetToShow(t.id);\n });\n };\n\n ChartInternal.prototype.mapTargetsToUniqueXs = function (targets) {\n var $$ = this;\n var xs = $$.d3.set($$.d3.merge(targets.map(function (t) {\n return t.values.map(function (v) {\n return +v.x;\n });\n }))).values();\n xs = $$.isTimeSeries() ? xs.map(function (x) {\n return new Date(+x);\n }) : xs.map(function (x) {\n return +x;\n });\n return xs.sort(function (a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n });\n };\n\n ChartInternal.prototype.addHiddenTargetIds = function (targetIds) {\n targetIds = targetIds instanceof Array ? targetIds : new Array(targetIds);\n\n for (var i = 0; i < targetIds.length; i++) {\n if (this.hiddenTargetIds.indexOf(targetIds[i]) < 0) {\n this.hiddenTargetIds = this.hiddenTargetIds.concat(targetIds[i]);\n }\n }\n };\n\n ChartInternal.prototype.removeHiddenTargetIds = function (targetIds) {\n this.hiddenTargetIds = this.hiddenTargetIds.filter(function (id) {\n return targetIds.indexOf(id) < 0;\n });\n };\n\n ChartInternal.prototype.addHiddenLegendIds = function (targetIds) {\n targetIds = targetIds instanceof Array ? targetIds : new Array(targetIds);\n\n for (var i = 0; i < targetIds.length; i++) {\n if (this.hiddenLegendIds.indexOf(targetIds[i]) < 0) {\n this.hiddenLegendIds = this.hiddenLegendIds.concat(targetIds[i]);\n }\n }\n };\n\n ChartInternal.prototype.removeHiddenLegendIds = function (targetIds) {\n this.hiddenLegendIds = this.hiddenLegendIds.filter(function (id) {\n return targetIds.indexOf(id) < 0;\n });\n };\n\n ChartInternal.prototype.getValuesAsIdKeyed = function (targets) {\n var ys = {};\n targets.forEach(function (t) {\n ys[t.id] = [];\n t.values.forEach(function (v) {\n ys[t.id].push(v.value);\n });\n });\n return ys;\n };\n\n ChartInternal.prototype.checkValueInTargets = function (targets, checker) {\n var ids = Object.keys(targets),\n i,\n j,\n values;\n\n for (i = 0; i < ids.length; i++) {\n values = targets[ids[i]].values;\n\n for (j = 0; j < values.length; j++) {\n if (checker(values[j].value)) {\n return true;\n }\n }\n }\n\n return false;\n };\n\n ChartInternal.prototype.hasNegativeValueInTargets = function (targets) {\n return this.checkValueInTargets(targets, function (v) {\n return v < 0;\n });\n };\n\n ChartInternal.prototype.hasPositiveValueInTargets = function (targets) {\n return this.checkValueInTargets(targets, function (v) {\n return v > 0;\n });\n };\n\n ChartInternal.prototype.isOrderDesc = function () {\n var config = this.config;\n return typeof config.data_order === 'string' && config.data_order.toLowerCase() === 'desc';\n };\n\n ChartInternal.prototype.isOrderAsc = function () {\n var config = this.config;\n return typeof config.data_order === 'string' && config.data_order.toLowerCase() === 'asc';\n };\n\n ChartInternal.prototype.getOrderFunction = function () {\n var $$ = this,\n config = $$.config,\n orderAsc = $$.isOrderAsc(),\n orderDesc = $$.isOrderDesc();\n\n if (orderAsc || orderDesc) {\n var reducer = function reducer(p, c) {\n return p + Math.abs(c.value);\n };\n\n return function (t1, t2) {\n var t1Sum = t1.values.reduce(reducer, 0),\n t2Sum = t2.values.reduce(reducer, 0);\n return orderAsc ? t2Sum - t1Sum : t1Sum - t2Sum;\n };\n } else if (isFunction(config.data_order)) {\n return config.data_order;\n } else if (isArray(config.data_order)) {\n var order = config.data_order;\n return function (t1, t2) {\n return order.indexOf(t1.id) - order.indexOf(t2.id);\n };\n }\n };\n\n ChartInternal.prototype.orderTargets = function (targets) {\n var fct = this.getOrderFunction();\n\n if (fct) {\n targets.sort(fct);\n }\n\n return targets;\n };\n\n ChartInternal.prototype.filterByX = function (targets, x) {\n return this.d3.merge(targets.map(function (t) {\n return t.values;\n })).filter(function (v) {\n return v.x - x === 0;\n });\n };\n\n ChartInternal.prototype.filterRemoveNull = function (data) {\n return data.filter(function (d) {\n return isValue(d.value);\n });\n };\n\n ChartInternal.prototype.filterByXDomain = function (targets, xDomain) {\n return targets.map(function (t) {\n return {\n id: t.id,\n id_org: t.id_org,\n values: t.values.filter(function (v) {\n return xDomain[0] <= v.x && v.x <= xDomain[1];\n })\n };\n });\n };\n\n ChartInternal.prototype.hasDataLabel = function () {\n var config = this.config;\n\n if (typeof config.data_labels === 'boolean' && config.data_labels) {\n return true;\n } else if (_typeof(config.data_labels) === 'object' && notEmpty(config.data_labels)) {\n return true;\n }\n\n return false;\n };\n\n ChartInternal.prototype.getDataLabelLength = function (min, max, key) {\n var $$ = this,\n lengths = [0, 0],\n paddingCoef = 1.3;\n $$.selectChart.select('svg').selectAll('.dummy').data([min, max]).enter().append('text').text(function (d) {\n return $$.dataLabelFormat(d.id)(d);\n }).each(function (d, i) {\n lengths[i] = this.getBoundingClientRect()[key] * paddingCoef;\n }).remove();\n return lengths;\n };\n /**\n * Returns true if the given data point is not arc type, otherwise false.\n * @param {Object} d The data point\n * @return {boolean}\n */\n\n\n ChartInternal.prototype.isNoneArc = function (d) {\n return this.hasTarget(this.data.targets, d.id);\n };\n /**\n * Returns true if the given data point is arc type, otherwise false.\n * @param {Object} d The data point\n * @return {boolean}\n */\n\n\n ChartInternal.prototype.isArc = function (d) {\n return 'data' in d && this.hasTarget(this.data.targets, d.data.id);\n };\n\n ChartInternal.prototype.findClosestFromTargets = function (targets, pos) {\n var $$ = this,\n candidates; // map to array of closest points of each target\n\n candidates = targets.map(function (target) {\n return $$.findClosest(target.values, pos);\n }); // decide closest point and return\n\n return $$.findClosest(candidates, pos);\n };\n\n ChartInternal.prototype.findClosest = function (values, pos) {\n var $$ = this,\n minDist = $$.config.point_sensitivity,\n closest; // find mouseovering bar\n\n values.filter(function (v) {\n return v && $$.isBarType(v.id);\n }).forEach(function (v) {\n var shape = $$.main.select('.' + CLASS.bars + $$.getTargetSelectorSuffix(v.id) + ' .' + CLASS.bar + '-' + v.index).node();\n\n if (!closest && $$.isWithinBar($$.d3.mouse(shape), shape)) {\n closest = v;\n }\n }); // find closest point from non-bar\n\n values.filter(function (v) {\n return v && !$$.isBarType(v.id);\n }).forEach(function (v) {\n var d = $$.dist(v, pos);\n\n if (d < minDist) {\n minDist = d;\n closest = v;\n }\n });\n return closest;\n };\n\n ChartInternal.prototype.dist = function (data, pos) {\n var $$ = this,\n config = $$.config,\n xIndex = config.axis_rotated ? 1 : 0,\n yIndex = config.axis_rotated ? 0 : 1,\n y = $$.circleY(data, data.index),\n x = $$.x(data.x);\n return Math.sqrt(Math.pow(x - pos[xIndex], 2) + Math.pow(y - pos[yIndex], 2));\n };\n\n ChartInternal.prototype.convertValuesToStep = function (values) {\n var converted = [].concat(values),\n i;\n\n if (!this.isCategorized()) {\n return values;\n }\n\n for (i = values.length + 1; 0 < i; i--) {\n converted[i] = converted[i - 1];\n }\n\n converted[0] = {\n x: converted[0].x - 1,\n value: converted[0].value,\n id: converted[0].id\n };\n converted[values.length + 1] = {\n x: converted[values.length].x + 1,\n value: converted[values.length].value,\n id: converted[values.length].id\n };\n return converted;\n };\n\n ChartInternal.prototype.updateDataAttributes = function (name, attrs) {\n var $$ = this,\n config = $$.config,\n current = config['data_' + name];\n\n if (typeof attrs === 'undefined') {\n return current;\n }\n\n Object.keys(attrs).forEach(function (id) {\n current[id] = attrs[id];\n });\n $$.redraw({\n withLegend: true\n });\n return current;\n };\n\n ChartInternal.prototype.load = function (targets, args) {\n var $$ = this;\n\n if (targets) {\n // filter loading targets if needed\n if (args.filter) {\n targets = targets.filter(args.filter);\n } // set type if args.types || args.type specified\n\n\n if (args.type || args.types) {\n targets.forEach(function (t) {\n var type = args.types && args.types[t.id] ? args.types[t.id] : args.type;\n $$.setTargetType(t.id, type);\n });\n } // Update/Add data\n\n\n $$.data.targets.forEach(function (d) {\n for (var i = 0; i < targets.length; i++) {\n if (d.id === targets[i].id) {\n d.values = targets[i].values;\n targets.splice(i, 1);\n break;\n }\n }\n });\n $$.data.targets = $$.data.targets.concat(targets); // add remained\n } // Set targets\n\n\n $$.updateTargets($$.data.targets); // Redraw with new targets\n\n $$.redraw({\n withUpdateOrgXDomain: true,\n withUpdateXDomain: true,\n withLegend: true\n });\n\n if (args.done) {\n args.done();\n }\n };\n\n ChartInternal.prototype.loadFromArgs = function (args) {\n var $$ = this;\n\n if (args.data) {\n $$.load($$.convertDataToTargets(args.data), args);\n } else if (args.url) {\n $$.convertUrlToData(args.url, args.mimeType, args.headers, args.keys, function (data) {\n $$.load($$.convertDataToTargets(data), args);\n });\n } else if (args.json) {\n $$.load($$.convertDataToTargets($$.convertJsonToData(args.json, args.keys)), args);\n } else if (args.rows) {\n $$.load($$.convertDataToTargets($$.convertRowsToData(args.rows)), args);\n } else if (args.columns) {\n $$.load($$.convertDataToTargets($$.convertColumnsToData(args.columns)), args);\n } else {\n $$.load(null, args);\n }\n };\n\n ChartInternal.prototype.unload = function (targetIds, done) {\n var $$ = this;\n\n if (!done) {\n done = function done() {};\n } // filter existing target\n\n\n targetIds = targetIds.filter(function (id) {\n return $$.hasTarget($$.data.targets, id);\n }); // If no target, call done and return\n\n if (!targetIds || targetIds.length === 0) {\n done();\n return;\n }\n\n $$.svg.selectAll(targetIds.map(function (id) {\n return $$.selectorTarget(id);\n })).transition().style('opacity', 0).remove().call($$.endall, done);\n targetIds.forEach(function (id) {\n // Reset fadein for future load\n $$.withoutFadeIn[id] = false; // Remove target's elements\n\n if ($$.legend) {\n $$.legend.selectAll('.' + CLASS.legendItem + $$.getTargetSelectorSuffix(id)).remove();\n } // Remove target\n\n\n $$.data.targets = $$.data.targets.filter(function (t) {\n return t.id !== id;\n });\n });\n };\n\n ChartInternal.prototype.getYDomainMin = function (targets) {\n var $$ = this,\n config = $$.config,\n ids = $$.mapToIds(targets),\n ys = $$.getValuesAsIdKeyed(targets),\n j,\n k,\n baseId,\n idsInGroup,\n id,\n hasNegativeValue;\n\n if (config.data_groups.length > 0) {\n hasNegativeValue = $$.hasNegativeValueInTargets(targets);\n\n for (j = 0; j < config.data_groups.length; j++) {\n // Determine baseId\n idsInGroup = config.data_groups[j].filter(function (id) {\n return ids.indexOf(id) >= 0;\n });\n\n if (idsInGroup.length === 0) {\n continue;\n }\n\n baseId = idsInGroup[0]; // Consider negative values\n\n if (hasNegativeValue && ys[baseId]) {\n ys[baseId].forEach(function (v, i) {\n ys[baseId][i] = v < 0 ? v : 0;\n });\n } // Compute min\n\n\n for (k = 1; k < idsInGroup.length; k++) {\n id = idsInGroup[k];\n\n if (!ys[id]) {\n continue;\n }\n\n ys[id].forEach(function (v, i) {\n if ($$.axis.getId(id) === $$.axis.getId(baseId) && ys[baseId] && !(hasNegativeValue && +v > 0)) {\n ys[baseId][i] += +v;\n }\n });\n }\n }\n }\n\n return $$.d3.min(Object.keys(ys).map(function (key) {\n return $$.d3.min(ys[key]);\n }));\n };\n\n ChartInternal.prototype.getYDomainMax = function (targets) {\n var $$ = this,\n config = $$.config,\n ids = $$.mapToIds(targets),\n ys = $$.getValuesAsIdKeyed(targets),\n j,\n k,\n baseId,\n idsInGroup,\n id,\n hasPositiveValue;\n\n if (config.data_groups.length > 0) {\n hasPositiveValue = $$.hasPositiveValueInTargets(targets);\n\n for (j = 0; j < config.data_groups.length; j++) {\n // Determine baseId\n idsInGroup = config.data_groups[j].filter(function (id) {\n return ids.indexOf(id) >= 0;\n });\n\n if (idsInGroup.length === 0) {\n continue;\n }\n\n baseId = idsInGroup[0]; // Consider positive values\n\n if (hasPositiveValue && ys[baseId]) {\n ys[baseId].forEach(function (v, i) {\n ys[baseId][i] = v > 0 ? v : 0;\n });\n } // Compute max\n\n\n for (k = 1; k < idsInGroup.length; k++) {\n id = idsInGroup[k];\n\n if (!ys[id]) {\n continue;\n }\n\n ys[id].forEach(function (v, i) {\n if ($$.axis.getId(id) === $$.axis.getId(baseId) && ys[baseId] && !(hasPositiveValue && +v < 0)) {\n ys[baseId][i] += +v;\n }\n });\n }\n }\n }\n\n return $$.d3.max(Object.keys(ys).map(function (key) {\n return $$.d3.max(ys[key]);\n }));\n };\n\n ChartInternal.prototype.getYDomain = function (targets, axisId, xDomain) {\n var $$ = this,\n config = $$.config,\n targetsByAxisId = targets.filter(function (t) {\n return $$.axis.getId(t.id) === axisId;\n }),\n yTargets = xDomain ? $$.filterByXDomain(targetsByAxisId, xDomain) : targetsByAxisId,\n yMin = axisId === 'y2' ? config.axis_y2_min : config.axis_y_min,\n yMax = axisId === 'y2' ? config.axis_y2_max : config.axis_y_max,\n yDomainMin = $$.getYDomainMin(yTargets),\n yDomainMax = $$.getYDomainMax(yTargets),\n domain,\n domainLength,\n padding,\n padding_top,\n padding_bottom,\n center = axisId === 'y2' ? config.axis_y2_center : config.axis_y_center,\n yDomainAbs,\n lengths,\n diff,\n ratio,\n isAllPositive,\n isAllNegative,\n isZeroBased = $$.hasType('bar', yTargets) && config.bar_zerobased || $$.hasType('area', yTargets) && config.area_zerobased,\n isInverted = axisId === 'y2' ? config.axis_y2_inverted : config.axis_y_inverted,\n showHorizontalDataLabel = $$.hasDataLabel() && config.axis_rotated,\n showVerticalDataLabel = $$.hasDataLabel() && !config.axis_rotated; // MEMO: avoid inverting domain unexpectedly\n\n yDomainMin = isValue(yMin) ? yMin : isValue(yMax) ? yDomainMin < yMax ? yDomainMin : yMax - 10 : yDomainMin;\n yDomainMax = isValue(yMax) ? yMax : isValue(yMin) ? yMin < yDomainMax ? yDomainMax : yMin + 10 : yDomainMax;\n\n if (yTargets.length === 0) {\n // use current domain if target of axisId is none\n return axisId === 'y2' ? $$.y2.domain() : $$.y.domain();\n }\n\n if (isNaN(yDomainMin)) {\n // set minimum to zero when not number\n yDomainMin = 0;\n }\n\n if (isNaN(yDomainMax)) {\n // set maximum to have same value as yDomainMin\n yDomainMax = yDomainMin;\n }\n\n if (yDomainMin === yDomainMax) {\n yDomainMin < 0 ? yDomainMax = 0 : yDomainMin = 0;\n }\n\n isAllPositive = yDomainMin >= 0 && yDomainMax >= 0;\n isAllNegative = yDomainMin <= 0 && yDomainMax <= 0; // Cancel zerobased if axis_*_min / axis_*_max specified\n\n if (isValue(yMin) && isAllPositive || isValue(yMax) && isAllNegative) {\n isZeroBased = false;\n } // Bar/Area chart should be 0-based if all positive|negative\n\n\n if (isZeroBased) {\n if (isAllPositive) {\n yDomainMin = 0;\n }\n\n if (isAllNegative) {\n yDomainMax = 0;\n }\n }\n\n domainLength = Math.abs(yDomainMax - yDomainMin);\n padding = padding_top = padding_bottom = domainLength * 0.1;\n\n if (typeof center !== 'undefined') {\n yDomainAbs = Math.max(Math.abs(yDomainMin), Math.abs(yDomainMax));\n yDomainMax = center + yDomainAbs;\n yDomainMin = center - yDomainAbs;\n } // add padding for data label\n\n\n if (showHorizontalDataLabel) {\n lengths = $$.getDataLabelLength(yDomainMin, yDomainMax, 'width');\n diff = diffDomain($$.y.range());\n ratio = [lengths[0] / diff, lengths[1] / diff];\n padding_top += domainLength * (ratio[1] / (1 - ratio[0] - ratio[1]));\n padding_bottom += domainLength * (ratio[0] / (1 - ratio[0] - ratio[1]));\n } else if (showVerticalDataLabel) {\n lengths = $$.getDataLabelLength(yDomainMin, yDomainMax, 'height');\n padding_top += $$.axis.convertPixelsToAxisPadding(lengths[1], domainLength);\n padding_bottom += $$.axis.convertPixelsToAxisPadding(lengths[0], domainLength);\n }\n\n if (axisId === 'y' && notEmpty(config.axis_y_padding)) {\n padding_top = $$.axis.getPadding(config.axis_y_padding, 'top', padding_top, domainLength);\n padding_bottom = $$.axis.getPadding(config.axis_y_padding, 'bottom', padding_bottom, domainLength);\n }\n\n if (axisId === 'y2' && notEmpty(config.axis_y2_padding)) {\n padding_top = $$.axis.getPadding(config.axis_y2_padding, 'top', padding_top, domainLength);\n padding_bottom = $$.axis.getPadding(config.axis_y2_padding, 'bottom', padding_bottom, domainLength);\n } // Bar/Area chart should be 0-based if all positive|negative\n\n\n if (isZeroBased) {\n if (isAllPositive) {\n padding_bottom = yDomainMin;\n }\n\n if (isAllNegative) {\n padding_top = -yDomainMax;\n }\n }\n\n domain = [yDomainMin - padding_bottom, yDomainMax + padding_top];\n return isInverted ? domain.reverse() : domain;\n };\n\n ChartInternal.prototype.getXDomainMin = function (targets) {\n var $$ = this,\n config = $$.config;\n return isDefined(config.axis_x_min) ? $$.isTimeSeries() ? this.parseDate(config.axis_x_min) : config.axis_x_min : $$.d3.min(targets, function (t) {\n return $$.d3.min(t.values, function (v) {\n return v.x;\n });\n });\n };\n\n ChartInternal.prototype.getXDomainMax = function (targets) {\n var $$ = this,\n config = $$.config;\n return isDefined(config.axis_x_max) ? $$.isTimeSeries() ? this.parseDate(config.axis_x_max) : config.axis_x_max : $$.d3.max(targets, function (t) {\n return $$.d3.max(t.values, function (v) {\n return v.x;\n });\n });\n };\n\n ChartInternal.prototype.getXDomainPadding = function (domain) {\n var $$ = this,\n config = $$.config,\n diff = domain[1] - domain[0],\n maxDataCount,\n padding,\n paddingLeft,\n paddingRight;\n\n if ($$.isCategorized()) {\n padding = 0;\n } else if ($$.hasType('bar')) {\n maxDataCount = $$.getMaxDataCount();\n padding = maxDataCount > 1 ? diff / (maxDataCount - 1) / 2 : 0.5;\n } else {\n padding = diff * 0.01;\n }\n\n if (_typeof(config.axis_x_padding) === 'object' && notEmpty(config.axis_x_padding)) {\n paddingLeft = isValue(config.axis_x_padding.left) ? config.axis_x_padding.left : padding;\n paddingRight = isValue(config.axis_x_padding.right) ? config.axis_x_padding.right : padding;\n } else if (typeof config.axis_x_padding === 'number') {\n paddingLeft = paddingRight = config.axis_x_padding;\n } else {\n paddingLeft = paddingRight = padding;\n }\n\n return {\n left: paddingLeft,\n right: paddingRight\n };\n };\n\n ChartInternal.prototype.getXDomain = function (targets) {\n var $$ = this,\n xDomain = [$$.getXDomainMin(targets), $$.getXDomainMax(targets)],\n firstX = xDomain[0],\n lastX = xDomain[1],\n padding = $$.getXDomainPadding(xDomain),\n min = 0,\n max = 0; // show center of x domain if min and max are the same\n\n if (firstX - lastX === 0 && !$$.isCategorized()) {\n if ($$.isTimeSeries()) {\n firstX = new Date(firstX.getTime() * 0.5);\n lastX = new Date(lastX.getTime() * 1.5);\n } else {\n firstX = firstX === 0 ? 1 : firstX * 0.5;\n lastX = lastX === 0 ? -1 : lastX * 1.5;\n }\n }\n\n if (firstX || firstX === 0) {\n min = $$.isTimeSeries() ? new Date(firstX.getTime() - padding.left) : firstX - padding.left;\n }\n\n if (lastX || lastX === 0) {\n max = $$.isTimeSeries() ? new Date(lastX.getTime() + padding.right) : lastX + padding.right;\n }\n\n return [min, max];\n };\n\n ChartInternal.prototype.updateXDomain = function (targets, withUpdateXDomain, withUpdateOrgXDomain, withTrim, domain) {\n var $$ = this,\n config = $$.config;\n\n if (withUpdateOrgXDomain) {\n $$.x.domain(domain ? domain : $$.d3.extent($$.getXDomain(targets)));\n $$.orgXDomain = $$.x.domain();\n\n if (config.zoom_enabled) {\n $$.zoom.update();\n }\n\n $$.subX.domain($$.x.domain());\n\n if ($$.brush) {\n $$.brush.updateScale($$.subX);\n }\n }\n\n if (withUpdateXDomain) {\n $$.x.domain(domain ? domain : !$$.brush || $$.brush.empty() ? $$.orgXDomain : $$.brush.selectionAsValue());\n } // Trim domain when too big by zoom mousemove event\n\n\n if (withTrim) {\n $$.x.domain($$.trimXDomain($$.x.orgDomain()));\n }\n\n return $$.x.domain();\n };\n\n ChartInternal.prototype.trimXDomain = function (domain) {\n var zoomDomain = this.getZoomDomain(),\n min = zoomDomain[0],\n max = zoomDomain[1];\n\n if (domain[0] <= min) {\n domain[1] = +domain[1] + (min - domain[0]);\n domain[0] = min;\n }\n\n if (max <= domain[1]) {\n domain[0] = +domain[0] - (domain[1] - max);\n domain[1] = max;\n }\n\n return domain;\n };\n\n ChartInternal.prototype.drag = function (mouse) {\n var $$ = this,\n config = $$.config,\n main = $$.main,\n d3 = $$.d3;\n var sx, sy, mx, my, minX, maxX, minY, maxY;\n\n if ($$.hasArcType()) {\n return;\n }\n\n if (!config.data_selection_enabled) {\n return;\n } // do nothing if not selectable\n\n\n if (!config.data_selection_multiple) {\n return;\n } // skip when single selection because drag is used for multiple selection\n\n\n sx = $$.dragStart[0];\n sy = $$.dragStart[1];\n mx = mouse[0];\n my = mouse[1];\n minX = Math.min(sx, mx);\n maxX = Math.max(sx, mx);\n minY = config.data_selection_grouped ? $$.margin.top : Math.min(sy, my);\n maxY = config.data_selection_grouped ? $$.height : Math.max(sy, my);\n main.select('.' + CLASS.dragarea).attr('x', minX).attr('y', minY).attr('width', maxX - minX).attr('height', maxY - minY); // TODO: binary search when multiple xs\n\n main.selectAll('.' + CLASS.shapes).selectAll('.' + CLASS.shape).filter(function (d) {\n return config.data_selection_isselectable(d);\n }).each(function (d, i) {\n var shape = d3.select(this),\n isSelected = shape.classed(CLASS.SELECTED),\n isIncluded = shape.classed(CLASS.INCLUDED),\n _x,\n _y,\n _w,\n _h,\n toggle,\n isWithin = false,\n box;\n\n if (shape.classed(CLASS.circle)) {\n _x = shape.attr(\"cx\") * 1;\n _y = shape.attr(\"cy\") * 1;\n toggle = $$.togglePoint;\n isWithin = minX < _x && _x < maxX && minY < _y && _y < maxY;\n } else if (shape.classed(CLASS.bar)) {\n box = getPathBox(this);\n _x = box.x;\n _y = box.y;\n _w = box.width;\n _h = box.height;\n toggle = $$.togglePath;\n isWithin = !(maxX < _x || _x + _w < minX) && !(maxY < _y || _y + _h < minY);\n } else {\n // line/area selection not supported yet\n return;\n }\n\n if (isWithin ^ isIncluded) {\n shape.classed(CLASS.INCLUDED, !isIncluded); // TODO: included/unincluded callback here\n\n shape.classed(CLASS.SELECTED, !isSelected);\n toggle.call($$, !isSelected, shape, d, i);\n }\n });\n };\n\n ChartInternal.prototype.dragstart = function (mouse) {\n var $$ = this,\n config = $$.config;\n\n if ($$.hasArcType()) {\n return;\n }\n\n if (!config.data_selection_enabled) {\n return;\n } // do nothing if not selectable\n\n\n $$.dragStart = mouse;\n $$.main.select('.' + CLASS.chart).append('rect').attr('class', CLASS.dragarea).style('opacity', 0.1);\n $$.dragging = true;\n };\n\n ChartInternal.prototype.dragend = function () {\n var $$ = this,\n config = $$.config;\n\n if ($$.hasArcType()) {\n return;\n }\n\n if (!config.data_selection_enabled) {\n return;\n } // do nothing if not selectable\n\n\n $$.main.select('.' + CLASS.dragarea).transition().duration(100).style('opacity', 0).remove();\n $$.main.selectAll('.' + CLASS.shape).classed(CLASS.INCLUDED, false);\n $$.dragging = false;\n };\n\n ChartInternal.prototype.getYFormat = function (forArc) {\n var $$ = this,\n formatForY = forArc && !$$.hasType('gauge') ? $$.defaultArcValueFormat : $$.yFormat,\n formatForY2 = forArc && !$$.hasType('gauge') ? $$.defaultArcValueFormat : $$.y2Format;\n return function (v, ratio, id) {\n var format = $$.axis.getId(id) === 'y2' ? formatForY2 : formatForY;\n return format.call($$, v, ratio);\n };\n };\n\n ChartInternal.prototype.yFormat = function (v) {\n var $$ = this,\n config = $$.config,\n format = config.axis_y_tick_format ? config.axis_y_tick_format : $$.defaultValueFormat;\n return format(v);\n };\n\n ChartInternal.prototype.y2Format = function (v) {\n var $$ = this,\n config = $$.config,\n format = config.axis_y2_tick_format ? config.axis_y2_tick_format : $$.defaultValueFormat;\n return format(v);\n };\n\n ChartInternal.prototype.defaultValueFormat = function (v) {\n return isValue(v) ? +v : \"\";\n };\n\n ChartInternal.prototype.defaultArcValueFormat = function (v, ratio) {\n return (ratio * 100).toFixed(1) + '%';\n };\n\n ChartInternal.prototype.dataLabelFormat = function (targetId) {\n var $$ = this,\n data_labels = $$.config.data_labels,\n format,\n defaultFormat = function defaultFormat(v) {\n return isValue(v) ? +v : \"\";\n }; // find format according to axis id\n\n\n if (typeof data_labels.format === 'function') {\n format = data_labels.format;\n } else if (_typeof(data_labels.format) === 'object') {\n if (data_labels.format[targetId]) {\n format = data_labels.format[targetId] === true ? defaultFormat : data_labels.format[targetId];\n } else {\n format = function format() {\n return '';\n };\n }\n } else {\n format = defaultFormat;\n }\n\n return format;\n };\n\n ChartInternal.prototype.initGrid = function () {\n var $$ = this,\n config = $$.config,\n d3 = $$.d3;\n $$.grid = $$.main.append('g').attr(\"clip-path\", $$.clipPathForGrid).attr('class', CLASS.grid);\n\n if (config.grid_x_show) {\n $$.grid.append(\"g\").attr(\"class\", CLASS.xgrids);\n }\n\n if (config.grid_y_show) {\n $$.grid.append('g').attr('class', CLASS.ygrids);\n }\n\n if (config.grid_focus_show) {\n $$.grid.append('g').attr(\"class\", CLASS.xgridFocus).append('line').attr('class', CLASS.xgridFocus);\n }\n\n $$.xgrid = d3.selectAll([]);\n\n if (!config.grid_lines_front) {\n $$.initGridLines();\n }\n };\n\n ChartInternal.prototype.initGridLines = function () {\n var $$ = this,\n d3 = $$.d3;\n $$.gridLines = $$.main.append('g').attr(\"clip-path\", $$.clipPathForGrid).attr('class', CLASS.grid + ' ' + CLASS.gridLines);\n $$.gridLines.append('g').attr(\"class\", CLASS.xgridLines);\n $$.gridLines.append('g').attr('class', CLASS.ygridLines);\n $$.xgridLines = d3.selectAll([]);\n };\n\n ChartInternal.prototype.updateXGrid = function (withoutUpdate) {\n var $$ = this,\n config = $$.config,\n d3 = $$.d3,\n xgridData = $$.generateGridData(config.grid_x_type, $$.x),\n tickOffset = $$.isCategorized() ? $$.xAxis.tickOffset() : 0;\n $$.xgridAttr = config.axis_rotated ? {\n 'x1': 0,\n 'x2': $$.width,\n 'y1': function y1(d) {\n return $$.x(d) - tickOffset;\n },\n 'y2': function y2(d) {\n return $$.x(d) - tickOffset;\n }\n } : {\n 'x1': function x1(d) {\n return $$.x(d) + tickOffset;\n },\n 'x2': function x2(d) {\n return $$.x(d) + tickOffset;\n },\n 'y1': 0,\n 'y2': $$.height\n };\n\n $$.xgridAttr.opacity = function () {\n var pos = +d3.select(this).attr(config.axis_rotated ? 'y1' : 'x1');\n return pos === (config.axis_rotated ? $$.height : 0) ? 0 : 1;\n };\n\n var xgrid = $$.main.select('.' + CLASS.xgrids).selectAll('.' + CLASS.xgrid).data(xgridData);\n var xgridEnter = xgrid.enter().append('line').attr(\"class\", CLASS.xgrid).attr('x1', $$.xgridAttr.x1).attr('x2', $$.xgridAttr.x2).attr('y1', $$.xgridAttr.y1).attr('y2', $$.xgridAttr.y2).style(\"opacity\", 0);\n $$.xgrid = xgridEnter.merge(xgrid);\n\n if (!withoutUpdate) {\n $$.xgrid.attr('x1', $$.xgridAttr.x1).attr('x2', $$.xgridAttr.x2).attr('y1', $$.xgridAttr.y1).attr('y2', $$.xgridAttr.y2).style(\"opacity\", $$.xgridAttr.opacity);\n }\n\n xgrid.exit().remove();\n };\n\n ChartInternal.prototype.updateYGrid = function () {\n var $$ = this,\n config = $$.config,\n gridValues = $$.yAxis.tickValues() || $$.y.ticks(config.grid_y_ticks);\n var ygrid = $$.main.select('.' + CLASS.ygrids).selectAll('.' + CLASS.ygrid).data(gridValues);\n var ygridEnter = ygrid.enter().append('line') // TODO: x1, x2, y1, y2, opacity need to be set here maybe\n .attr('class', CLASS.ygrid);\n $$.ygrid = ygridEnter.merge(ygrid);\n $$.ygrid.attr(\"x1\", config.axis_rotated ? $$.y : 0).attr(\"x2\", config.axis_rotated ? $$.y : $$.width).attr(\"y1\", config.axis_rotated ? 0 : $$.y).attr(\"y2\", config.axis_rotated ? $$.height : $$.y);\n ygrid.exit().remove();\n $$.smoothLines($$.ygrid, 'grid');\n };\n\n ChartInternal.prototype.gridTextAnchor = function (d) {\n return d.position ? d.position : \"end\";\n };\n\n ChartInternal.prototype.gridTextDx = function (d) {\n return d.position === 'start' ? 4 : d.position === 'middle' ? 0 : -4;\n };\n\n ChartInternal.prototype.xGridTextX = function (d) {\n return d.position === 'start' ? -this.height : d.position === 'middle' ? -this.height / 2 : 0;\n };\n\n ChartInternal.prototype.yGridTextX = function (d) {\n return d.position === 'start' ? 0 : d.position === 'middle' ? this.width / 2 : this.width;\n };\n\n ChartInternal.prototype.updateGrid = function (duration) {\n var $$ = this,\n main = $$.main,\n config = $$.config,\n xgridLine,\n xgridLineEnter,\n ygridLine,\n ygridLineEnter,\n xv = $$.xv.bind($$),\n yv = $$.yv.bind($$),\n xGridTextX = $$.xGridTextX.bind($$),\n yGridTextX = $$.yGridTextX.bind($$); // hide if arc type\n\n $$.grid.style('visibility', $$.hasArcType() ? 'hidden' : 'visible');\n main.select('line.' + CLASS.xgridFocus).style(\"visibility\", \"hidden\");\n\n if (config.grid_x_show) {\n $$.updateXGrid();\n }\n\n xgridLine = main.select('.' + CLASS.xgridLines).selectAll('.' + CLASS.xgridLine).data(config.grid_x_lines); // enter\n\n xgridLineEnter = xgridLine.enter().append('g').attr(\"class\", function (d) {\n return CLASS.xgridLine + (d['class'] ? ' ' + d['class'] : '');\n });\n xgridLineEnter.append('line').attr(\"x1\", config.axis_rotated ? 0 : xv).attr(\"x2\", config.axis_rotated ? $$.width : xv).attr(\"y1\", config.axis_rotated ? xv : 0).attr(\"y2\", config.axis_rotated ? xv : $$.height).style(\"opacity\", 0);\n xgridLineEnter.append('text').attr(\"text-anchor\", $$.gridTextAnchor).attr(\"transform\", config.axis_rotated ? \"\" : \"rotate(-90)\").attr(\"x\", config.axis_rotated ? yGridTextX : xGridTextX).attr(\"y\", xv).attr('dx', $$.gridTextDx).attr('dy', -5).style(\"opacity\", 0); // udpate\n\n $$.xgridLines = xgridLineEnter.merge(xgridLine); // done in d3.transition() of the end of this function\n // exit\n\n xgridLine.exit().transition().duration(duration).style(\"opacity\", 0).remove(); // Y-Grid\n\n if (config.grid_y_show) {\n $$.updateYGrid();\n }\n\n ygridLine = main.select('.' + CLASS.ygridLines).selectAll('.' + CLASS.ygridLine).data(config.grid_y_lines); // enter\n\n ygridLineEnter = ygridLine.enter().append('g').attr(\"class\", function (d) {\n return CLASS.ygridLine + (d['class'] ? ' ' + d['class'] : '');\n });\n ygridLineEnter.append('line').attr(\"x1\", config.axis_rotated ? yv : 0).attr(\"x2\", config.axis_rotated ? yv : $$.width).attr(\"y1\", config.axis_rotated ? 0 : yv).attr(\"y2\", config.axis_rotated ? $$.height : yv).style(\"opacity\", 0);\n ygridLineEnter.append('text').attr(\"text-anchor\", $$.gridTextAnchor).attr(\"transform\", config.axis_rotated ? \"rotate(-90)\" : \"\").attr(\"x\", config.axis_rotated ? xGridTextX : yGridTextX).attr(\"y\", yv).attr('dx', $$.gridTextDx).attr('dy', -5).style(\"opacity\", 0); // update\n\n $$.ygridLines = ygridLineEnter.merge(ygridLine);\n $$.ygridLines.select('line').transition().duration(duration).attr(\"x1\", config.axis_rotated ? yv : 0).attr(\"x2\", config.axis_rotated ? yv : $$.width).attr(\"y1\", config.axis_rotated ? 0 : yv).attr(\"y2\", config.axis_rotated ? $$.height : yv).style(\"opacity\", 1);\n $$.ygridLines.select('text').transition().duration(duration).attr(\"x\", config.axis_rotated ? $$.xGridTextX.bind($$) : $$.yGridTextX.bind($$)).attr(\"y\", yv).text(function (d) {\n return d.text;\n }).style(\"opacity\", 1); // exit\n\n ygridLine.exit().transition().duration(duration).style(\"opacity\", 0).remove();\n };\n\n ChartInternal.prototype.redrawGrid = function (withTransition, transition) {\n var $$ = this,\n config = $$.config,\n xv = $$.xv.bind($$),\n lines = $$.xgridLines.select('line'),\n texts = $$.xgridLines.select('text');\n return [(withTransition ? lines.transition(transition) : lines).attr(\"x1\", config.axis_rotated ? 0 : xv).attr(\"x2\", config.axis_rotated ? $$.width : xv).attr(\"y1\", config.axis_rotated ? xv : 0).attr(\"y2\", config.axis_rotated ? xv : $$.height).style(\"opacity\", 1), (withTransition ? texts.transition(transition) : texts).attr(\"x\", config.axis_rotated ? $$.yGridTextX.bind($$) : $$.xGridTextX.bind($$)).attr(\"y\", xv).text(function (d) {\n return d.text;\n }).style(\"opacity\", 1)];\n };\n\n ChartInternal.prototype.showXGridFocus = function (selectedData) {\n var $$ = this,\n config = $$.config,\n dataToShow = selectedData.filter(function (d) {\n return d && isValue(d.value);\n }),\n focusEl = $$.main.selectAll('line.' + CLASS.xgridFocus),\n xx = $$.xx.bind($$);\n\n if (!config.tooltip_show) {\n return;\n } // Hide when scatter plot exists\n\n\n if ($$.hasType('scatter') || $$.hasArcType()) {\n return;\n }\n\n focusEl.style(\"visibility\", \"visible\").data([dataToShow[0]]).attr(config.axis_rotated ? 'y1' : 'x1', xx).attr(config.axis_rotated ? 'y2' : 'x2', xx);\n $$.smoothLines(focusEl, 'grid');\n };\n\n ChartInternal.prototype.hideXGridFocus = function () {\n this.main.select('line.' + CLASS.xgridFocus).style(\"visibility\", \"hidden\");\n };\n\n ChartInternal.prototype.updateXgridFocus = function () {\n var $$ = this,\n config = $$.config;\n $$.main.select('line.' + CLASS.xgridFocus).attr(\"x1\", config.axis_rotated ? 0 : -10).attr(\"x2\", config.axis_rotated ? $$.width : -10).attr(\"y1\", config.axis_rotated ? -10 : 0).attr(\"y2\", config.axis_rotated ? -10 : $$.height);\n };\n\n ChartInternal.prototype.generateGridData = function (type, scale) {\n var $$ = this,\n gridData = [],\n xDomain,\n firstYear,\n lastYear,\n i,\n tickNum = $$.main.select(\".\" + CLASS.axisX).selectAll('.tick').size();\n\n if (type === 'year') {\n xDomain = $$.getXDomain();\n firstYear = xDomain[0].getFullYear();\n lastYear = xDomain[1].getFullYear();\n\n for (i = firstYear; i <= lastYear; i++) {\n gridData.push(new Date(i + '-01-01 00:00:00'));\n }\n } else {\n gridData = scale.ticks(10);\n\n if (gridData.length > tickNum) {\n // use only int\n gridData = gridData.filter(function (d) {\n return (\"\" + d).indexOf('.') < 0;\n });\n }\n }\n\n return gridData;\n };\n\n ChartInternal.prototype.getGridFilterToRemove = function (params) {\n return params ? function (line) {\n var found = false;\n [].concat(params).forEach(function (param) {\n if ('value' in param && line.value === param.value || 'class' in param && line['class'] === param['class']) {\n found = true;\n }\n });\n return found;\n } : function () {\n return true;\n };\n };\n\n ChartInternal.prototype.removeGridLines = function (params, forX) {\n var $$ = this,\n config = $$.config,\n toRemove = $$.getGridFilterToRemove(params),\n toShow = function toShow(line) {\n return !toRemove(line);\n },\n classLines = forX ? CLASS.xgridLines : CLASS.ygridLines,\n classLine = forX ? CLASS.xgridLine : CLASS.ygridLine;\n\n $$.main.select('.' + classLines).selectAll('.' + classLine).filter(toRemove).transition().duration(config.transition_duration).style('opacity', 0).remove();\n\n if (forX) {\n config.grid_x_lines = config.grid_x_lines.filter(toShow);\n } else {\n config.grid_y_lines = config.grid_y_lines.filter(toShow);\n }\n };\n\n ChartInternal.prototype.initEventRect = function () {\n var $$ = this,\n config = $$.config;\n $$.main.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.eventRects).style('fill-opacity', 0);\n $$.eventRect = $$.main.select('.' + CLASS.eventRects).append('rect').attr('class', CLASS.eventRect); // event rect handle zoom event as well\n\n if (config.zoom_enabled && $$.zoom) {\n $$.eventRect.call($$.zoom).on(\"dblclick.zoom\", null);\n\n if (config.zoom_initialRange) {\n // WORKAROUND: Add transition to apply transform immediately when no subchart\n $$.eventRect.transition().duration(0).call($$.zoom.transform, $$.zoomTransform(config.zoom_initialRange));\n }\n }\n };\n\n ChartInternal.prototype.redrawEventRect = function () {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config,\n x,\n y,\n w,\n h; // TODO: rotated not supported yet\n\n x = 0;\n y = 0;\n w = $$.width;\n h = $$.height;\n\n function mouseout() {\n $$.svg.select('.' + CLASS.eventRect).style('cursor', null);\n $$.hideXGridFocus();\n $$.hideTooltip();\n $$.unexpandCircles();\n $$.unexpandBars();\n } // rects for mouseover\n\n\n $$.main.select('.' + CLASS.eventRects).style('cursor', config.zoom_enabled ? config.axis_rotated ? 'ns-resize' : 'ew-resize' : null);\n $$.eventRect.attr('x', x).attr('y', y).attr('width', w).attr('height', h).on('mouseout', config.interaction_enabled ? function () {\n if (!config) {\n return;\n } // chart is destroyed\n\n\n if ($$.hasArcType()) {\n return;\n }\n\n mouseout();\n } : null).on('mousemove', config.interaction_enabled ? function () {\n var targetsToShow, mouse, closest, sameXData, selectedData;\n\n if ($$.dragging) {\n return;\n } // do nothing when dragging\n\n\n if ($$.hasArcType(targetsToShow)) {\n return;\n }\n\n targetsToShow = $$.filterTargetsToShow($$.data.targets);\n mouse = d3.mouse(this);\n closest = $$.findClosestFromTargets(targetsToShow, mouse);\n\n if ($$.mouseover && (!closest || closest.id !== $$.mouseover.id)) {\n config.data_onmouseout.call($$.api, $$.mouseover);\n $$.mouseover = undefined;\n }\n\n if (!closest) {\n mouseout();\n return;\n }\n\n if ($$.isScatterType(closest) || !config.tooltip_grouped) {\n sameXData = [closest];\n } else {\n sameXData = $$.filterByX(targetsToShow, closest.x);\n } // show tooltip when cursor is close to some point\n\n\n selectedData = sameXData.map(function (d) {\n return $$.addName(d);\n });\n $$.showTooltip(selectedData, this); // expand points\n\n if (config.point_focus_expand_enabled) {\n $$.unexpandCircles();\n selectedData.forEach(function (d) {\n $$.expandCircles(d.index, d.id, false);\n });\n }\n\n $$.expandBars(closest.index, closest.id, true); // Show xgrid focus line\n\n $$.showXGridFocus(selectedData); // Show cursor as pointer if point is close to mouse position\n\n if ($$.isBarType(closest.id) || $$.dist(closest, mouse) < config.point_sensitivity) {\n $$.svg.select('.' + CLASS.eventRect).style('cursor', 'pointer');\n\n if (!$$.mouseover) {\n config.data_onmouseover.call($$.api, closest);\n $$.mouseover = closest;\n }\n }\n } : null).on('click', config.interaction_enabled ? function () {\n var targetsToShow, mouse, closest, sameXData;\n\n if ($$.hasArcType(targetsToShow)) {\n return;\n }\n\n targetsToShow = $$.filterTargetsToShow($$.data.targets);\n mouse = d3.mouse(this);\n closest = $$.findClosestFromTargets(targetsToShow, mouse);\n\n if (!closest) {\n return;\n } // select if selection enabled\n\n\n if ($$.isBarType(closest.id) || $$.dist(closest, mouse) < config.point_sensitivity) {\n if ($$.isScatterType(closest) || !config.data_selection_grouped) {\n sameXData = [closest];\n } else {\n sameXData = $$.filterByX(targetsToShow, closest.x);\n }\n\n sameXData.forEach(function (d) {\n $$.main.selectAll('.' + CLASS.shapes + $$.getTargetSelectorSuffix(d.id)).selectAll('.' + CLASS.shape + '-' + d.index).each(function () {\n if (config.data_selection_grouped || $$.isWithinShape(this, d)) {\n $$.toggleShape(this, d, d.index);\n config.data_onclick.call($$.api, d, this);\n }\n });\n });\n }\n } : null).call(config.interaction_enabled && config.data_selection_draggable && $$.drag ? d3.drag().on('drag', function () {\n $$.drag(d3.mouse(this));\n }).on('start', function () {\n $$.dragstart(d3.mouse(this));\n }).on('end', function () {\n $$.dragend();\n }) : function () {});\n };\n\n ChartInternal.prototype.getMousePosition = function (data) {\n var $$ = this;\n return [$$.x(data.x), $$.getYScale(data.id)(data.value)];\n };\n\n ChartInternal.prototype.dispatchEvent = function (type, mouse) {\n var $$ = this,\n selector = '.' + CLASS.eventRect,\n eventRect = $$.main.select(selector).node(),\n box = eventRect.getBoundingClientRect(),\n x = box.left + (mouse ? mouse[0] : 0),\n y = box.top + (mouse ? mouse[1] : 0),\n event = document.createEvent(\"MouseEvents\");\n event.initMouseEvent(type, true, true, window, 0, x, y, x, y, false, false, false, false, 0, null);\n eventRect.dispatchEvent(event);\n };\n\n ChartInternal.prototype.initLegend = function () {\n var $$ = this;\n $$.legendItemTextBox = {};\n $$.legendHasRendered = false;\n $$.legend = $$.svg.append(\"g\").attr(\"transform\", $$.getTranslate('legend'));\n\n if (!$$.config.legend_show) {\n $$.legend.style('visibility', 'hidden');\n $$.hiddenLegendIds = $$.mapToIds($$.data.targets);\n return;\n } // MEMO: call here to update legend box and tranlate for all\n // MEMO: translate will be upated by this, so transform not needed in updateLegend()\n\n\n $$.updateLegendWithDefaults();\n };\n\n ChartInternal.prototype.updateLegendWithDefaults = function () {\n var $$ = this;\n $$.updateLegend($$.mapToIds($$.data.targets), {\n withTransform: false,\n withTransitionForTransform: false,\n withTransition: false\n });\n };\n\n ChartInternal.prototype.updateSizeForLegend = function (legendHeight, legendWidth) {\n var $$ = this,\n config = $$.config,\n insetLegendPosition = {\n top: $$.isLegendTop ? $$.getCurrentPaddingTop() + config.legend_inset_y + 5.5 : $$.currentHeight - legendHeight - $$.getCurrentPaddingBottom() - config.legend_inset_y,\n left: $$.isLegendLeft ? $$.getCurrentPaddingLeft() + config.legend_inset_x + 0.5 : $$.currentWidth - legendWidth - $$.getCurrentPaddingRight() - config.legend_inset_x + 0.5\n };\n $$.margin3 = {\n top: $$.isLegendRight ? 0 : $$.isLegendInset ? insetLegendPosition.top : $$.currentHeight - legendHeight,\n right: NaN,\n bottom: 0,\n left: $$.isLegendRight ? $$.currentWidth - legendWidth : $$.isLegendInset ? insetLegendPosition.left : 0\n };\n };\n\n ChartInternal.prototype.transformLegend = function (withTransition) {\n var $$ = this;\n (withTransition ? $$.legend.transition() : $$.legend).attr(\"transform\", $$.getTranslate('legend'));\n };\n\n ChartInternal.prototype.updateLegendStep = function (step) {\n this.legendStep = step;\n };\n\n ChartInternal.prototype.updateLegendItemWidth = function (w) {\n this.legendItemWidth = w;\n };\n\n ChartInternal.prototype.updateLegendItemHeight = function (h) {\n this.legendItemHeight = h;\n };\n\n ChartInternal.prototype.getLegendWidth = function () {\n var $$ = this;\n return $$.config.legend_show ? $$.isLegendRight || $$.isLegendInset ? $$.legendItemWidth * ($$.legendStep + 1) : $$.currentWidth : 0;\n };\n\n ChartInternal.prototype.getLegendHeight = function () {\n var $$ = this,\n h = 0;\n\n if ($$.config.legend_show) {\n if ($$.isLegendRight) {\n h = $$.currentHeight;\n } else {\n h = Math.max(20, $$.legendItemHeight) * ($$.legendStep + 1);\n }\n }\n\n return h;\n };\n\n ChartInternal.prototype.opacityForLegend = function (legendItem) {\n return legendItem.classed(CLASS.legendItemHidden) ? null : 1;\n };\n\n ChartInternal.prototype.opacityForUnfocusedLegend = function (legendItem) {\n return legendItem.classed(CLASS.legendItemHidden) ? null : 0.3;\n };\n\n ChartInternal.prototype.toggleFocusLegend = function (targetIds, focus) {\n var $$ = this;\n targetIds = $$.mapToTargetIds(targetIds);\n $$.legend.selectAll('.' + CLASS.legendItem).filter(function (id) {\n return targetIds.indexOf(id) >= 0;\n }).classed(CLASS.legendItemFocused, focus).transition().duration(100).style('opacity', function () {\n var opacity = focus ? $$.opacityForLegend : $$.opacityForUnfocusedLegend;\n return opacity.call($$, $$.d3.select(this));\n });\n };\n\n ChartInternal.prototype.revertLegend = function () {\n var $$ = this,\n d3 = $$.d3;\n $$.legend.selectAll('.' + CLASS.legendItem).classed(CLASS.legendItemFocused, false).transition().duration(100).style('opacity', function () {\n return $$.opacityForLegend(d3.select(this));\n });\n };\n\n ChartInternal.prototype.showLegend = function (targetIds) {\n var $$ = this,\n config = $$.config;\n\n if (!config.legend_show) {\n config.legend_show = true;\n $$.legend.style('visibility', 'visible');\n\n if (!$$.legendHasRendered) {\n $$.updateLegendWithDefaults();\n }\n }\n\n $$.removeHiddenLegendIds(targetIds);\n $$.legend.selectAll($$.selectorLegends(targetIds)).style('visibility', 'visible').transition().style('opacity', function () {\n return $$.opacityForLegend($$.d3.select(this));\n });\n };\n\n ChartInternal.prototype.hideLegend = function (targetIds) {\n var $$ = this,\n config = $$.config;\n\n if (config.legend_show && isEmpty(targetIds)) {\n config.legend_show = false;\n $$.legend.style('visibility', 'hidden');\n }\n\n $$.addHiddenLegendIds(targetIds);\n $$.legend.selectAll($$.selectorLegends(targetIds)).style('opacity', 0).style('visibility', 'hidden');\n };\n\n ChartInternal.prototype.clearLegendItemTextBoxCache = function () {\n this.legendItemTextBox = {};\n };\n\n ChartInternal.prototype.updateLegend = function (targetIds, options, transitions) {\n var $$ = this,\n config = $$.config;\n var xForLegend, xForLegendText, xForLegendRect, yForLegend, yForLegendText, yForLegendRect, x1ForLegendTile, x2ForLegendTile, yForLegendTile;\n var paddingTop = 4,\n paddingRight = 10,\n maxWidth = 0,\n maxHeight = 0,\n posMin = 10,\n tileWidth = config.legend_item_tile_width + 5;\n var l,\n totalLength = 0,\n offsets = {},\n widths = {},\n heights = {},\n margins = [0],\n steps = {},\n step = 0;\n var withTransition, withTransitionForTransform;\n var texts, rects, tiles, background; // Skip elements when their name is set to null\n\n targetIds = targetIds.filter(function (id) {\n return !isDefined(config.data_names[id]) || config.data_names[id] !== null;\n });\n options = options || {};\n withTransition = getOption(options, \"withTransition\", true);\n withTransitionForTransform = getOption(options, \"withTransitionForTransform\", true);\n\n function getTextBox(textElement, id) {\n if (!$$.legendItemTextBox[id]) {\n $$.legendItemTextBox[id] = $$.getTextRect(textElement.textContent, CLASS.legendItem, textElement);\n }\n\n return $$.legendItemTextBox[id];\n }\n\n function updatePositions(textElement, id, index) {\n var reset = index === 0,\n isLast = index === targetIds.length - 1,\n box = getTextBox(textElement, id),\n itemWidth = box.width + tileWidth + (isLast && !($$.isLegendRight || $$.isLegendInset) ? 0 : paddingRight) + config.legend_padding,\n itemHeight = box.height + paddingTop,\n itemLength = $$.isLegendRight || $$.isLegendInset ? itemHeight : itemWidth,\n areaLength = $$.isLegendRight || $$.isLegendInset ? $$.getLegendHeight() : $$.getLegendWidth(),\n margin,\n maxLength; // MEMO: care about condifion of step, totalLength\n\n function updateValues(id, withoutStep) {\n if (!withoutStep) {\n margin = (areaLength - totalLength - itemLength) / 2;\n\n if (margin < posMin) {\n margin = (areaLength - itemLength) / 2;\n totalLength = 0;\n step++;\n }\n }\n\n steps[id] = step;\n margins[step] = $$.isLegendInset ? 10 : margin;\n offsets[id] = totalLength;\n totalLength += itemLength;\n }\n\n if (reset) {\n totalLength = 0;\n step = 0;\n maxWidth = 0;\n maxHeight = 0;\n }\n\n if (config.legend_show && !$$.isLegendToShow(id)) {\n widths[id] = heights[id] = steps[id] = offsets[id] = 0;\n return;\n }\n\n widths[id] = itemWidth;\n heights[id] = itemHeight;\n\n if (!maxWidth || itemWidth >= maxWidth) {\n maxWidth = itemWidth;\n }\n\n if (!maxHeight || itemHeight >= maxHeight) {\n maxHeight = itemHeight;\n }\n\n maxLength = $$.isLegendRight || $$.isLegendInset ? maxHeight : maxWidth;\n\n if (config.legend_equally) {\n Object.keys(widths).forEach(function (id) {\n widths[id] = maxWidth;\n });\n Object.keys(heights).forEach(function (id) {\n heights[id] = maxHeight;\n });\n margin = (areaLength - maxLength * targetIds.length) / 2;\n\n if (margin < posMin) {\n totalLength = 0;\n step = 0;\n targetIds.forEach(function (id) {\n updateValues(id);\n });\n } else {\n updateValues(id, true);\n }\n } else {\n updateValues(id);\n }\n }\n\n if ($$.isLegendInset) {\n step = config.legend_inset_step ? config.legend_inset_step : targetIds.length;\n $$.updateLegendStep(step);\n }\n\n if ($$.isLegendRight) {\n xForLegend = function xForLegend(id) {\n return maxWidth * steps[id];\n };\n\n yForLegend = function yForLegend(id) {\n return margins[steps[id]] + offsets[id];\n };\n } else if ($$.isLegendInset) {\n xForLegend = function xForLegend(id) {\n return maxWidth * steps[id] + 10;\n };\n\n yForLegend = function yForLegend(id) {\n return margins[steps[id]] + offsets[id];\n };\n } else {\n xForLegend = function xForLegend(id) {\n return margins[steps[id]] + offsets[id];\n };\n\n yForLegend = function yForLegend(id) {\n return maxHeight * steps[id];\n };\n }\n\n xForLegendText = function xForLegendText(id, i) {\n return xForLegend(id, i) + 4 + config.legend_item_tile_width;\n };\n\n yForLegendText = function yForLegendText(id, i) {\n return yForLegend(id, i) + 9;\n };\n\n xForLegendRect = function xForLegendRect(id, i) {\n return xForLegend(id, i);\n };\n\n yForLegendRect = function yForLegendRect(id, i) {\n return yForLegend(id, i) - 5;\n };\n\n x1ForLegendTile = function x1ForLegendTile(id, i) {\n return xForLegend(id, i) - 2;\n };\n\n x2ForLegendTile = function x2ForLegendTile(id, i) {\n return xForLegend(id, i) - 2 + config.legend_item_tile_width;\n };\n\n yForLegendTile = function yForLegendTile(id, i) {\n return yForLegend(id, i) + 4;\n }; // Define g for legend area\n\n\n l = $$.legend.selectAll('.' + CLASS.legendItem).data(targetIds).enter().append('g').attr('class', function (id) {\n return $$.generateClass(CLASS.legendItem, id);\n }).style('visibility', function (id) {\n return $$.isLegendToShow(id) ? 'visible' : 'hidden';\n }).style('cursor', 'pointer').on('click', function (id) {\n if (config.legend_item_onclick) {\n config.legend_item_onclick.call($$, id);\n } else {\n if ($$.d3.event.altKey) {\n $$.api.hide();\n $$.api.show(id);\n } else {\n $$.api.toggle(id);\n $$.isTargetToShow(id) ? $$.api.focus(id) : $$.api.revert();\n }\n }\n }).on('mouseover', function (id) {\n if (config.legend_item_onmouseover) {\n config.legend_item_onmouseover.call($$, id);\n } else {\n $$.d3.select(this).classed(CLASS.legendItemFocused, true);\n\n if (!$$.transiting && $$.isTargetToShow(id)) {\n $$.api.focus(id);\n }\n }\n }).on('mouseout', function (id) {\n if (config.legend_item_onmouseout) {\n config.legend_item_onmouseout.call($$, id);\n } else {\n $$.d3.select(this).classed(CLASS.legendItemFocused, false);\n $$.api.revert();\n }\n });\n l.append('text').text(function (id) {\n return isDefined(config.data_names[id]) ? config.data_names[id] : id;\n }).each(function (id, i) {\n updatePositions(this, id, i);\n }).style(\"pointer-events\", \"none\").attr('x', $$.isLegendRight || $$.isLegendInset ? xForLegendText : -200).attr('y', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendText);\n l.append('rect').attr(\"class\", CLASS.legendItemEvent).style('fill-opacity', 0).attr('x', $$.isLegendRight || $$.isLegendInset ? xForLegendRect : -200).attr('y', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendRect);\n l.append('line').attr('class', CLASS.legendItemTile).style('stroke', $$.color).style(\"pointer-events\", \"none\").attr('x1', $$.isLegendRight || $$.isLegendInset ? x1ForLegendTile : -200).attr('y1', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendTile).attr('x2', $$.isLegendRight || $$.isLegendInset ? x2ForLegendTile : -200).attr('y2', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendTile).attr('stroke-width', config.legend_item_tile_height); // Set background for inset legend\n\n background = $$.legend.select('.' + CLASS.legendBackground + ' rect');\n\n if ($$.isLegendInset && maxWidth > 0 && background.size() === 0) {\n background = $$.legend.insert('g', '.' + CLASS.legendItem).attr(\"class\", CLASS.legendBackground).append('rect');\n }\n\n texts = $$.legend.selectAll('text').data(targetIds).text(function (id) {\n return isDefined(config.data_names[id]) ? config.data_names[id] : id;\n }) // MEMO: needed for update\n .each(function (id, i) {\n updatePositions(this, id, i);\n });\n (withTransition ? texts.transition() : texts).attr('x', xForLegendText).attr('y', yForLegendText);\n rects = $$.legend.selectAll('rect.' + CLASS.legendItemEvent).data(targetIds);\n (withTransition ? rects.transition() : rects).attr('width', function (id) {\n return widths[id];\n }).attr('height', function (id) {\n return heights[id];\n }).attr('x', xForLegendRect).attr('y', yForLegendRect);\n tiles = $$.legend.selectAll('line.' + CLASS.legendItemTile).data(targetIds);\n (withTransition ? tiles.transition() : tiles).style('stroke', $$.levelColor ? function (id) {\n return $$.levelColor($$.cache[id].values[0].value);\n } : $$.color).attr('x1', x1ForLegendTile).attr('y1', yForLegendTile).attr('x2', x2ForLegendTile).attr('y2', yForLegendTile);\n\n if (background) {\n (withTransition ? background.transition() : background).attr('height', $$.getLegendHeight() - 12).attr('width', maxWidth * (step + 1) + 10);\n } // toggle legend state\n\n\n $$.legend.selectAll('.' + CLASS.legendItem).classed(CLASS.legendItemHidden, function (id) {\n return !$$.isTargetToShow(id);\n }); // Update all to reflect change of legend\n\n $$.updateLegendItemWidth(maxWidth);\n $$.updateLegendItemHeight(maxHeight);\n $$.updateLegendStep(step); // Update size and scale\n\n $$.updateSizes();\n $$.updateScales();\n $$.updateSvgSize(); // Update g positions\n\n $$.transformAll(withTransitionForTransform, transitions);\n $$.legendHasRendered = true;\n };\n\n ChartInternal.prototype.initRegion = function () {\n var $$ = this;\n $$.region = $$.main.append('g').attr(\"clip-path\", $$.clipPath).attr(\"class\", CLASS.regions);\n };\n\n ChartInternal.prototype.updateRegion = function (duration) {\n var $$ = this,\n config = $$.config; // hide if arc type\n\n $$.region.style('visibility', $$.hasArcType() ? 'hidden' : 'visible');\n var mainRegion = $$.main.select('.' + CLASS.regions).selectAll('.' + CLASS.region).data(config.regions);\n var mainRegionEnter = mainRegion.enter().append('rect').attr(\"x\", $$.regionX.bind($$)).attr(\"y\", $$.regionY.bind($$)).attr(\"width\", $$.regionWidth.bind($$)).attr(\"height\", $$.regionHeight.bind($$)).style(\"fill-opacity\", 0);\n $$.mainRegion = mainRegionEnter.merge(mainRegion).attr('class', $$.classRegion.bind($$));\n mainRegion.exit().transition().duration(duration).style(\"opacity\", 0).remove();\n };\n\n ChartInternal.prototype.redrawRegion = function (withTransition, transition) {\n var $$ = this,\n regions = $$.mainRegion;\n return [(withTransition ? regions.transition(transition) : regions).attr(\"x\", $$.regionX.bind($$)).attr(\"y\", $$.regionY.bind($$)).attr(\"width\", $$.regionWidth.bind($$)).attr(\"height\", $$.regionHeight.bind($$)).style(\"fill-opacity\", function (d) {\n return isValue(d.opacity) ? d.opacity : 0.1;\n })];\n };\n\n ChartInternal.prototype.regionX = function (d) {\n var $$ = this,\n config = $$.config,\n xPos,\n yScale = d.axis === 'y' ? $$.y : $$.y2;\n\n if (d.axis === 'y' || d.axis === 'y2') {\n xPos = config.axis_rotated ? 'start' in d ? yScale(d.start) : 0 : 0;\n } else {\n xPos = config.axis_rotated ? 0 : 'start' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.start) : d.start) : 0;\n }\n\n return xPos;\n };\n\n ChartInternal.prototype.regionY = function (d) {\n var $$ = this,\n config = $$.config,\n yPos,\n yScale = d.axis === 'y' ? $$.y : $$.y2;\n\n if (d.axis === 'y' || d.axis === 'y2') {\n yPos = config.axis_rotated ? 0 : 'end' in d ? yScale(d.end) : 0;\n } else {\n yPos = config.axis_rotated ? 'start' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.start) : d.start) : 0 : 0;\n }\n\n return yPos;\n };\n\n ChartInternal.prototype.regionWidth = function (d) {\n var $$ = this,\n config = $$.config,\n start = $$.regionX(d),\n end,\n yScale = d.axis === 'y' ? $$.y : $$.y2;\n\n if (d.axis === 'y' || d.axis === 'y2') {\n end = config.axis_rotated ? 'end' in d ? yScale(d.end) : $$.width : $$.width;\n } else {\n end = config.axis_rotated ? $$.width : 'end' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.end) : d.end) : $$.width;\n }\n\n return end < start ? 0 : end - start;\n };\n\n ChartInternal.prototype.regionHeight = function (d) {\n var $$ = this,\n config = $$.config,\n start = this.regionY(d),\n end,\n yScale = d.axis === 'y' ? $$.y : $$.y2;\n\n if (d.axis === 'y' || d.axis === 'y2') {\n end = config.axis_rotated ? $$.height : 'start' in d ? yScale(d.start) : $$.height;\n } else {\n end = config.axis_rotated ? 'end' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.end) : d.end) : $$.height : $$.height;\n }\n\n return end < start ? 0 : end - start;\n };\n\n ChartInternal.prototype.isRegionOnX = function (d) {\n return !d.axis || d.axis === 'x';\n };\n\n ChartInternal.prototype.getScale = function (min, max, forTimeseries) {\n return (forTimeseries ? this.d3.scaleTime() : this.d3.scaleLinear()).range([min, max]);\n };\n\n ChartInternal.prototype.getX = function (min, max, domain, offset) {\n var $$ = this,\n scale = $$.getScale(min, max, $$.isTimeSeries()),\n _scale = domain ? scale.domain(domain) : scale,\n key; // Define customized scale if categorized axis\n\n\n if ($$.isCategorized()) {\n offset = offset || function () {\n return 0;\n };\n\n scale = function scale(d, raw) {\n var v = _scale(d) + offset(d);\n return raw ? v : Math.ceil(v);\n };\n } else {\n scale = function scale(d, raw) {\n var v = _scale(d);\n\n return raw ? v : Math.ceil(v);\n };\n } // define functions\n\n\n for (key in _scale) {\n scale[key] = _scale[key];\n }\n\n scale.orgDomain = function () {\n return _scale.domain();\n }; // define custom domain() for categorized axis\n\n\n if ($$.isCategorized()) {\n scale.domain = function (domain) {\n if (!arguments.length) {\n domain = this.orgDomain();\n return [domain[0], domain[1] + 1];\n }\n\n _scale.domain(domain);\n\n return scale;\n };\n }\n\n return scale;\n };\n\n ChartInternal.prototype.getY = function (min, max, domain) {\n var scale = this.getScale(min, max, this.isTimeSeriesY());\n\n if (domain) {\n scale.domain(domain);\n }\n\n return scale;\n };\n\n ChartInternal.prototype.getYScale = function (id) {\n return this.axis.getId(id) === 'y2' ? this.y2 : this.y;\n };\n\n ChartInternal.prototype.getSubYScale = function (id) {\n return this.axis.getId(id) === 'y2' ? this.subY2 : this.subY;\n };\n\n ChartInternal.prototype.updateScales = function () {\n var $$ = this,\n config = $$.config,\n forInit = !$$.x; // update edges\n\n $$.xMin = config.axis_rotated ? 1 : 0;\n $$.xMax = config.axis_rotated ? $$.height : $$.width;\n $$.yMin = config.axis_rotated ? 0 : $$.height;\n $$.yMax = config.axis_rotated ? $$.width : 1;\n $$.subXMin = $$.xMin;\n $$.subXMax = $$.xMax;\n $$.subYMin = config.axis_rotated ? 0 : $$.height2;\n $$.subYMax = config.axis_rotated ? $$.width2 : 1; // update scales\n\n $$.x = $$.getX($$.xMin, $$.xMax, forInit ? undefined : $$.x.orgDomain(), function () {\n return $$.xAxis.tickOffset();\n });\n $$.y = $$.getY($$.yMin, $$.yMax, forInit ? config.axis_y_default : $$.y.domain());\n $$.y2 = $$.getY($$.yMin, $$.yMax, forInit ? config.axis_y2_default : $$.y2.domain());\n $$.subX = $$.getX($$.xMin, $$.xMax, $$.orgXDomain, function (d) {\n return d % 1 ? 0 : $$.subXAxis.tickOffset();\n });\n $$.subY = $$.getY($$.subYMin, $$.subYMax, forInit ? config.axis_y_default : $$.subY.domain());\n $$.subY2 = $$.getY($$.subYMin, $$.subYMax, forInit ? config.axis_y2_default : $$.subY2.domain()); // update axes\n\n $$.xAxisTickFormat = $$.axis.getXAxisTickFormat();\n $$.xAxisTickValues = $$.axis.getXAxisTickValues();\n $$.yAxisTickValues = $$.axis.getYAxisTickValues();\n $$.y2AxisTickValues = $$.axis.getY2AxisTickValues();\n $$.xAxis = $$.axis.getXAxis($$.x, $$.xOrient, $$.xAxisTickFormat, $$.xAxisTickValues, config.axis_x_tick_outer);\n $$.subXAxis = $$.axis.getXAxis($$.subX, $$.subXOrient, $$.xAxisTickFormat, $$.xAxisTickValues, config.axis_x_tick_outer);\n $$.yAxis = $$.axis.getYAxis($$.y, $$.yOrient, config.axis_y_tick_format, $$.yAxisTickValues, config.axis_y_tick_outer);\n $$.y2Axis = $$.axis.getYAxis($$.y2, $$.y2Orient, config.axis_y2_tick_format, $$.y2AxisTickValues, config.axis_y2_tick_outer); // Set initialized scales to brush and zoom\n\n if (!forInit) {\n if ($$.brush) {\n $$.brush.updateScale($$.subX);\n }\n } // update for arc\n\n\n if ($$.updateArc) {\n $$.updateArc();\n }\n };\n\n ChartInternal.prototype.selectPoint = function (target, d, i) {\n var $$ = this,\n config = $$.config,\n cx = (config.axis_rotated ? $$.circleY : $$.circleX).bind($$),\n cy = (config.axis_rotated ? $$.circleX : $$.circleY).bind($$),\n r = $$.pointSelectR.bind($$);\n config.data_onselected.call($$.api, d, target.node()); // add selected-circle on low layer g\n\n $$.main.select('.' + CLASS.selectedCircles + $$.getTargetSelectorSuffix(d.id)).selectAll('.' + CLASS.selectedCircle + '-' + i).data([d]).enter().append('circle').attr(\"class\", function () {\n return $$.generateClass(CLASS.selectedCircle, i);\n }).attr(\"cx\", cx).attr(\"cy\", cy).attr(\"stroke\", function () {\n return $$.color(d);\n }).attr(\"r\", function (d) {\n return $$.pointSelectR(d) * 1.4;\n }).transition().duration(100).attr(\"r\", r);\n };\n\n ChartInternal.prototype.unselectPoint = function (target, d, i) {\n var $$ = this;\n $$.config.data_onunselected.call($$.api, d, target.node()); // remove selected-circle from low layer g\n\n $$.main.select('.' + CLASS.selectedCircles + $$.getTargetSelectorSuffix(d.id)).selectAll('.' + CLASS.selectedCircle + '-' + i).transition().duration(100).attr('r', 0).remove();\n };\n\n ChartInternal.prototype.togglePoint = function (selected, target, d, i) {\n selected ? this.selectPoint(target, d, i) : this.unselectPoint(target, d, i);\n };\n\n ChartInternal.prototype.selectPath = function (target, d) {\n var $$ = this;\n $$.config.data_onselected.call($$, d, target.node());\n\n if ($$.config.interaction_brighten) {\n target.transition().duration(100).style(\"fill\", function () {\n return $$.d3.rgb($$.color(d)).brighter(0.75);\n });\n }\n };\n\n ChartInternal.prototype.unselectPath = function (target, d) {\n var $$ = this;\n $$.config.data_onunselected.call($$, d, target.node());\n\n if ($$.config.interaction_brighten) {\n target.transition().duration(100).style(\"fill\", function () {\n return $$.color(d);\n });\n }\n };\n\n ChartInternal.prototype.togglePath = function (selected, target, d, i) {\n selected ? this.selectPath(target, d, i) : this.unselectPath(target, d, i);\n };\n\n ChartInternal.prototype.getToggle = function (that, d) {\n var $$ = this,\n toggle;\n\n if (that.nodeName === 'circle') {\n if ($$.isStepType(d)) {\n // circle is hidden in step chart, so treat as within the click area\n toggle = function toggle() {}; // TODO: how to select step chart?\n\n } else {\n toggle = $$.togglePoint;\n }\n } else if (that.nodeName === 'path') {\n toggle = $$.togglePath;\n }\n\n return toggle;\n };\n\n ChartInternal.prototype.toggleShape = function (that, d, i) {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config,\n shape = d3.select(that),\n isSelected = shape.classed(CLASS.SELECTED),\n toggle = $$.getToggle(that, d).bind($$);\n\n if (config.data_selection_enabled && config.data_selection_isselectable(d)) {\n if (!config.data_selection_multiple) {\n $$.main.selectAll('.' + CLASS.shapes + (config.data_selection_grouped ? $$.getTargetSelectorSuffix(d.id) : \"\")).selectAll('.' + CLASS.shape).each(function (d, i) {\n var shape = d3.select(this);\n\n if (shape.classed(CLASS.SELECTED)) {\n toggle(false, shape.classed(CLASS.SELECTED, false), d, i);\n }\n });\n }\n\n shape.classed(CLASS.SELECTED, !isSelected);\n toggle(!isSelected, shape, d, i);\n }\n };\n\n ChartInternal.prototype.initBar = function () {\n var $$ = this;\n $$.main.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.chartBars);\n };\n\n ChartInternal.prototype.updateTargetsForBar = function (targets) {\n var $$ = this,\n config = $$.config,\n mainBars,\n mainBarEnter,\n classChartBar = $$.classChartBar.bind($$),\n classBars = $$.classBars.bind($$),\n classFocus = $$.classFocus.bind($$);\n mainBars = $$.main.select('.' + CLASS.chartBars).selectAll('.' + CLASS.chartBar).data(targets).attr('class', function (d) {\n return classChartBar(d) + classFocus(d);\n });\n mainBarEnter = mainBars.enter().append('g').attr('class', classChartBar).style(\"pointer-events\", \"none\"); // Bars for each data\n\n mainBarEnter.append('g').attr(\"class\", classBars).style(\"cursor\", function (d) {\n return config.data_selection_isselectable(d) ? \"pointer\" : null;\n });\n };\n\n ChartInternal.prototype.updateBar = function (durationForExit) {\n var $$ = this,\n barData = $$.barData.bind($$),\n classBar = $$.classBar.bind($$),\n initialOpacity = $$.initialOpacity.bind($$),\n color = function color(d) {\n return $$.color(d.id);\n };\n\n var mainBar = $$.main.selectAll('.' + CLASS.bars).selectAll('.' + CLASS.bar).data(barData);\n var mainBarEnter = mainBar.enter().append('path').attr(\"class\", classBar).style(\"stroke\", color).style(\"fill\", color);\n $$.mainBar = mainBarEnter.merge(mainBar).style(\"opacity\", initialOpacity);\n mainBar.exit().transition().duration(durationForExit).style(\"opacity\", 0);\n };\n\n ChartInternal.prototype.redrawBar = function (drawBar, withTransition, transition) {\n return [(withTransition ? this.mainBar.transition(transition) : this.mainBar).attr('d', drawBar).style(\"stroke\", this.color).style(\"fill\", this.color).style(\"opacity\", 1)];\n };\n\n ChartInternal.prototype.getBarW = function (axis, barTargetsNum) {\n var $$ = this,\n config = $$.config,\n w = typeof config.bar_width === 'number' ? config.bar_width : barTargetsNum ? axis.tickInterval() * config.bar_width_ratio / barTargetsNum : 0;\n return config.bar_width_max && w > config.bar_width_max ? config.bar_width_max : w;\n };\n\n ChartInternal.prototype.getBars = function (i, id) {\n var $$ = this;\n return (id ? $$.main.selectAll('.' + CLASS.bars + $$.getTargetSelectorSuffix(id)) : $$.main).selectAll('.' + CLASS.bar + (isValue(i) ? '-' + i : ''));\n };\n\n ChartInternal.prototype.expandBars = function (i, id, reset) {\n var $$ = this;\n\n if (reset) {\n $$.unexpandBars();\n }\n\n $$.getBars(i, id).classed(CLASS.EXPANDED, true);\n };\n\n ChartInternal.prototype.unexpandBars = function (i) {\n var $$ = this;\n $$.getBars(i).classed(CLASS.EXPANDED, false);\n };\n\n ChartInternal.prototype.generateDrawBar = function (barIndices, isSub) {\n var $$ = this,\n config = $$.config,\n getPoints = $$.generateGetBarPoints(barIndices, isSub);\n return function (d, i) {\n // 4 points that make a bar\n var points = getPoints(d, i); // switch points if axis is rotated, not applicable for sub chart\n\n var indexX = config.axis_rotated ? 1 : 0;\n var indexY = config.axis_rotated ? 0 : 1;\n var path = 'M ' + points[0][indexX] + ',' + points[0][indexY] + ' ' + 'L' + points[1][indexX] + ',' + points[1][indexY] + ' ' + 'L' + points[2][indexX] + ',' + points[2][indexY] + ' ' + 'L' + points[3][indexX] + ',' + points[3][indexY] + ' ' + 'z';\n return path;\n };\n };\n\n ChartInternal.prototype.generateGetBarPoints = function (barIndices, isSub) {\n var $$ = this,\n axis = isSub ? $$.subXAxis : $$.xAxis,\n barTargetsNum = barIndices.__max__ + 1,\n barW = $$.getBarW(axis, barTargetsNum),\n barX = $$.getShapeX(barW, barTargetsNum, barIndices, !!isSub),\n barY = $$.getShapeY(!!isSub),\n barOffset = $$.getShapeOffset($$.isBarType, barIndices, !!isSub),\n barSpaceOffset = barW * ($$.config.bar_space / 2),\n yScale = isSub ? $$.getSubYScale : $$.getYScale;\n return function (d, i) {\n var y0 = yScale.call($$, d.id)(0),\n offset = barOffset(d, i) || y0,\n // offset is for stacked bar chart\n posX = barX(d),\n posY = barY(d); // fix posY not to overflow opposite quadrant\n\n if ($$.config.axis_rotated) {\n if (0 < d.value && posY < y0 || d.value < 0 && y0 < posY) {\n posY = y0;\n }\n } // 4 points that make a bar\n\n\n return [[posX + barSpaceOffset, offset], [posX + barSpaceOffset, posY - (y0 - offset)], [posX + barW - barSpaceOffset, posY - (y0 - offset)], [posX + barW - barSpaceOffset, offset]];\n };\n };\n\n ChartInternal.prototype.isWithinBar = function (mouse, that) {\n var box = that.getBoundingClientRect(),\n seg0 = that.pathSegList.getItem(0),\n seg1 = that.pathSegList.getItem(1),\n x = Math.min(seg0.x, seg1.x),\n y = Math.min(seg0.y, seg1.y),\n w = box.width,\n h = box.height,\n offset = 2,\n sx = x - offset,\n ex = x + w + offset,\n sy = y + h + offset,\n ey = y - offset;\n return sx < mouse[0] && mouse[0] < ex && ey < mouse[1] && mouse[1] < sy;\n };\n\n ChartInternal.prototype.getShapeIndices = function (typeFilter) {\n var $$ = this,\n config = $$.config,\n indices = {},\n i = 0,\n j,\n k;\n $$.filterTargetsToShow($$.data.targets.filter(typeFilter, $$)).forEach(function (d) {\n for (j = 0; j < config.data_groups.length; j++) {\n if (config.data_groups[j].indexOf(d.id) < 0) {\n continue;\n }\n\n for (k = 0; k < config.data_groups[j].length; k++) {\n if (config.data_groups[j][k] in indices) {\n indices[d.id] = indices[config.data_groups[j][k]];\n break;\n }\n }\n }\n\n if (isUndefined(indices[d.id])) {\n indices[d.id] = i++;\n }\n });\n indices.__max__ = i - 1;\n return indices;\n };\n\n ChartInternal.prototype.getShapeX = function (offset, targetsNum, indices, isSub) {\n var $$ = this,\n scale = isSub ? $$.subX : $$.x;\n return function (d) {\n var index = d.id in indices ? indices[d.id] : 0;\n return d.x || d.x === 0 ? scale(d.x) - offset * (targetsNum / 2 - index) : 0;\n };\n };\n\n ChartInternal.prototype.getShapeY = function (isSub) {\n var $$ = this;\n return function (d) {\n var scale = isSub ? $$.getSubYScale(d.id) : $$.getYScale(d.id);\n return scale(d.value);\n };\n };\n\n ChartInternal.prototype.getShapeOffset = function (typeFilter, indices, isSub) {\n var $$ = this,\n targets = $$.orderTargets($$.filterTargetsToShow($$.data.targets.filter(typeFilter, $$))),\n targetIds = targets.map(function (t) {\n return t.id;\n });\n return function (d, i) {\n var scale = isSub ? $$.getSubYScale(d.id) : $$.getYScale(d.id),\n y0 = scale(0),\n offset = y0;\n targets.forEach(function (t) {\n var values = $$.isStepType(d) ? $$.convertValuesToStep(t.values) : t.values;\n\n if (t.id === d.id || indices[t.id] !== indices[d.id]) {\n return;\n }\n\n if (targetIds.indexOf(t.id) < targetIds.indexOf(d.id)) {\n // check if the x values line up\n if (typeof values[i] === 'undefined' || +values[i].x !== +d.x) {\n // \"+\" for timeseries\n // if not, try to find the value that does line up\n i = -1;\n values.forEach(function (v, j) {\n if (v.x === d.x) {\n i = j;\n }\n });\n }\n\n if (i in values && values[i].value * d.value >= 0) {\n offset += scale(values[i].value) - y0;\n }\n }\n });\n return offset;\n };\n };\n\n ChartInternal.prototype.isWithinShape = function (that, d) {\n var $$ = this,\n shape = $$.d3.select(that),\n isWithin;\n\n if (!$$.isTargetToShow(d.id)) {\n isWithin = false;\n } else if (that.nodeName === 'circle') {\n isWithin = $$.isStepType(d) ? $$.isWithinStep(that, $$.getYScale(d.id)(d.value)) : $$.isWithinCircle(that, $$.pointSelectR(d) * 1.5);\n } else if (that.nodeName === 'path') {\n isWithin = shape.classed(CLASS.bar) ? $$.isWithinBar($$.d3.mouse(that), that) : true;\n }\n\n return isWithin;\n };\n\n ChartInternal.prototype.getInterpolate = function (d) {\n var $$ = this,\n d3 = $$.d3,\n types = {\n 'linear': d3.curveLinear,\n 'linear-closed': d3.curveLinearClosed,\n 'basis': d3.curveBasis,\n 'basis-open': d3.curveBasisOpen,\n 'basis-closed': d3.curveBasisClosed,\n 'bundle': d3.curveBundle,\n 'cardinal': d3.curveCardinal,\n 'cardinal-open': d3.curveCardinalOpen,\n 'cardinal-closed': d3.curveCardinalClosed,\n 'monotone': d3.curveMonotoneX,\n 'step': d3.curveStep,\n 'step-before': d3.curveStepBefore,\n 'step-after': d3.curveStepAfter\n },\n type;\n\n if ($$.isSplineType(d)) {\n type = types[$$.config.spline_interpolation_type] || types.cardinal;\n } else if ($$.isStepType(d)) {\n type = types[$$.config.line_step_type];\n } else {\n type = types.linear;\n }\n\n return type;\n };\n\n ChartInternal.prototype.initLine = function () {\n var $$ = this;\n $$.main.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.chartLines);\n };\n\n ChartInternal.prototype.updateTargetsForLine = function (targets) {\n var $$ = this,\n config = $$.config,\n mainLines,\n mainLineEnter,\n classChartLine = $$.classChartLine.bind($$),\n classLines = $$.classLines.bind($$),\n classAreas = $$.classAreas.bind($$),\n classCircles = $$.classCircles.bind($$),\n classFocus = $$.classFocus.bind($$);\n mainLines = $$.main.select('.' + CLASS.chartLines).selectAll('.' + CLASS.chartLine).data(targets).attr('class', function (d) {\n return classChartLine(d) + classFocus(d);\n });\n mainLineEnter = mainLines.enter().append('g').attr('class', classChartLine).style('opacity', 0).style(\"pointer-events\", \"none\"); // Lines for each data\n\n mainLineEnter.append('g').attr(\"class\", classLines); // Areas\n\n mainLineEnter.append('g').attr('class', classAreas); // Circles for each data point on lines\n\n mainLineEnter.append('g').attr(\"class\", function (d) {\n return $$.generateClass(CLASS.selectedCircles, d.id);\n });\n mainLineEnter.append('g').attr(\"class\", classCircles).style(\"cursor\", function (d) {\n return config.data_selection_isselectable(d) ? \"pointer\" : null;\n }); // Update date for selected circles\n\n targets.forEach(function (t) {\n $$.main.selectAll('.' + CLASS.selectedCircles + $$.getTargetSelectorSuffix(t.id)).selectAll('.' + CLASS.selectedCircle).each(function (d) {\n d.value = t.values[d.index].value;\n });\n }); // MEMO: can not keep same color...\n //mainLineUpdate.exit().remove();\n };\n\n ChartInternal.prototype.updateLine = function (durationForExit) {\n var $$ = this;\n var mainLine = $$.main.selectAll('.' + CLASS.lines).selectAll('.' + CLASS.line).data($$.lineData.bind($$));\n var mainLineEnter = mainLine.enter().append('path').attr('class', $$.classLine.bind($$)).style(\"stroke\", $$.color);\n $$.mainLine = mainLineEnter.merge(mainLine).style(\"opacity\", $$.initialOpacity.bind($$)).style('shape-rendering', function (d) {\n return $$.isStepType(d) ? 'crispEdges' : '';\n }).attr('transform', null);\n mainLine.exit().transition().duration(durationForExit).style('opacity', 0);\n };\n\n ChartInternal.prototype.redrawLine = function (drawLine, withTransition, transition) {\n return [(withTransition ? this.mainLine.transition(transition) : this.mainLine).attr(\"d\", drawLine).style(\"stroke\", this.color).style(\"opacity\", 1)];\n };\n\n ChartInternal.prototype.generateDrawLine = function (lineIndices, isSub) {\n var $$ = this,\n config = $$.config,\n line = $$.d3.line(),\n getPoints = $$.generateGetLinePoints(lineIndices, isSub),\n yScaleGetter = isSub ? $$.getSubYScale : $$.getYScale,\n xValue = function xValue(d) {\n return (isSub ? $$.subxx : $$.xx).call($$, d);\n },\n yValue = function yValue(d, i) {\n return config.data_groups.length > 0 ? getPoints(d, i)[0][1] : yScaleGetter.call($$, d.id)(d.value);\n };\n\n line = config.axis_rotated ? line.x(yValue).y(xValue) : line.x(xValue).y(yValue);\n\n if (!config.line_connectNull) {\n line = line.defined(function (d) {\n return d.value != null;\n });\n }\n\n return function (d) {\n var values = config.line_connectNull ? $$.filterRemoveNull(d.values) : d.values,\n x = isSub ? $$.subX : $$.x,\n y = yScaleGetter.call($$, d.id),\n x0 = 0,\n y0 = 0,\n path;\n\n if ($$.isLineType(d)) {\n if (config.data_regions[d.id]) {\n path = $$.lineWithRegions(values, x, y, config.data_regions[d.id]);\n } else {\n if ($$.isStepType(d)) {\n values = $$.convertValuesToStep(values);\n }\n\n path = line.curve($$.getInterpolate(d))(values);\n }\n } else {\n if (values[0]) {\n x0 = x(values[0].x);\n y0 = y(values[0].value);\n }\n\n path = config.axis_rotated ? \"M \" + y0 + \" \" + x0 : \"M \" + x0 + \" \" + y0;\n }\n\n return path ? path : \"M 0 0\";\n };\n };\n\n ChartInternal.prototype.generateGetLinePoints = function (lineIndices, isSub) {\n // partial duplication of generateGetBarPoints\n var $$ = this,\n config = $$.config,\n lineTargetsNum = lineIndices.__max__ + 1,\n x = $$.getShapeX(0, lineTargetsNum, lineIndices, !!isSub),\n y = $$.getShapeY(!!isSub),\n lineOffset = $$.getShapeOffset($$.isLineType, lineIndices, !!isSub),\n yScale = isSub ? $$.getSubYScale : $$.getYScale;\n return function (d, i) {\n var y0 = yScale.call($$, d.id)(0),\n offset = lineOffset(d, i) || y0,\n // offset is for stacked area chart\n posX = x(d),\n posY = y(d); // fix posY not to overflow opposite quadrant\n\n if (config.axis_rotated) {\n if (0 < d.value && posY < y0 || d.value < 0 && y0 < posY) {\n posY = y0;\n }\n } // 1 point that marks the line position\n\n\n return [[posX, posY - (y0 - offset)], [posX, posY - (y0 - offset)], // needed for compatibility\n [posX, posY - (y0 - offset)], // needed for compatibility\n [posX, posY - (y0 - offset)] // needed for compatibility\n ];\n };\n };\n\n ChartInternal.prototype.lineWithRegions = function (d, x, y, _regions) {\n var $$ = this,\n config = $$.config,\n prev = -1,\n i,\n j,\n s = \"M\",\n sWithRegion,\n xp,\n yp,\n dx,\n dy,\n dd,\n diff,\n diffx2,\n xOffset = $$.isCategorized() ? 0.5 : 0,\n xValue,\n yValue,\n regions = [];\n\n function isWithinRegions(x, regions) {\n var i;\n\n for (i = 0; i < regions.length; i++) {\n if (regions[i].start < x && x <= regions[i].end) {\n return true;\n }\n }\n\n return false;\n } // Check start/end of regions\n\n\n if (isDefined(_regions)) {\n for (i = 0; i < _regions.length; i++) {\n regions[i] = {};\n\n if (isUndefined(_regions[i].start)) {\n regions[i].start = d[0].x;\n } else {\n regions[i].start = $$.isTimeSeries() ? $$.parseDate(_regions[i].start) : _regions[i].start;\n }\n\n if (isUndefined(_regions[i].end)) {\n regions[i].end = d[d.length - 1].x;\n } else {\n regions[i].end = $$.isTimeSeries() ? $$.parseDate(_regions[i].end) : _regions[i].end;\n }\n }\n } // Set scales\n\n\n xValue = config.axis_rotated ? function (d) {\n return y(d.value);\n } : function (d) {\n return x(d.x);\n };\n yValue = config.axis_rotated ? function (d) {\n return x(d.x);\n } : function (d) {\n return y(d.value);\n }; // Define svg generator function for region\n\n function generateM(points) {\n return 'M' + points[0][0] + ' ' + points[0][1] + ' ' + points[1][0] + ' ' + points[1][1];\n }\n\n if ($$.isTimeSeries()) {\n sWithRegion = function sWithRegion(d0, d1, j, diff) {\n var x0 = d0.x.getTime(),\n x_diff = d1.x - d0.x,\n xv0 = new Date(x0 + x_diff * j),\n xv1 = new Date(x0 + x_diff * (j + diff)),\n points;\n\n if (config.axis_rotated) {\n points = [[y(yp(j)), x(xv0)], [y(yp(j + diff)), x(xv1)]];\n } else {\n points = [[x(xv0), y(yp(j))], [x(xv1), y(yp(j + diff))]];\n }\n\n return generateM(points);\n };\n } else {\n sWithRegion = function sWithRegion(d0, d1, j, diff) {\n var points;\n\n if (config.axis_rotated) {\n points = [[y(yp(j), true), x(xp(j))], [y(yp(j + diff), true), x(xp(j + diff))]];\n } else {\n points = [[x(xp(j), true), y(yp(j))], [x(xp(j + diff), true), y(yp(j + diff))]];\n }\n\n return generateM(points);\n };\n } // Generate\n\n\n for (i = 0; i < d.length; i++) {\n // Draw as normal\n if (isUndefined(regions) || !isWithinRegions(d[i].x, regions)) {\n s += \" \" + xValue(d[i]) + \" \" + yValue(d[i]);\n } // Draw with region // TODO: Fix for horizotal charts\n else {\n xp = $$.getScale(d[i - 1].x + xOffset, d[i].x + xOffset, $$.isTimeSeries());\n yp = $$.getScale(d[i - 1].value, d[i].value);\n dx = x(d[i].x) - x(d[i - 1].x);\n dy = y(d[i].value) - y(d[i - 1].value);\n dd = Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2));\n diff = 2 / dd;\n diffx2 = diff * 2;\n\n for (j = diff; j <= 1; j += diffx2) {\n s += sWithRegion(d[i - 1], d[i], j, diff);\n }\n }\n\n prev = d[i].x;\n }\n\n return s;\n };\n\n ChartInternal.prototype.updateArea = function (durationForExit) {\n var $$ = this,\n d3 = $$.d3;\n var mainArea = $$.main.selectAll('.' + CLASS.areas).selectAll('.' + CLASS.area).data($$.lineData.bind($$));\n var mainAreaEnter = mainArea.enter().append('path').attr(\"class\", $$.classArea.bind($$)).style(\"fill\", $$.color).style(\"opacity\", function () {\n $$.orgAreaOpacity = +d3.select(this).style('opacity');\n return 0;\n });\n $$.mainArea = mainAreaEnter.merge(mainArea).style(\"opacity\", $$.orgAreaOpacity);\n mainArea.exit().transition().duration(durationForExit).style('opacity', 0);\n };\n\n ChartInternal.prototype.redrawArea = function (drawArea, withTransition, transition) {\n return [(withTransition ? this.mainArea.transition(transition) : this.mainArea).attr(\"d\", drawArea).style(\"fill\", this.color).style(\"opacity\", this.orgAreaOpacity)];\n };\n\n ChartInternal.prototype.generateDrawArea = function (areaIndices, isSub) {\n var $$ = this,\n config = $$.config,\n area = $$.d3.area(),\n getPoints = $$.generateGetAreaPoints(areaIndices, isSub),\n yScaleGetter = isSub ? $$.getSubYScale : $$.getYScale,\n xValue = function xValue(d) {\n return (isSub ? $$.subxx : $$.xx).call($$, d);\n },\n value0 = function value0(d, i) {\n return config.data_groups.length > 0 ? getPoints(d, i)[0][1] : yScaleGetter.call($$, d.id)($$.getAreaBaseValue(d.id));\n },\n value1 = function value1(d, i) {\n return config.data_groups.length > 0 ? getPoints(d, i)[1][1] : yScaleGetter.call($$, d.id)(d.value);\n };\n\n area = config.axis_rotated ? area.x0(value0).x1(value1).y(xValue) : area.x(xValue).y0(config.area_above ? 0 : value0).y1(value1);\n\n if (!config.line_connectNull) {\n area = area.defined(function (d) {\n return d.value !== null;\n });\n }\n\n return function (d) {\n var values = config.line_connectNull ? $$.filterRemoveNull(d.values) : d.values,\n x0 = 0,\n y0 = 0,\n path;\n\n if ($$.isAreaType(d)) {\n if ($$.isStepType(d)) {\n values = $$.convertValuesToStep(values);\n }\n\n path = area.curve($$.getInterpolate(d))(values);\n } else {\n if (values[0]) {\n x0 = $$.x(values[0].x);\n y0 = $$.getYScale(d.id)(values[0].value);\n }\n\n path = config.axis_rotated ? \"M \" + y0 + \" \" + x0 : \"M \" + x0 + \" \" + y0;\n }\n\n return path ? path : \"M 0 0\";\n };\n };\n\n ChartInternal.prototype.getAreaBaseValue = function () {\n return 0;\n };\n\n ChartInternal.prototype.generateGetAreaPoints = function (areaIndices, isSub) {\n // partial duplication of generateGetBarPoints\n var $$ = this,\n config = $$.config,\n areaTargetsNum = areaIndices.__max__ + 1,\n x = $$.getShapeX(0, areaTargetsNum, areaIndices, !!isSub),\n y = $$.getShapeY(!!isSub),\n areaOffset = $$.getShapeOffset($$.isAreaType, areaIndices, !!isSub),\n yScale = isSub ? $$.getSubYScale : $$.getYScale;\n return function (d, i) {\n var y0 = yScale.call($$, d.id)(0),\n offset = areaOffset(d, i) || y0,\n // offset is for stacked area chart\n posX = x(d),\n posY = y(d); // fix posY not to overflow opposite quadrant\n\n if (config.axis_rotated) {\n if (0 < d.value && posY < y0 || d.value < 0 && y0 < posY) {\n posY = y0;\n }\n } // 1 point that marks the area position\n\n\n return [[posX, offset], [posX, posY - (y0 - offset)], [posX, posY - (y0 - offset)], // needed for compatibility\n [posX, offset] // needed for compatibility\n ];\n };\n };\n\n ChartInternal.prototype.updateCircle = function (cx, cy) {\n var $$ = this;\n var mainCircle = $$.main.selectAll('.' + CLASS.circles).selectAll('.' + CLASS.circle).data($$.lineOrScatterData.bind($$));\n var mainCircleEnter = mainCircle.enter().append(\"circle\").attr(\"class\", $$.classCircle.bind($$)).attr(\"cx\", cx).attr(\"cy\", cy).attr(\"r\", $$.pointR.bind($$)).style(\"fill\", $$.color);\n $$.mainCircle = mainCircleEnter.merge(mainCircle).style(\"opacity\", $$.initialOpacityForCircle.bind($$));\n mainCircle.exit().style(\"opacity\", 0);\n };\n\n ChartInternal.prototype.redrawCircle = function (cx, cy, withTransition, transition) {\n var $$ = this,\n selectedCircles = $$.main.selectAll('.' + CLASS.selectedCircle);\n return [(withTransition ? $$.mainCircle.transition(transition) : $$.mainCircle).style('opacity', this.opacityForCircle.bind($$)).style(\"fill\", $$.color).attr(\"cx\", cx).attr(\"cy\", cy), (withTransition ? selectedCircles.transition(transition) : selectedCircles).attr(\"cx\", cx).attr(\"cy\", cy)];\n };\n\n ChartInternal.prototype.circleX = function (d) {\n return d.x || d.x === 0 ? this.x(d.x) : null;\n };\n\n ChartInternal.prototype.updateCircleY = function () {\n var $$ = this,\n lineIndices,\n getPoints;\n\n if ($$.config.data_groups.length > 0) {\n lineIndices = $$.getShapeIndices($$.isLineType), getPoints = $$.generateGetLinePoints(lineIndices);\n\n $$.circleY = function (d, i) {\n return getPoints(d, i)[0][1];\n };\n } else {\n $$.circleY = function (d) {\n return $$.getYScale(d.id)(d.value);\n };\n }\n };\n\n ChartInternal.prototype.getCircles = function (i, id) {\n var $$ = this;\n return (id ? $$.main.selectAll('.' + CLASS.circles + $$.getTargetSelectorSuffix(id)) : $$.main).selectAll('.' + CLASS.circle + (isValue(i) ? '-' + i : ''));\n };\n\n ChartInternal.prototype.expandCircles = function (i, id, reset) {\n var $$ = this,\n r = $$.pointExpandedR.bind($$);\n\n if (reset) {\n $$.unexpandCircles();\n }\n\n $$.getCircles(i, id).classed(CLASS.EXPANDED, true).attr('r', r);\n };\n\n ChartInternal.prototype.unexpandCircles = function (i) {\n var $$ = this,\n r = $$.pointR.bind($$);\n $$.getCircles(i).filter(function () {\n return $$.d3.select(this).classed(CLASS.EXPANDED);\n }).classed(CLASS.EXPANDED, false).attr('r', r);\n };\n\n ChartInternal.prototype.pointR = function (d) {\n var $$ = this,\n config = $$.config;\n return $$.isStepType(d) ? 0 : isFunction(config.point_r) ? config.point_r(d) : config.point_r;\n };\n\n ChartInternal.prototype.pointExpandedR = function (d) {\n var $$ = this,\n config = $$.config;\n\n if (config.point_focus_expand_enabled) {\n return isFunction(config.point_focus_expand_r) ? config.point_focus_expand_r(d) : config.point_focus_expand_r ? config.point_focus_expand_r : $$.pointR(d) * 1.75;\n } else {\n return $$.pointR(d);\n }\n };\n\n ChartInternal.prototype.pointSelectR = function (d) {\n var $$ = this,\n config = $$.config;\n return isFunction(config.point_select_r) ? config.point_select_r(d) : config.point_select_r ? config.point_select_r : $$.pointR(d) * 4;\n };\n\n ChartInternal.prototype.isWithinCircle = function (that, r) {\n var d3 = this.d3,\n mouse = d3.mouse(that),\n d3_this = d3.select(that),\n cx = +d3_this.attr(\"cx\"),\n cy = +d3_this.attr(\"cy\");\n return Math.sqrt(Math.pow(cx - mouse[0], 2) + Math.pow(cy - mouse[1], 2)) < r;\n };\n\n ChartInternal.prototype.isWithinStep = function (that, y) {\n return Math.abs(y - this.d3.mouse(that)[1]) < 30;\n };\n\n ChartInternal.prototype.getCurrentWidth = function () {\n var $$ = this,\n config = $$.config;\n return config.size_width ? config.size_width : $$.getParentWidth();\n };\n\n ChartInternal.prototype.getCurrentHeight = function () {\n var $$ = this,\n config = $$.config,\n h = config.size_height ? config.size_height : $$.getParentHeight();\n return h > 0 ? h : 320 / ($$.hasType('gauge') && !config.gauge_fullCircle ? 2 : 1);\n };\n\n ChartInternal.prototype.getCurrentPaddingTop = function () {\n var $$ = this,\n config = $$.config,\n padding = isValue(config.padding_top) ? config.padding_top : 0;\n\n if ($$.title && $$.title.node()) {\n padding += $$.getTitlePadding();\n }\n\n return padding;\n };\n\n ChartInternal.prototype.getCurrentPaddingBottom = function () {\n var config = this.config;\n return isValue(config.padding_bottom) ? config.padding_bottom : 0;\n };\n\n ChartInternal.prototype.getCurrentPaddingLeft = function (withoutRecompute) {\n var $$ = this,\n config = $$.config;\n\n if (isValue(config.padding_left)) {\n return config.padding_left;\n } else if (config.axis_rotated) {\n return !config.axis_x_show || config.axis_x_inner ? 1 : Math.max(ceil10($$.getAxisWidthByAxisId('x', withoutRecompute)), 40);\n } else if (!config.axis_y_show || config.axis_y_inner) {\n // && !config.axis_rotated\n return $$.axis.getYAxisLabelPosition().isOuter ? 30 : 1;\n } else {\n return ceil10($$.getAxisWidthByAxisId('y', withoutRecompute));\n }\n };\n\n ChartInternal.prototype.getCurrentPaddingRight = function () {\n var $$ = this,\n config = $$.config,\n defaultPadding = 10,\n legendWidthOnRight = $$.isLegendRight ? $$.getLegendWidth() + 20 : 0;\n\n if (isValue(config.padding_right)) {\n return config.padding_right + 1; // 1 is needed not to hide tick line\n } else if (config.axis_rotated) {\n return defaultPadding + legendWidthOnRight;\n } else if (!config.axis_y2_show || config.axis_y2_inner) {\n // && !config.axis_rotated\n return 2 + legendWidthOnRight + ($$.axis.getY2AxisLabelPosition().isOuter ? 20 : 0);\n } else {\n return ceil10($$.getAxisWidthByAxisId('y2')) + legendWidthOnRight;\n }\n };\n\n ChartInternal.prototype.getParentRectValue = function (key) {\n var parent = this.selectChart.node(),\n v;\n\n while (parent && parent.tagName !== 'BODY') {\n try {\n v = parent.getBoundingClientRect()[key];\n } catch (e) {\n if (key === 'width') {\n // In IE in certain cases getBoundingClientRect\n // will cause an \"unspecified error\"\n v = parent.offsetWidth;\n }\n }\n\n if (v) {\n break;\n }\n\n parent = parent.parentNode;\n }\n\n return v;\n };\n\n ChartInternal.prototype.getParentWidth = function () {\n return this.getParentRectValue('width');\n };\n\n ChartInternal.prototype.getParentHeight = function () {\n var h = this.selectChart.style('height');\n return h.indexOf('px') > 0 ? +h.replace('px', '') : 0;\n };\n\n ChartInternal.prototype.getSvgLeft = function (withoutRecompute) {\n var $$ = this,\n config = $$.config,\n hasLeftAxisRect = config.axis_rotated || !config.axis_rotated && !config.axis_y_inner,\n leftAxisClass = config.axis_rotated ? CLASS.axisX : CLASS.axisY,\n leftAxis = $$.main.select('.' + leftAxisClass).node(),\n svgRect = leftAxis && hasLeftAxisRect ? leftAxis.getBoundingClientRect() : {\n right: 0\n },\n chartRect = $$.selectChart.node().getBoundingClientRect(),\n hasArc = $$.hasArcType(),\n svgLeft = svgRect.right - chartRect.left - (hasArc ? 0 : $$.getCurrentPaddingLeft(withoutRecompute));\n return svgLeft > 0 ? svgLeft : 0;\n };\n\n ChartInternal.prototype.getAxisWidthByAxisId = function (id, withoutRecompute) {\n var $$ = this,\n position = $$.axis.getLabelPositionById(id);\n return $$.axis.getMaxTickWidth(id, withoutRecompute) + (position.isInner ? 20 : 40);\n };\n\n ChartInternal.prototype.getHorizontalAxisHeight = function (axisId) {\n var $$ = this,\n config = $$.config,\n h = 30;\n\n if (axisId === 'x' && !config.axis_x_show) {\n return 8;\n }\n\n if (axisId === 'x' && config.axis_x_height) {\n return config.axis_x_height;\n }\n\n if (axisId === 'y' && !config.axis_y_show) {\n return config.legend_show && !$$.isLegendRight && !$$.isLegendInset ? 10 : 1;\n }\n\n if (axisId === 'y2' && !config.axis_y2_show) {\n return $$.rotated_padding_top;\n } // Calculate x axis height when tick rotated\n\n\n if (axisId === 'x' && !config.axis_rotated && config.axis_x_tick_rotate) {\n h = 30 + $$.axis.getMaxTickWidth(axisId) * Math.cos(Math.PI * (90 - Math.abs(config.axis_x_tick_rotate)) / 180);\n } // Calculate y axis height when tick rotated\n\n\n if (axisId === 'y' && config.axis_rotated && config.axis_y_tick_rotate) {\n h = 30 + $$.axis.getMaxTickWidth(axisId) * Math.cos(Math.PI * (90 - Math.abs(config.axis_y_tick_rotate)) / 180);\n }\n\n return h + ($$.axis.getLabelPositionById(axisId).isInner ? 0 : 10) + (axisId === 'y2' ? -10 : 0);\n };\n\n ChartInternal.prototype.initBrush = function (scale) {\n var $$ = this,\n d3 = $$.d3; // TODO: dynamically change brushY/brushX according to axis_rotated.\n\n $$.brush = ($$.config.axis_rotated ? d3.brushY() : d3.brushX()).on(\"brush\", function () {\n var event = d3.event.sourceEvent;\n\n if (event && event.type === \"zoom\") {\n return;\n }\n\n $$.redrawForBrush();\n }).on(\"end\", function () {\n var event = d3.event.sourceEvent;\n\n if (event && event.type === \"zoom\") {\n return;\n }\n\n if ($$.brush.empty() && event && event.type !== 'end') {\n $$.brush.clear();\n }\n });\n\n $$.brush.updateExtent = function () {\n var range = this.scale.range(),\n extent;\n\n if ($$.config.axis_rotated) {\n extent = [[0, range[0]], [$$.width2, range[1]]];\n } else {\n extent = [[range[0], 0], [range[1], $$.height2]];\n }\n\n this.extent(extent);\n return this;\n };\n\n $$.brush.updateScale = function (scale) {\n this.scale = scale;\n return this;\n };\n\n $$.brush.update = function (scale) {\n this.updateScale(scale || $$.subX).updateExtent();\n $$.context.select('.' + CLASS.brush).call(this);\n };\n\n $$.brush.clear = function () {\n $$.context.select('.' + CLASS.brush).call($$.brush.move, null);\n };\n\n $$.brush.selection = function () {\n return d3.brushSelection($$.context.select('.' + CLASS.brush).node());\n };\n\n $$.brush.selectionAsValue = function (selectionAsValue, withTransition) {\n var selection, brush;\n\n if (selectionAsValue) {\n if ($$.context) {\n selection = [this.scale(selectionAsValue[0]), this.scale(selectionAsValue[1])];\n brush = $$.context.select('.' + CLASS.brush);\n\n if (withTransition) {\n brush = brush.transition();\n }\n\n $$.brush.move(brush, selection);\n }\n\n return [];\n }\n\n selection = $$.brush.selection() || [0, 0];\n return [this.scale.invert(selection[0]), this.scale.invert(selection[1])];\n };\n\n $$.brush.empty = function () {\n var selection = $$.brush.selection();\n return !selection || selection[0] === selection[1];\n };\n\n return $$.brush.updateScale(scale);\n };\n\n ChartInternal.prototype.initSubchart = function () {\n var $$ = this,\n config = $$.config,\n context = $$.context = $$.svg.append(\"g\").attr(\"transform\", $$.getTranslate('context')),\n visibility = config.subchart_show ? 'visible' : 'hidden'; // set style\n\n context.style('visibility', visibility); // Define g for chart area\n\n context.append('g').attr(\"clip-path\", $$.clipPathForSubchart).attr('class', CLASS.chart); // Define g for bar chart area\n\n context.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.chartBars); // Define g for line chart area\n\n context.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.chartLines); // Add extent rect for Brush\n\n context.append(\"g\").attr(\"clip-path\", $$.clipPath).attr(\"class\", CLASS.brush); // ATTENTION: This must be called AFTER chart added\n // Add Axis\n\n $$.axes.subx = context.append(\"g\").attr(\"class\", CLASS.axisX).attr(\"transform\", $$.getTranslate('subx')).attr(\"clip-path\", config.axis_rotated ? \"\" : $$.clipPathForXAxis);\n };\n\n ChartInternal.prototype.initSubchartBrush = function () {\n var $$ = this; // Add extent rect for Brush\n\n $$.initBrush($$.subX).updateExtent();\n $$.context.select('.' + CLASS.brush).call($$.brush);\n };\n\n ChartInternal.prototype.updateTargetsForSubchart = function (targets) {\n var $$ = this,\n context = $$.context,\n config = $$.config,\n contextLineEnter,\n contextLine,\n contextBarEnter,\n contextBar,\n classChartBar = $$.classChartBar.bind($$),\n classBars = $$.classBars.bind($$),\n classChartLine = $$.classChartLine.bind($$),\n classLines = $$.classLines.bind($$),\n classAreas = $$.classAreas.bind($$);\n\n if (config.subchart_show) {\n //-- Bar --//\n contextBar = context.select('.' + CLASS.chartBars).selectAll('.' + CLASS.chartBar).data(targets);\n contextBarEnter = contextBar.enter().append('g').style('opacity', 0);\n contextBarEnter.merge(contextBar).attr('class', classChartBar); // Bars for each data\n\n contextBarEnter.append('g').attr(\"class\", classBars); //-- Line --//\n\n contextLine = context.select('.' + CLASS.chartLines).selectAll('.' + CLASS.chartLine).data(targets);\n contextLineEnter = contextLine.enter().append('g').style('opacity', 0);\n contextLineEnter.merge(contextLine).attr('class', classChartLine); // Lines for each data\n\n contextLineEnter.append(\"g\").attr(\"class\", classLines); // Area\n\n contextLineEnter.append(\"g\").attr(\"class\", classAreas); //-- Brush --//\n\n context.selectAll('.' + CLASS.brush + ' rect').attr(config.axis_rotated ? \"width\" : \"height\", config.axis_rotated ? $$.width2 : $$.height2);\n }\n };\n\n ChartInternal.prototype.updateBarForSubchart = function (durationForExit) {\n var $$ = this;\n var contextBar = $$.context.selectAll('.' + CLASS.bars).selectAll('.' + CLASS.bar).data($$.barData.bind($$));\n var contextBarEnter = contextBar.enter().append('path').attr(\"class\", $$.classBar.bind($$)).style(\"stroke\", 'none').style(\"fill\", $$.color);\n contextBar.exit().transition().duration(durationForExit).style('opacity', 0).remove();\n $$.contextBar = contextBarEnter.merge(contextBar).style(\"opacity\", $$.initialOpacity.bind($$));\n };\n\n ChartInternal.prototype.redrawBarForSubchart = function (drawBarOnSub, withTransition, duration) {\n (withTransition ? this.contextBar.transition(Math.random().toString()).duration(duration) : this.contextBar).attr('d', drawBarOnSub).style('opacity', 1);\n };\n\n ChartInternal.prototype.updateLineForSubchart = function (durationForExit) {\n var $$ = this;\n var contextLine = $$.context.selectAll('.' + CLASS.lines).selectAll('.' + CLASS.line).data($$.lineData.bind($$));\n var contextLineEnter = contextLine.enter().append('path').attr('class', $$.classLine.bind($$)).style('stroke', $$.color);\n contextLine.exit().transition().duration(durationForExit).style('opacity', 0).remove();\n $$.contextLine = contextLineEnter.merge(contextLine).style(\"opacity\", $$.initialOpacity.bind($$));\n };\n\n ChartInternal.prototype.redrawLineForSubchart = function (drawLineOnSub, withTransition, duration) {\n (withTransition ? this.contextLine.transition(Math.random().toString()).duration(duration) : this.contextLine).attr(\"d\", drawLineOnSub).style('opacity', 1);\n };\n\n ChartInternal.prototype.updateAreaForSubchart = function (durationForExit) {\n var $$ = this,\n d3 = $$.d3;\n var contextArea = $$.context.selectAll('.' + CLASS.areas).selectAll('.' + CLASS.area).data($$.lineData.bind($$));\n var contextAreaEnter = contextArea.enter().append('path').attr(\"class\", $$.classArea.bind($$)).style(\"fill\", $$.color).style(\"opacity\", function () {\n $$.orgAreaOpacity = +d3.select(this).style('opacity');\n return 0;\n });\n contextArea.exit().transition().duration(durationForExit).style('opacity', 0).remove();\n $$.contextArea = contextAreaEnter.merge(contextArea).style(\"opacity\", 0);\n };\n\n ChartInternal.prototype.redrawAreaForSubchart = function (drawAreaOnSub, withTransition, duration) {\n (withTransition ? this.contextArea.transition(Math.random().toString()).duration(duration) : this.contextArea).attr(\"d\", drawAreaOnSub).style(\"fill\", this.color).style(\"opacity\", this.orgAreaOpacity);\n };\n\n ChartInternal.prototype.redrawSubchart = function (withSubchart, transitions, duration, durationForExit, areaIndices, barIndices, lineIndices) {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config,\n drawAreaOnSub,\n drawBarOnSub,\n drawLineOnSub;\n $$.context.style('visibility', config.subchart_show ? 'visible' : 'hidden'); // subchart\n\n if (config.subchart_show) {\n // reflect main chart to extent on subchart if zoomed\n if (d3.event && d3.event.type === 'zoom') {\n $$.brush.selectionAsValue($$.x.orgDomain());\n } // update subchart elements if needed\n\n\n if (withSubchart) {\n // extent rect\n if (!$$.brush.empty()) {\n $$.brush.selectionAsValue($$.x.orgDomain());\n } // setup drawer - MEMO: this must be called after axis updated\n\n\n drawAreaOnSub = $$.generateDrawArea(areaIndices, true);\n drawBarOnSub = $$.generateDrawBar(barIndices, true);\n drawLineOnSub = $$.generateDrawLine(lineIndices, true);\n $$.updateBarForSubchart(duration);\n $$.updateLineForSubchart(duration);\n $$.updateAreaForSubchart(duration);\n $$.redrawBarForSubchart(drawBarOnSub, duration, duration);\n $$.redrawLineForSubchart(drawLineOnSub, duration, duration);\n $$.redrawAreaForSubchart(drawAreaOnSub, duration, duration);\n }\n }\n };\n\n ChartInternal.prototype.redrawForBrush = function () {\n var $$ = this,\n x = $$.x,\n d3 = $$.d3,\n s;\n $$.redraw({\n withTransition: false,\n withY: $$.config.zoom_rescale,\n withSubchart: false,\n withUpdateXDomain: true,\n withEventRect: false,\n withDimension: false\n }); // update zoom transation binded to event rect\n\n s = d3.event.selection || $$.brush.scale.range();\n $$.main.select('.' + CLASS.eventRect).call($$.zoom.transform, d3.zoomIdentity.scale($$.width / (s[1] - s[0])).translate(-s[0], 0));\n $$.config.subchart_onbrush.call($$.api, x.orgDomain());\n };\n\n ChartInternal.prototype.transformContext = function (withTransition, transitions) {\n var $$ = this,\n subXAxis;\n\n if (transitions && transitions.axisSubX) {\n subXAxis = transitions.axisSubX;\n } else {\n subXAxis = $$.context.select('.' + CLASS.axisX);\n\n if (withTransition) {\n subXAxis = subXAxis.transition();\n }\n }\n\n $$.context.attr(\"transform\", $$.getTranslate('context'));\n subXAxis.attr(\"transform\", $$.getTranslate('subx'));\n };\n\n ChartInternal.prototype.getDefaultSelection = function () {\n var $$ = this,\n config = $$.config,\n selection = isFunction(config.axis_x_selection) ? config.axis_x_selection($$.getXDomain($$.data.targets)) : config.axis_x_selection;\n\n if ($$.isTimeSeries()) {\n selection = [$$.parseDate(selection[0]), $$.parseDate(selection[1])];\n }\n\n return selection;\n };\n\n ChartInternal.prototype.initText = function () {\n var $$ = this;\n $$.main.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.chartTexts);\n $$.mainText = $$.d3.selectAll([]);\n };\n\n ChartInternal.prototype.updateTargetsForText = function (targets) {\n var $$ = this,\n classChartText = $$.classChartText.bind($$),\n classTexts = $$.classTexts.bind($$),\n classFocus = $$.classFocus.bind($$);\n var mainText = $$.main.select('.' + CLASS.chartTexts).selectAll('.' + CLASS.chartText).data(targets);\n var mainTextEnter = mainText.enter().append('g').attr('class', classChartText).style('opacity', 0).style(\"pointer-events\", \"none\");\n mainTextEnter.append('g').attr('class', classTexts);\n mainTextEnter.merge(mainText).attr('class', function (d) {\n return classChartText(d) + classFocus(d);\n });\n };\n\n ChartInternal.prototype.updateText = function (xForText, yForText, durationForExit) {\n var $$ = this,\n config = $$.config,\n barOrLineData = $$.barOrLineData.bind($$),\n classText = $$.classText.bind($$);\n var mainText = $$.main.selectAll('.' + CLASS.texts).selectAll('.' + CLASS.text).data(barOrLineData);\n var mainTextEnter = mainText.enter().append('text').attr(\"class\", classText).attr('text-anchor', function (d) {\n return config.axis_rotated ? d.value < 0 ? 'end' : 'start' : 'middle';\n }).style(\"stroke\", 'none').attr('x', xForText).attr('y', yForText).style(\"fill\", function (d) {\n return $$.color(d);\n }).style(\"fill-opacity\", 0);\n $$.mainText = mainTextEnter.merge(mainText).text(function (d, i, j) {\n return $$.dataLabelFormat(d.id)(d.value, d.id, i, j);\n });\n mainText.exit().transition().duration(durationForExit).style('fill-opacity', 0).remove();\n };\n\n ChartInternal.prototype.redrawText = function (xForText, yForText, forFlow, withTransition, transition) {\n return [(withTransition ? this.mainText.transition(transition) : this.mainText).attr('x', xForText).attr('y', yForText).style(\"fill\", this.color).style(\"fill-opacity\", forFlow ? 0 : this.opacityForText.bind(this))];\n };\n\n ChartInternal.prototype.getTextRect = function (text, cls, element) {\n var dummy = this.d3.select('body').append('div').classed('c3', true),\n svg = dummy.append(\"svg\").style('visibility', 'hidden').style('position', 'fixed').style('top', 0).style('left', 0),\n font = this.d3.select(element).style('font'),\n rect;\n svg.selectAll('.dummy').data([text]).enter().append('text').classed(cls ? cls : \"\", true).style('font', font).text(text).each(function () {\n rect = this.getBoundingClientRect();\n });\n dummy.remove();\n return rect;\n };\n\n ChartInternal.prototype.generateXYForText = function (areaIndices, barIndices, lineIndices, forX) {\n var $$ = this,\n getAreaPoints = $$.generateGetAreaPoints(areaIndices, false),\n getBarPoints = $$.generateGetBarPoints(barIndices, false),\n getLinePoints = $$.generateGetLinePoints(lineIndices, false),\n getter = forX ? $$.getXForText : $$.getYForText;\n return function (d, i) {\n var getPoints = $$.isAreaType(d) ? getAreaPoints : $$.isBarType(d) ? getBarPoints : getLinePoints;\n return getter.call($$, getPoints(d, i), d, this);\n };\n };\n\n ChartInternal.prototype.getXForText = function (points, d, textElement) {\n var $$ = this,\n box = textElement.getBoundingClientRect(),\n xPos,\n padding;\n\n if ($$.config.axis_rotated) {\n padding = $$.isBarType(d) ? 4 : 6;\n xPos = points[2][1] + padding * (d.value < 0 ? -1 : 1);\n } else {\n xPos = $$.hasType('bar') ? (points[2][0] + points[0][0]) / 2 : points[0][0];\n } // show labels regardless of the domain if value is null\n\n\n if (d.value === null) {\n if (xPos > $$.width) {\n xPos = $$.width - box.width;\n } else if (xPos < 0) {\n xPos = 4;\n }\n }\n\n return xPos;\n };\n\n ChartInternal.prototype.getYForText = function (points, d, textElement) {\n var $$ = this,\n box = textElement.getBoundingClientRect(),\n yPos;\n\n if ($$.config.axis_rotated) {\n yPos = (points[0][0] + points[2][0] + box.height * 0.6) / 2;\n } else {\n yPos = points[2][1];\n\n if (d.value < 0 || d.value === 0 && !$$.hasPositiveValue) {\n yPos += box.height;\n\n if ($$.isBarType(d) && $$.isSafari()) {\n yPos -= 3;\n } else if (!$$.isBarType(d) && $$.isChrome()) {\n yPos += 3;\n }\n } else {\n yPos += $$.isBarType(d) ? -3 : -6;\n }\n } // show labels regardless of the domain if value is null\n\n\n if (d.value === null && !$$.config.axis_rotated) {\n if (yPos < box.height) {\n yPos = box.height;\n } else if (yPos > this.height) {\n yPos = this.height - 4;\n }\n }\n\n return yPos;\n };\n\n ChartInternal.prototype.initTitle = function () {\n var $$ = this;\n $$.title = $$.svg.append(\"text\").text($$.config.title_text).attr(\"class\", $$.CLASS.title);\n };\n\n ChartInternal.prototype.redrawTitle = function () {\n var $$ = this;\n $$.title.attr(\"x\", $$.xForTitle.bind($$)).attr(\"y\", $$.yForTitle.bind($$));\n };\n\n ChartInternal.prototype.xForTitle = function () {\n var $$ = this,\n config = $$.config,\n position = config.title_position || 'left',\n x;\n\n if (position.indexOf('right') >= 0) {\n x = $$.currentWidth - $$.getTextRect($$.title.node().textContent, $$.CLASS.title, $$.title.node()).width - config.title_padding.right;\n } else if (position.indexOf('center') >= 0) {\n x = ($$.currentWidth - $$.getTextRect($$.title.node().textContent, $$.CLASS.title, $$.title.node()).width) / 2;\n } else {\n // left\n x = config.title_padding.left;\n }\n\n return x;\n };\n\n ChartInternal.prototype.yForTitle = function () {\n var $$ = this;\n return $$.config.title_padding.top + $$.getTextRect($$.title.node().textContent, $$.CLASS.title, $$.title.node()).height;\n };\n\n ChartInternal.prototype.getTitlePadding = function () {\n var $$ = this;\n return $$.yForTitle() + $$.config.title_padding.bottom;\n };\n\n ChartInternal.prototype.initTooltip = function () {\n var $$ = this,\n config = $$.config,\n i;\n $$.tooltip = $$.selectChart.style(\"position\", \"relative\").append(\"div\").attr('class', CLASS.tooltipContainer).style(\"position\", \"absolute\").style(\"pointer-events\", \"none\").style(\"display\", \"none\"); // Show tooltip if needed\n\n if (config.tooltip_init_show) {\n if ($$.isTimeSeries() && isString(config.tooltip_init_x)) {\n config.tooltip_init_x = $$.parseDate(config.tooltip_init_x);\n\n for (i = 0; i < $$.data.targets[0].values.length; i++) {\n if ($$.data.targets[0].values[i].x - config.tooltip_init_x === 0) {\n break;\n }\n }\n\n config.tooltip_init_x = i;\n }\n\n $$.tooltip.html(config.tooltip_contents.call($$, $$.data.targets.map(function (d) {\n return $$.addName(d.values[config.tooltip_init_x]);\n }), $$.axis.getXAxisTickFormat(), $$.getYFormat($$.hasArcType()), $$.color));\n $$.tooltip.style(\"top\", config.tooltip_init_position.top).style(\"left\", config.tooltip_init_position.left).style(\"display\", \"block\");\n }\n };\n\n ChartInternal.prototype.getTooltipSortFunction = function () {\n var $$ = this,\n config = $$.config;\n\n if (config.data_groups.length === 0 || config.tooltip_order !== undefined) {\n // if data are not grouped or if an order is specified\n // for the tooltip values we sort them by their values\n var order = config.tooltip_order;\n\n if (order === undefined) {\n order = config.data_order;\n }\n\n var valueOf = function valueOf(obj) {\n return obj ? obj.value : null;\n }; // if data are not grouped, we sort them by their value\n\n\n if (isString(order) && order.toLowerCase() === 'asc') {\n return function (a, b) {\n return valueOf(a) - valueOf(b);\n };\n } else if (isString(order) && order.toLowerCase() === 'desc') {\n return function (a, b) {\n return valueOf(b) - valueOf(a);\n };\n } else if (isFunction(order)) {\n // if the function is from data_order we need\n // to wrap the returned function in order to format\n // the sorted value to the expected format\n var sortFunction = order;\n\n if (config.tooltip_order === undefined) {\n sortFunction = function sortFunction(a, b) {\n return order(a ? {\n id: a.id,\n values: [a]\n } : null, b ? {\n id: b.id,\n values: [b]\n } : null);\n };\n }\n\n return sortFunction;\n } else if (isArray(order)) {\n return function (a, b) {\n return order.indexOf(a.id) - order.indexOf(b.id);\n };\n }\n } else {\n // if data are grouped, we follow the order of grouped targets\n var ids = $$.orderTargets($$.data.targets).map(function (i) {\n return i.id;\n }); // if it was either asc or desc we need to invert the order\n // returned by orderTargets\n\n if ($$.isOrderAsc() || $$.isOrderDesc()) {\n ids = ids.reverse();\n }\n\n return function (a, b) {\n return ids.indexOf(a.id) - ids.indexOf(b.id);\n };\n }\n };\n\n ChartInternal.prototype.getTooltipContent = function (d, defaultTitleFormat, defaultValueFormat, color) {\n var $$ = this,\n config = $$.config,\n titleFormat = config.tooltip_format_title || defaultTitleFormat,\n nameFormat = config.tooltip_format_name || function (name) {\n return name;\n },\n valueFormat = config.tooltip_format_value || defaultValueFormat,\n text,\n i,\n title,\n value,\n name,\n bgcolor;\n\n var tooltipSortFunction = this.getTooltipSortFunction();\n\n if (tooltipSortFunction) {\n d.sort(tooltipSortFunction);\n }\n\n for (i = 0; i < d.length; i++) {\n if (!(d[i] && (d[i].value || d[i].value === 0))) {\n continue;\n }\n\n if (!text) {\n title = sanitise(titleFormat ? titleFormat(d[i].x, d[i].index) : d[i].x);\n text = \"\" + (title || title === 0 ? \"\" : \"\");\n }\n\n value = sanitise(valueFormat(d[i].value, d[i].ratio, d[i].id, d[i].index, d));\n\n if (value !== undefined) {\n // Skip elements when their name is set to null\n if (d[i].name === null) {\n continue;\n }\n\n name = sanitise(nameFormat(d[i].name, d[i].ratio, d[i].id, d[i].index));\n bgcolor = $$.levelColor ? $$.levelColor(d[i].value) : color(d[i].id);\n text += \"\";\n text += \"\";\n text += \"\";\n text += \"\";\n }\n }\n\n return text + \"
    \" + title + \"
    \" + name + \"\" + value + \"
    \";\n };\n\n ChartInternal.prototype.tooltipPosition = function (dataToShow, tWidth, tHeight, element) {\n var $$ = this,\n config = $$.config,\n d3 = $$.d3;\n var svgLeft, tooltipLeft, tooltipRight, tooltipTop, chartRight;\n var forArc = $$.hasArcType(),\n mouse = d3.mouse(element); // Determin tooltip position\n\n if (forArc) {\n tooltipLeft = ($$.width - ($$.isLegendRight ? $$.getLegendWidth() : 0)) / 2 + mouse[0];\n tooltipTop = ($$.hasType('gauge') ? $$.height : $$.height / 2) + mouse[1] + 20;\n } else {\n svgLeft = $$.getSvgLeft(true);\n\n if (config.axis_rotated) {\n tooltipLeft = svgLeft + mouse[0] + 100;\n tooltipRight = tooltipLeft + tWidth;\n chartRight = $$.currentWidth - $$.getCurrentPaddingRight();\n tooltipTop = $$.x(dataToShow[0].x) + 20;\n } else {\n tooltipLeft = svgLeft + $$.getCurrentPaddingLeft(true) + $$.x(dataToShow[0].x) + 20;\n tooltipRight = tooltipLeft + tWidth;\n chartRight = svgLeft + $$.currentWidth - $$.getCurrentPaddingRight();\n tooltipTop = mouse[1] + 15;\n }\n\n if (tooltipRight > chartRight) {\n // 20 is needed for Firefox to keep tooltip width\n tooltipLeft -= tooltipRight - chartRight + 20;\n }\n\n if (tooltipTop + tHeight > $$.currentHeight) {\n tooltipTop -= tHeight + 30;\n }\n }\n\n if (tooltipTop < 0) {\n tooltipTop = 0;\n }\n\n return {\n top: tooltipTop,\n left: tooltipLeft\n };\n };\n\n ChartInternal.prototype.showTooltip = function (selectedData, element) {\n var $$ = this,\n config = $$.config;\n var tWidth, tHeight, position;\n var forArc = $$.hasArcType(),\n dataToShow = selectedData.filter(function (d) {\n return d && isValue(d.value);\n }),\n positionFunction = config.tooltip_position || ChartInternal.prototype.tooltipPosition;\n\n if (dataToShow.length === 0 || !config.tooltip_show) {\n return;\n }\n\n $$.tooltip.html(config.tooltip_contents.call($$, selectedData, $$.axis.getXAxisTickFormat(), $$.getYFormat(forArc), $$.color)).style(\"display\", \"block\"); // Get tooltip dimensions\n\n tWidth = $$.tooltip.property('offsetWidth');\n tHeight = $$.tooltip.property('offsetHeight');\n position = positionFunction.call(this, dataToShow, tWidth, tHeight, element); // Set tooltip\n\n $$.tooltip.style(\"top\", position.top + \"px\").style(\"left\", position.left + 'px');\n };\n\n ChartInternal.prototype.hideTooltip = function () {\n this.tooltip.style(\"display\", \"none\");\n };\n\n ChartInternal.prototype.setTargetType = function (targetIds, type) {\n var $$ = this,\n config = $$.config;\n $$.mapToTargetIds(targetIds).forEach(function (id) {\n $$.withoutFadeIn[id] = type === config.data_types[id];\n config.data_types[id] = type;\n });\n\n if (!targetIds) {\n config.data_type = type;\n }\n };\n\n ChartInternal.prototype.hasType = function (type, targets) {\n var $$ = this,\n types = $$.config.data_types,\n has = false;\n targets = targets || $$.data.targets;\n\n if (targets && targets.length) {\n targets.forEach(function (target) {\n var t = types[target.id];\n\n if (t && t.indexOf(type) >= 0 || !t && type === 'line') {\n has = true;\n }\n });\n } else if (Object.keys(types).length) {\n Object.keys(types).forEach(function (id) {\n if (types[id] === type) {\n has = true;\n }\n });\n } else {\n has = $$.config.data_type === type;\n }\n\n return has;\n };\n\n ChartInternal.prototype.hasArcType = function (targets) {\n return this.hasType('pie', targets) || this.hasType('donut', targets) || this.hasType('gauge', targets);\n };\n\n ChartInternal.prototype.isLineType = function (d) {\n var config = this.config,\n id = isString(d) ? d : d.id;\n return !config.data_types[id] || ['line', 'spline', 'area', 'area-spline', 'step', 'area-step'].indexOf(config.data_types[id]) >= 0;\n };\n\n ChartInternal.prototype.isStepType = function (d) {\n var id = isString(d) ? d : d.id;\n return ['step', 'area-step'].indexOf(this.config.data_types[id]) >= 0;\n };\n\n ChartInternal.prototype.isSplineType = function (d) {\n var id = isString(d) ? d : d.id;\n return ['spline', 'area-spline'].indexOf(this.config.data_types[id]) >= 0;\n };\n\n ChartInternal.prototype.isAreaType = function (d) {\n var id = isString(d) ? d : d.id;\n return ['area', 'area-spline', 'area-step'].indexOf(this.config.data_types[id]) >= 0;\n };\n\n ChartInternal.prototype.isBarType = function (d) {\n var id = isString(d) ? d : d.id;\n return this.config.data_types[id] === 'bar';\n };\n\n ChartInternal.prototype.isScatterType = function (d) {\n var id = isString(d) ? d : d.id;\n return this.config.data_types[id] === 'scatter';\n };\n\n ChartInternal.prototype.isPieType = function (d) {\n var id = isString(d) ? d : d.id;\n return this.config.data_types[id] === 'pie';\n };\n\n ChartInternal.prototype.isGaugeType = function (d) {\n var id = isString(d) ? d : d.id;\n return this.config.data_types[id] === 'gauge';\n };\n\n ChartInternal.prototype.isDonutType = function (d) {\n var id = isString(d) ? d : d.id;\n return this.config.data_types[id] === 'donut';\n };\n\n ChartInternal.prototype.isArcType = function (d) {\n return this.isPieType(d) || this.isDonutType(d) || this.isGaugeType(d);\n };\n\n ChartInternal.prototype.lineData = function (d) {\n return this.isLineType(d) ? [d] : [];\n };\n\n ChartInternal.prototype.arcData = function (d) {\n return this.isArcType(d.data) ? [d] : [];\n };\n /* not used\n function scatterData(d) {\n return isScatterType(d) ? d.values : [];\n }\n */\n\n\n ChartInternal.prototype.barData = function (d) {\n return this.isBarType(d) ? d.values : [];\n };\n\n ChartInternal.prototype.lineOrScatterData = function (d) {\n return this.isLineType(d) || this.isScatterType(d) ? d.values : [];\n };\n\n ChartInternal.prototype.barOrLineData = function (d) {\n return this.isBarType(d) || this.isLineType(d) ? d.values : [];\n };\n\n ChartInternal.prototype.isSafari = function () {\n var ua = window.navigator.userAgent;\n return ua.indexOf('Safari') >= 0 && ua.indexOf('Chrome') < 0;\n };\n\n ChartInternal.prototype.isChrome = function () {\n var ua = window.navigator.userAgent;\n return ua.indexOf('Chrome') >= 0;\n };\n\n ChartInternal.prototype.initZoom = function () {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config,\n startEvent;\n $$.zoom = d3.zoom().on(\"start\", function () {\n if (config.zoom_type !== 'scroll') {\n return;\n }\n\n var e = d3.event.sourceEvent;\n\n if (e && e.type === \"brush\") {\n return;\n }\n\n startEvent = e;\n config.zoom_onzoomstart.call($$.api, e);\n }).on(\"zoom\", function () {\n if (config.zoom_type !== 'scroll') {\n return;\n }\n\n var e = d3.event.sourceEvent;\n\n if (e && e.type === \"brush\") {\n return;\n }\n\n $$.redrawForZoom();\n config.zoom_onzoom.call($$.api, $$.x.orgDomain());\n }).on('end', function () {\n if (config.zoom_type !== 'scroll') {\n return;\n }\n\n var e = d3.event.sourceEvent;\n\n if (e && e.type === \"brush\") {\n return;\n } // if click, do nothing. otherwise, click interaction will be canceled.\n\n\n if (e && startEvent.clientX === e.clientX && startEvent.clientY === e.clientY) {\n return;\n }\n\n config.zoom_onzoomend.call($$.api, $$.x.orgDomain());\n });\n\n $$.zoom.updateDomain = function () {\n if (d3.event && d3.event.transform) {\n $$.x.domain(d3.event.transform.rescaleX($$.subX).domain());\n }\n\n return this;\n };\n\n $$.zoom.updateExtent = function () {\n this.scaleExtent([1, Infinity]).translateExtent([[0, 0], [$$.width, $$.height]]).extent([[0, 0], [$$.width, $$.height]]);\n return this;\n };\n\n $$.zoom.update = function () {\n return this.updateExtent().updateDomain();\n };\n\n return $$.zoom.updateExtent();\n };\n\n ChartInternal.prototype.zoomTransform = function (range) {\n var $$ = this,\n s = [$$.x(range[0]), $$.x(range[1])];\n return $$.d3.zoomIdentity.scale($$.width / (s[1] - s[0])).translate(-s[0], 0);\n };\n\n ChartInternal.prototype.initDragZoom = function () {\n var $$ = this;\n var d3 = $$.d3;\n var config = $$.config;\n var context = $$.context = $$.svg;\n var brushXPos = $$.margin.left + 20.5;\n var brushYPos = $$.margin.top + 0.5;\n\n if (!(config.zoom_type === 'drag' && config.zoom_enabled)) {\n return;\n }\n\n var getZoomedDomain = function getZoomedDomain(selection) {\n return selection && selection.map(function (x) {\n return $$.x.invert(x);\n });\n };\n\n var brush = $$.dragZoomBrush = d3.brushX().on(\"start\", function () {\n $$.api.unzoom();\n $$.svg.select(\".\" + CLASS.dragZoom).classed(\"disabled\", false);\n config.zoom_onzoomstart.call($$.api, d3.event.sourceEvent);\n }).on(\"brush\", function () {\n config.zoom_onzoom.call($$.api, getZoomedDomain(d3.event.selection));\n }).on(\"end\", function () {\n if (d3.event.selection == null) {\n return;\n }\n\n var zoomedDomain = getZoomedDomain(d3.event.selection);\n\n if (!config.zoom_disableDefaultBehavior) {\n $$.api.zoom(zoomedDomain);\n }\n\n $$.svg.select(\".\" + CLASS.dragZoom).classed(\"disabled\", true);\n config.zoom_onzoomend.call($$.api, zoomedDomain);\n });\n context.append(\"g\").classed(CLASS.dragZoom, true).attr(\"clip-path\", $$.clipPath).attr(\"transform\", \"translate(\" + brushXPos + \",\" + brushYPos + \")\").call(brush);\n };\n\n ChartInternal.prototype.getZoomDomain = function () {\n var $$ = this,\n config = $$.config,\n d3 = $$.d3,\n min = d3.min([$$.orgXDomain[0], config.zoom_x_min]),\n max = d3.max([$$.orgXDomain[1], config.zoom_x_max]);\n return [min, max];\n };\n\n ChartInternal.prototype.redrawForZoom = function () {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config,\n zoom = $$.zoom,\n x = $$.x;\n\n if (!config.zoom_enabled) {\n return;\n }\n\n if ($$.filterTargetsToShow($$.data.targets).length === 0) {\n return;\n }\n\n zoom.update();\n\n if (config.zoom_disableDefaultBehavior) {\n return;\n }\n\n if ($$.isCategorized() && x.orgDomain()[0] === $$.orgXDomain[0]) {\n x.domain([$$.orgXDomain[0] - 1e-10, x.orgDomain()[1]]);\n }\n\n $$.redraw({\n withTransition: false,\n withY: config.zoom_rescale,\n withSubchart: false,\n withEventRect: false,\n withDimension: false\n });\n\n if (d3.event.sourceEvent && d3.event.sourceEvent.type === 'mousemove') {\n $$.cancelClick = true;\n }\n };\n\n return c3;\n\n}));\n","export var name = \"d3\";\nexport var version = \"5.16.0\";\nexport var description = \"Data-Driven Documents\";\nexport var keywords = [\"dom\",\"visualization\",\"svg\",\"animation\",\"canvas\"];\nexport var homepage = \"https://d3js.org\";\nexport var license = \"BSD-3-Clause\";\nexport var author = {\"name\":\"Mike Bostock\",\"url\":\"https://bost.ocks.org/mike\"};\nexport var main = \"dist/d3.node.js\";\nexport var unpkg = \"dist/d3.min.js\";\nexport var jsdelivr = \"dist/d3.min.js\";\nexport var module = \"index.js\";\nexport var repository = {\"type\":\"git\",\"url\":\"https://github.com/d3/d3.git\"};\nexport var files = [\"dist/**/*.js\",\"index.js\"];\nexport var scripts = {\"pretest\":\"rimraf dist && mkdir dist && json2module package.json > dist/package.js && rollup -c\",\"test\":\"tape 'test/**/*-test.js'\",\"prepublishOnly\":\"yarn test\",\"postpublish\":\"git push && git push --tags && cd ../d3.github.com && git pull && cp ../d3/dist/d3.js d3.v5.js && cp ../d3/dist/d3.min.js d3.v5.min.js && git add d3.v5.js d3.v5.min.js && git commit -m \\\"d3 ${npm_package_version}\\\" && git push && cd - && cd ../d3-bower && git pull && cp ../d3/LICENSE ../d3/README.md ../d3/dist/d3.js ../d3/dist/d3.min.js . && git add -- LICENSE README.md d3.js d3.min.js && git commit -m \\\"${npm_package_version}\\\" && git tag -am \\\"${npm_package_version}\\\" v${npm_package_version} && git push && git push --tags && cd - && zip -j dist/d3.zip -- LICENSE README.md API.md CHANGES.md dist/d3.js dist/d3.min.js\"};\nexport var devDependencies = {\"json2module\":\"0.0\",\"rimraf\":\"2\",\"rollup\":\"1\",\"rollup-plugin-ascii\":\"0.0\",\"rollup-plugin-node-resolve\":\"3\",\"rollup-plugin-terser\":\"5\",\"tape\":\"4\"};\nexport var dependencies = {\"d3-array\":\"1\",\"d3-axis\":\"1\",\"d3-brush\":\"1\",\"d3-chord\":\"1\",\"d3-collection\":\"1\",\"d3-color\":\"1\",\"d3-contour\":\"1\",\"d3-dispatch\":\"1\",\"d3-drag\":\"1\",\"d3-dsv\":\"1\",\"d3-ease\":\"1\",\"d3-fetch\":\"1\",\"d3-force\":\"1\",\"d3-format\":\"1\",\"d3-geo\":\"1\",\"d3-hierarchy\":\"1\",\"d3-interpolate\":\"1\",\"d3-path\":\"1\",\"d3-polygon\":\"1\",\"d3-quadtree\":\"1\",\"d3-random\":\"1\",\"d3-scale\":\"2\",\"d3-scale-chromatic\":\"1\",\"d3-selection\":\"1\",\"d3-shape\":\"1\",\"d3-time\":\"1\",\"d3-time-format\":\"2\",\"d3-timer\":\"1\",\"d3-transition\":\"1\",\"d3-voronoi\":\"1\",\"d3-zoom\":\"1\"};\n","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending\";\n\nexport default function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return ascending(f(d), x);\n };\n}\n","import ascending from \"./ascending\";\nimport bisector from \"./bisector\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","export default function(array, f) {\n if (f == null) f = pair;\n var i = 0, n = array.length - 1, p = array[0], pairs = new Array(n < 0 ? 0 : n);\n while (i < n) pairs[i] = f(p, p = array[++i]);\n return pairs;\n}\n\nexport function pair(a, b) {\n return [a, b];\n}\n","import {pair} from \"./pairs\";\n\nexport default function(values0, values1, reduce) {\n var n0 = values0.length,\n n1 = values1.length,\n values = new Array(n0 * n1),\n i0,\n i1,\n i,\n value0;\n\n if (reduce == null) reduce = pair;\n\n for (i0 = i = 0; i0 < n0; ++i0) {\n for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) {\n values[i] = reduce(value0, values1[i1]);\n }\n }\n\n return values;\n}\n","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(x) {\n return x === null ? NaN : +x;\n}\n","import number from \"./number\";\n\nexport default function(values, valueof) {\n var n = values.length,\n m = 0,\n i = -1,\n mean = 0,\n value,\n delta,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) {\n delta = value - mean;\n mean += delta / ++m;\n sum += delta * (value - mean);\n }\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) {\n delta = value - mean;\n mean += delta / ++m;\n sum += delta * (value - mean);\n }\n }\n }\n\n if (m > 1) return sum / (m - 1);\n}\n","import variance from \"./variance\";\n\nexport default function(array, f) {\n var v = variance(array, f);\n return v ? Math.sqrt(v) : v;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n min,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n return [min, max];\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(x) {\n return x;\n}\n","export default function(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) ticks[i] = (start - i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","export default function(values) {\n return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n}\n","import {slice} from \"./array\";\nimport bisect from \"./bisect\";\nimport constant from \"./constant\";\nimport extent from \"./extent\";\nimport identity from \"./identity\";\nimport range from \"./range\";\nimport {tickStep} from \"./ticks\";\nimport sturges from \"./threshold/sturges\";\n\nexport default function() {\n var value = identity,\n domain = extent,\n threshold = sturges;\n\n function histogram(data) {\n var i,\n n = data.length,\n x,\n values = new Array(n);\n\n for (i = 0; i < n; ++i) {\n values[i] = value(data[i], i, data);\n }\n\n var xz = domain(values),\n x0 = xz[0],\n x1 = xz[1],\n tz = threshold(values, x0, x1);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n tz = tickStep(x0, x1, tz);\n tz = range(Math.ceil(x0 / tz) * tz, x1, tz); // exclusive\n }\n\n // Remove any thresholds outside the domain.\n var m = tz.length;\n while (tz[0] <= x0) tz.shift(), --m;\n while (tz[m - 1] > x1) tz.pop(), --m;\n\n var bins = new Array(m + 1),\n bin;\n\n // Initialize bins.\n for (i = 0; i <= m; ++i) {\n bin = bins[i] = [];\n bin.x0 = i > 0 ? tz[i - 1] : x0;\n bin.x1 = i < m ? tz[i] : x1;\n }\n\n // Assign data to bins by value, ignoring any outside the domain.\n for (i = 0; i < n; ++i) {\n x = values[i];\n if (x0 <= x && x <= x1) {\n bins[bisect(tz, x, 0, m)].push(data[i]);\n }\n }\n\n return bins;\n }\n\n histogram.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(_), histogram) : value;\n };\n\n histogram.domain = function(_) {\n return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([_[0], _[1]]), histogram) : domain;\n };\n\n histogram.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), histogram) : threshold;\n };\n\n return histogram;\n}\n","import number from \"./number\";\n\nexport default function(values, p, valueof) {\n if (valueof == null) valueof = number;\n if (!(n = values.length)) return;\n if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\n","import {map} from \"../array\";\nimport ascending from \"../ascending\";\nimport number from \"../number\";\nimport quantile from \"../quantile\";\n\nexport default function(values, min, max) {\n values = map.call(values, number).sort(ascending);\n return Math.ceil((max - min) / (2 * (quantile(values, 0.75) - quantile(values, 0.25)) * Math.pow(values.length, -1 / 3)));\n}\n","import deviation from \"../deviation\";\n\nexport default function(values, min, max) {\n return Math.ceil((max - min) / (3.5 * deviation(values) * Math.pow(values.length, -1 / 3)));\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n return max;\n}\n","import number from \"./number\";\n\nexport default function(values, valueof) {\n var n = values.length,\n m = n,\n i = -1,\n value,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) sum += value;\n else --m;\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) sum += value;\n else --m;\n }\n }\n\n if (m) return sum / m;\n}\n","import ascending from \"./ascending\";\nimport number from \"./number\";\nimport quantile from \"./quantile\";\n\nexport default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n numbers = [];\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) {\n numbers.push(value);\n }\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) {\n numbers.push(value);\n }\n }\n }\n\n return quantile(numbers.sort(ascending), 0.5);\n}\n","export default function(arrays) {\n var n = arrays.length,\n m,\n i = -1,\n j = 0,\n merged,\n array;\n\n while (++i < n) j += arrays[i].length;\n merged = new Array(j);\n\n while (--n >= 0) {\n array = arrays[n];\n m = array.length;\n while (--m >= 0) {\n merged[--j] = array[m];\n }\n }\n\n return merged;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n min;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null && min > value) {\n min = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && min > value) {\n min = value;\n }\n }\n }\n }\n }\n\n return min;\n}\n","export default function(array, indexes) {\n var i = indexes.length, permutes = new Array(i);\n while (i--) permutes[i] = array[indexes[i]];\n return permutes;\n}\n","import ascending from \"./ascending\";\n\nexport default function(values, compare) {\n if (!(n = values.length)) return;\n var n,\n i = 0,\n j = 0,\n xi,\n xj = values[j];\n\n if (compare == null) compare = ascending;\n\n while (++i < n) {\n if (compare(xi = values[i], xj) < 0 || compare(xj, xj) !== 0) {\n xj = xi, j = i;\n }\n }\n\n if (compare(xj, xj) === 0) return j;\n}\n","export default function(array, i0, i1) {\n var m = (i1 == null ? array.length : i1) - (i0 = i0 == null ? 0 : +i0),\n t,\n i;\n\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m + i0];\n array[m + i0] = array[i + i0];\n array[i + i0] = t;\n }\n\n return array;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (value = +values[i]) sum += value; // Note: zero and null are equivalent.\n }\n }\n\n else {\n while (++i < n) {\n if (value = +valueof(values[i], i, values)) sum += value;\n }\n }\n\n return sum;\n}\n","import min from \"./min\";\n\nexport default function(matrix) {\n if (!(n = matrix.length)) return [];\n for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) {\n for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n row[j] = matrix[j][i];\n }\n }\n return transpose;\n}\n\nfunction length(d) {\n return d.length;\n}\n","import transpose from \"./transpose\";\n\nexport default function() {\n return transpose(arguments);\n}\n","export var slice = Array.prototype.slice;\n","export default function(x) {\n return x;\n}\n","import {slice} from \"./array\";\nimport identity from \"./identity\";\n\nvar top = 1,\n right = 2,\n bottom = 3,\n left = 4,\n epsilon = 1e-6;\n\nfunction translateX(x) {\n return \"translate(\" + (x + 0.5) + \",0)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + (y + 0.5) + \")\";\n}\n\nfunction number(scale) {\n return function(d) {\n return +scale(d);\n };\n}\n\nfunction center(scale) {\n var offset = Math.max(0, scale.bandwidth() - 1) / 2; // Adjust for 0.5px offset.\n if (scale.round()) offset = Math.round(offset);\n return function(d) {\n return +scale(d) + offset;\n };\n}\n\nfunction entering() {\n return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n var tickArguments = [],\n tickValues = null,\n tickFormat = null,\n tickSizeInner = 6,\n tickSizeOuter = 6,\n tickPadding = 3,\n k = orient === top || orient === left ? -1 : 1,\n x = orient === left || orient === right ? \"x\" : \"y\",\n transform = orient === top || orient === bottom ? translateX : translateY;\n\n function axis(context) {\n var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n spacing = Math.max(tickSizeInner, 0) + tickPadding,\n range = scale.range(),\n range0 = +range[0] + 0.5,\n range1 = +range[range.length - 1] + 0.5,\n position = (scale.bandwidth ? center : number)(scale.copy()),\n selection = context.selection ? context.selection() : context,\n path = selection.selectAll(\".domain\").data([null]),\n tick = selection.selectAll(\".tick\").data(values, scale).order(),\n tickExit = tick.exit(),\n tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n line = tick.select(\"line\"),\n text = tick.select(\"text\");\n\n path = path.merge(path.enter().insert(\"path\", \".tick\")\n .attr(\"class\", \"domain\")\n .attr(\"stroke\", \"currentColor\"));\n\n tick = tick.merge(tickEnter);\n\n line = line.merge(tickEnter.append(\"line\")\n .attr(\"stroke\", \"currentColor\")\n .attr(x + \"2\", k * tickSizeInner));\n\n text = text.merge(tickEnter.append(\"text\")\n .attr(\"fill\", \"currentColor\")\n .attr(x, k * spacing)\n .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n if (context !== selection) {\n path = path.transition(context);\n tick = tick.transition(context);\n line = line.transition(context);\n text = text.transition(context);\n\n tickExit = tickExit.transition(context)\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d) : this.getAttribute(\"transform\"); });\n\n tickEnter\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform(p && isFinite(p = p(d)) ? p : position(d)); });\n }\n\n tickExit.remove();\n\n path\n .attr(\"d\", orient === left || orient == right\n ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H0.5V\" + range1 + \"H\" + k * tickSizeOuter : \"M0.5,\" + range0 + \"V\" + range1)\n : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V0.5H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",0.5H\" + range1));\n\n tick\n .attr(\"opacity\", 1)\n .attr(\"transform\", function(d) { return transform(position(d)); });\n\n line\n .attr(x + \"2\", k * tickSizeInner);\n\n text\n .attr(x, k * spacing)\n .text(format);\n\n selection.filter(entering)\n .attr(\"fill\", \"none\")\n .attr(\"font-size\", 10)\n .attr(\"font-family\", \"sans-serif\")\n .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n selection\n .each(function() { this.__axis = position; });\n }\n\n axis.scale = function(_) {\n return arguments.length ? (scale = _, axis) : scale;\n };\n\n axis.ticks = function() {\n return tickArguments = slice.call(arguments), axis;\n };\n\n axis.tickArguments = function(_) {\n return arguments.length ? (tickArguments = _ == null ? [] : slice.call(_), axis) : tickArguments.slice();\n };\n\n axis.tickValues = function(_) {\n return arguments.length ? (tickValues = _ == null ? null : slice.call(_), axis) : tickValues && tickValues.slice();\n };\n\n axis.tickFormat = function(_) {\n return arguments.length ? (tickFormat = _, axis) : tickFormat;\n };\n\n axis.tickSize = function(_) {\n return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeInner = function(_) {\n return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeOuter = function(_) {\n return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n };\n\n axis.tickPadding = function(_) {\n return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n };\n\n return axis;\n}\n\nexport function axisTop(scale) {\n return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n return axis(left, scale);\n}\n","var noop = {value: function() {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","import {Selection} from \"./index\";\nimport {EnterNode} from \"./enter\";\nimport constant from \"../constant\";\n\nvar keyPrefix = \"$\"; // Protect against keys like “__proto__”.\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = {},\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);\n if (keyValue in nodeByKeyValue) {\n exit[i] = node;\n } else {\n nodeByKeyValue[keyValue] = node;\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = keyPrefix + key.call(parent, data[i], i, data);\n if (node = nodeByKeyValue[keyValue]) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue[keyValue] = null;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {\n exit[i] = node;\n }\n }\n}\n\nexport default function(value, key) {\n if (!value) {\n data = new Array(this.size()), j = -1;\n this.each(function(d) { data[++j] = d; });\n return data;\n }\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = value.call(parent, parent && parent.__data__, j, parents),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;\n}\n","import namespace from \"../namespace\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import namespace from \"./namespace\";\nimport {xhtml} from \"./namespaces\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","import creator from \"../creator\";\nimport selector from \"../selector\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","var filterEvents = {};\n\nexport var event = null;\n\nif (typeof document !== \"undefined\") {\n var element = document.documentElement;\n if (!(\"onmouseenter\" in element)) {\n filterEvents = {mouseenter: \"mouseover\", mouseleave: \"mouseout\"};\n }\n}\n\nfunction filterContextListener(listener, index, group) {\n listener = contextListener(listener, index, group);\n return function(event) {\n var related = event.relatedTarget;\n if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {\n listener.call(this, event);\n }\n };\n}\n\nfunction contextListener(listener, index, group) {\n return function(event1) {\n var event0 = event; // Events can be reentrant (e.g., focus).\n event = event1;\n try {\n listener.call(this, this.__data__, index, group);\n } finally {\n event = event0;\n }\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, capture) {\n var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;\n return function(d, i, group) {\n var on = this.__on, o, listener = wrap(value, i, group);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n this.addEventListener(o.type, o.listener = listener, o.capture = capture);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, capture);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, capture) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n if (capture == null) capture = false;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));\n return this;\n}\n\nexport function customEvent(event1, listener, that, args) {\n var event0 = event;\n event1.sourceEvent = event;\n event = event1;\n try {\n return listener.apply(that, args);\n } finally {\n event = event0;\n }\n}\n","import defaultView from \"../window\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select\";\nimport selection_selectAll from \"./selectAll\";\nimport selection_filter from \"./filter\";\nimport selection_data from \"./data\";\nimport selection_enter from \"./enter\";\nimport selection_exit from \"./exit\";\nimport selection_join from \"./join\";\nimport selection_merge from \"./merge\";\nimport selection_order from \"./order\";\nimport selection_sort from \"./sort\";\nimport selection_call from \"./call\";\nimport selection_nodes from \"./nodes\";\nimport selection_node from \"./node\";\nimport selection_size from \"./size\";\nimport selection_empty from \"./empty\";\nimport selection_each from \"./each\";\nimport selection_attr from \"./attr\";\nimport selection_style from \"./style\";\nimport selection_property from \"./property\";\nimport selection_classed from \"./classed\";\nimport selection_text from \"./text\";\nimport selection_html from \"./html\";\nimport selection_raise from \"./raise\";\nimport selection_lower from \"./lower\";\nimport selection_append from \"./append\";\nimport selection_insert from \"./insert\";\nimport selection_remove from \"./remove\";\nimport selection_clone from \"./clone\";\nimport selection_datum from \"./datum\";\nimport selection_on from \"./on\";\nimport selection_dispatch from \"./dispatch\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch\n};\n\nexport default selection;\n","import {Selection} from \"./index\";\nimport selector from \"../selector\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index\";\nimport selectorAll from \"../selectorAll\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","import {Selection} from \"./index\";\nimport matcher from \"../matcher\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n enter = typeof onenter === \"function\" ? onenter(enter) : enter.append(onenter + \"\");\n if (onupdate != null) update = onupdate(update);\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(selection) {\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n var nodes = new Array(this.size()), i = -1;\n this.each(function() { nodes[++i] = this; });\n return nodes;\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n var size = 0;\n this.each(function() { ++size; });\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import creator from \"../creator\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {select} from \"d3-selection\";\nimport noevent from \"./noevent.js\";\n\nexport default function(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, true);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, true);\n } else {\n root.__noselect = root.style.MozUserSelect;\n root.style.MozUserSelect = \"none\";\n }\n}\n\nexport function yesdrag(view, noclick) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection.on(\"click.drag\", noevent, true);\n setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n }\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", null);\n } else {\n root.style.MozUserSelect = root.__noselect;\n delete root.__noselect;\n }\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","import {event} from \"./selection/on\";\n\nexport default function() {\n var current = event, source;\n while (source = current.sourceEvent) current = source;\n return current;\n}\n","export default function(node, event) {\n var svg = node.ownerSVGElement || node;\n\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node, touches, identifier) {\n if (arguments.length < 3) identifier = touches, touches = sourceEvent().changedTouches;\n\n for (var i = 0, n = touches ? touches.length : 0, touch; i < n; ++i) {\n if ((touch = touches[i]).identifier === identifier) {\n return point(node, touch);\n }\n }\n\n return null;\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node) {\n var event = sourceEvent();\n if (event.changedTouches) event = event.changedTouches[0];\n return point(node, event);\n}\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(function(elapsed) {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar cssNode,\n cssRoot,\n cssView,\n svgNode;\n\nexport function parseCss(value) {\n if (value === \"none\") return identity;\n if (!cssNode) cssNode = document.createElement(\"DIV\"), cssRoot = document.documentElement, cssView = document.defaultView;\n cssNode.style.transform = value;\n value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue(\"transform\");\n cssRoot.removeChild(cssNode);\n value = value.slice(7, -1).split(\",\");\n return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n end: transition_end\n};\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n });\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n return defaultTiming.time = now(), defaultTiming;\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","import {Transition} from \"./transition/index.js\";\nimport {SCHEDULED} from \"./transition/schedule.js\";\n\nvar root = [null];\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n i;\n\n if (schedules) {\n name = name == null ? null : name + \"\";\n for (i in schedules) {\n if ((schedule = schedules[i]).state > SCHEDULED && schedule.name === name) {\n return new Transition([[node]], root, name, +i);\n }\n }\n }\n\n return null;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(target, type, selection) {\n this.target = target;\n this.type = type;\n this.selection = selection;\n}\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {customEvent, event, touch, mouse, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n MODE_SPACE = {name: \"space\"},\n MODE_HANDLE = {name: \"handle\"},\n MODE_CENTER = {name: \"center\"};\n\nfunction number1(e) {\n return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n return [number1(e[0]), number1(e[1])];\n}\n\nfunction toucher(identifier) {\n return function(target) {\n return touch(target, event.touches, identifier);\n };\n}\n\nvar X = {\n name: \"x\",\n handles: [\"w\", \"e\"].map(type),\n input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n name: \"y\",\n handles: [\"n\", \"s\"].map(type),\n input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n name: \"xy\",\n handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n input: function(xy) { return xy == null ? null : number2(xy); },\n output: function(xy) { return xy; }\n};\n\nvar cursors = {\n overlay: \"crosshair\",\n selection: \"move\",\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n};\n\nvar flipX = {\n e: \"w\",\n w: \"e\",\n nw: \"ne\",\n ne: \"nw\",\n se: \"sw\",\n sw: \"se\"\n};\n\nvar flipY = {\n n: \"s\",\n s: \"n\",\n nw: \"sw\",\n ne: \"se\",\n se: \"ne\",\n sw: \"nw\"\n};\n\nvar signsX = {\n overlay: +1,\n selection: +1,\n n: null,\n e: +1,\n s: null,\n w: -1,\n nw: -1,\n ne: +1,\n se: +1,\n sw: -1\n};\n\nvar signsY = {\n overlay: +1,\n selection: +1,\n n: -1,\n e: null,\n s: +1,\n w: null,\n nw: -1,\n ne: -1,\n se: +1,\n sw: +1\n};\n\nfunction type(t) {\n return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var svg = this.ownerSVGElement || this;\n if (svg.hasAttribute(\"viewBox\")) {\n svg = svg.viewBox.baseVal;\n return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n }\n return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n while (!node.__brush) if (!(node = node.parentNode)) return;\n return node.__brush;\n}\n\nfunction empty(extent) {\n return extent[0][0] === extent[1][0]\n || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n var state = node.__brush;\n return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n return brush(X);\n}\n\nexport function brushY() {\n return brush(Y);\n}\n\nexport default function() {\n return brush(XY);\n}\n\nfunction brush(dim) {\n var extent = defaultExtent,\n filter = defaultFilter,\n touchable = defaultTouchable,\n keys = true,\n listeners = dispatch(\"start\", \"brush\", \"end\"),\n handleSize = 6,\n touchending;\n\n function brush(group) {\n var overlay = group\n .property(\"__brush\", initialize)\n .selectAll(\".overlay\")\n .data([type(\"overlay\")]);\n\n overlay.enter().append(\"rect\")\n .attr(\"class\", \"overlay\")\n .attr(\"pointer-events\", \"all\")\n .attr(\"cursor\", cursors.overlay)\n .merge(overlay)\n .each(function() {\n var extent = local(this).extent;\n select(this)\n .attr(\"x\", extent[0][0])\n .attr(\"y\", extent[0][1])\n .attr(\"width\", extent[1][0] - extent[0][0])\n .attr(\"height\", extent[1][1] - extent[0][1]);\n });\n\n group.selectAll(\".selection\")\n .data([type(\"selection\")])\n .enter().append(\"rect\")\n .attr(\"class\", \"selection\")\n .attr(\"cursor\", cursors.selection)\n .attr(\"fill\", \"#777\")\n .attr(\"fill-opacity\", 0.3)\n .attr(\"stroke\", \"#fff\")\n .attr(\"shape-rendering\", \"crispEdges\");\n\n var handle = group.selectAll(\".handle\")\n .data(dim.handles, function(d) { return d.type; });\n\n handle.exit().remove();\n\n handle.enter().append(\"rect\")\n .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n group\n .each(redraw)\n .attr(\"fill\", \"none\")\n .attr(\"pointer-events\", \"all\")\n .on(\"mousedown.brush\", started)\n .filter(touchable)\n .on(\"touchstart.brush\", started)\n .on(\"touchmove.brush\", touchmoved)\n .on(\"touchend.brush touchcancel.brush\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n brush.move = function(group, selection) {\n if (group.selection) {\n group\n .on(\"start.brush\", function() { emitter(this, arguments).beforestart().start(); })\n .on(\"interrupt.brush end.brush\", function() { emitter(this, arguments).end(); })\n .tween(\"brush\", function() {\n var that = this,\n state = that.__brush,\n emit = emitter(that, arguments),\n selection0 = state.selection,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n i = interpolate(selection0, selection1);\n\n function tween(t) {\n state.selection = t === 1 && selection1 === null ? null : i(t);\n redraw.call(that);\n emit.brush();\n }\n\n return selection0 !== null && selection1 !== null ? tween : tween(1);\n });\n } else {\n group\n .each(function() {\n var that = this,\n args = arguments,\n state = that.__brush,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n emit = emitter(that, args).beforestart();\n\n interrupt(that);\n state.selection = selection1 === null ? null : selection1;\n redraw.call(that);\n emit.start().brush().end();\n });\n }\n };\n\n brush.clear = function(group) {\n brush.move(group, null);\n };\n\n function redraw() {\n var group = select(this),\n selection = local(this).selection;\n\n if (selection) {\n group.selectAll(\".selection\")\n .style(\"display\", null)\n .attr(\"x\", selection[0][0])\n .attr(\"y\", selection[0][1])\n .attr(\"width\", selection[1][0] - selection[0][0])\n .attr(\"height\", selection[1][1] - selection[0][1]);\n\n group.selectAll(\".handle\")\n .style(\"display\", null)\n .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n }\n\n else {\n group.selectAll(\".selection,.handle\")\n .style(\"display\", \"none\")\n .attr(\"x\", null)\n .attr(\"y\", null)\n .attr(\"width\", null)\n .attr(\"height\", null);\n }\n }\n\n function emitter(that, args, clean) {\n var emit = that.__brush.emitter;\n return emit && (!clean || !emit.clean) ? emit : new Emitter(that, args, clean);\n }\n\n function Emitter(that, args, clean) {\n this.that = that;\n this.args = args;\n this.state = that.__brush;\n this.active = 0;\n this.clean = clean;\n }\n\n Emitter.prototype = {\n beforestart: function() {\n if (++this.active === 1) this.state.emitter = this, this.starting = true;\n return this;\n },\n start: function() {\n if (this.starting) this.starting = false, this.emit(\"start\");\n else this.emit(\"brush\");\n return this;\n },\n brush: function() {\n this.emit(\"brush\");\n return this;\n },\n end: function() {\n if (--this.active === 0) delete this.state.emitter, this.emit(\"end\");\n return this;\n },\n emit: function(type) {\n customEvent(new BrushEvent(brush, type, dim.output(this.state.selection)), listeners.apply, listeners, [type, this.that, this.args]);\n }\n };\n\n function started() {\n if (touchending && !event.touches) return;\n if (!filter.apply(this, arguments)) return;\n\n var that = this,\n type = event.target.__data__.type,\n mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n signX = dim === Y ? null : signsX[type],\n signY = dim === X ? null : signsY[type],\n state = local(that),\n extent = state.extent,\n selection = state.selection,\n W = extent[0][0], w0, w1,\n N = extent[0][1], n0, n1,\n E = extent[1][0], e0, e1,\n S = extent[1][1], s0, s1,\n dx = 0,\n dy = 0,\n moving,\n shifting = signX && signY && keys && event.shiftKey,\n lockX,\n lockY,\n pointer = event.touches ? toucher(event.changedTouches[0].identifier) : mouse,\n point0 = pointer(that),\n point = point0,\n emit = emitter(that, arguments, true).beforestart();\n\n if (type === \"overlay\") {\n if (selection) moving = true;\n state.selection = selection = [\n [w0 = dim === Y ? W : point0[0], n0 = dim === X ? N : point0[1]],\n [e0 = dim === Y ? E : w0, s0 = dim === X ? S : n0]\n ];\n } else {\n w0 = selection[0][0];\n n0 = selection[0][1];\n e0 = selection[1][0];\n s0 = selection[1][1];\n }\n\n w1 = w0;\n n1 = n0;\n e1 = e0;\n s1 = s0;\n\n var group = select(that)\n .attr(\"pointer-events\", \"none\");\n\n var overlay = group.selectAll(\".overlay\")\n .attr(\"cursor\", cursors[type]);\n\n if (event.touches) {\n emit.moved = moved;\n emit.ended = ended;\n } else {\n var view = select(event.view)\n .on(\"mousemove.brush\", moved, true)\n .on(\"mouseup.brush\", ended, true);\n if (keys) view\n .on(\"keydown.brush\", keydowned, true)\n .on(\"keyup.brush\", keyupped, true)\n\n dragDisable(event.view);\n }\n\n nopropagation();\n interrupt(that);\n redraw.call(that);\n emit.start();\n\n function moved() {\n var point1 = pointer(that);\n if (shifting && !lockX && !lockY) {\n if (Math.abs(point1[0] - point[0]) > Math.abs(point1[1] - point[1])) lockY = true;\n else lockX = true;\n }\n point = point1;\n moving = true;\n noevent();\n move();\n }\n\n function move() {\n var t;\n\n dx = point[0] - point0[0];\n dy = point[1] - point0[1];\n\n switch (mode) {\n case MODE_SPACE:\n case MODE_DRAG: {\n if (signX) dx = Math.max(W - w0, Math.min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n if (signY) dy = Math.max(N - n0, Math.min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n break;\n }\n case MODE_HANDLE: {\n if (signX < 0) dx = Math.max(W - w0, Math.min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n else if (signX > 0) dx = Math.max(W - e0, Math.min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n if (signY < 0) dy = Math.max(N - n0, Math.min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n else if (signY > 0) dy = Math.max(N - s0, Math.min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n break;\n }\n case MODE_CENTER: {\n if (signX) w1 = Math.max(W, Math.min(E, w0 - dx * signX)), e1 = Math.max(W, Math.min(E, e0 + dx * signX));\n if (signY) n1 = Math.max(N, Math.min(S, n0 - dy * signY)), s1 = Math.max(N, Math.min(S, s0 + dy * signY));\n break;\n }\n }\n\n if (e1 < w1) {\n signX *= -1;\n t = w0, w0 = e0, e0 = t;\n t = w1, w1 = e1, e1 = t;\n if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n }\n\n if (s1 < n1) {\n signY *= -1;\n t = n0, n0 = s0, s0 = t;\n t = n1, n1 = s1, s1 = t;\n if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n }\n\n if (state.selection) selection = state.selection; // May be set by brush.move!\n if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n if (selection[0][0] !== w1\n || selection[0][1] !== n1\n || selection[1][0] !== e1\n || selection[1][1] !== s1) {\n state.selection = [[w1, n1], [e1, s1]];\n redraw.call(that);\n emit.brush();\n }\n }\n\n function ended() {\n nopropagation();\n if (event.touches) {\n if (event.touches.length) return;\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n } else {\n dragEnable(event.view, moving);\n view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n }\n group.attr(\"pointer-events\", \"all\");\n overlay.attr(\"cursor\", cursors.overlay);\n if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n if (empty(selection)) state.selection = null, redraw.call(that);\n emit.end();\n }\n\n function keydowned() {\n switch (event.keyCode) {\n case 16: { // SHIFT\n shifting = signX && signY;\n break;\n }\n case 18: { // ALT\n if (mode === MODE_HANDLE) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n move();\n }\n break;\n }\n case 32: { // SPACE; takes priority over ALT\n if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n mode = MODE_SPACE;\n overlay.attr(\"cursor\", cursors.selection);\n move();\n }\n break;\n }\n default: return;\n }\n noevent();\n }\n\n function keyupped() {\n switch (event.keyCode) {\n case 16: { // SHIFT\n if (shifting) {\n lockX = lockY = shifting = false;\n move();\n }\n break;\n }\n case 18: { // ALT\n if (mode === MODE_CENTER) {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n move();\n }\n break;\n }\n case 32: { // SPACE\n if (mode === MODE_SPACE) {\n if (event.altKey) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n } else {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n }\n overlay.attr(\"cursor\", cursors[type]);\n move();\n }\n break;\n }\n default: return;\n }\n noevent();\n }\n }\n\n function touchmoved() {\n emitter(this, arguments).moved();\n }\n\n function touchended() {\n emitter(this, arguments).ended();\n }\n\n function initialize() {\n var state = this.__brush || {selection: null};\n state.extent = number2(extent.apply(this, arguments));\n state.dim = dim;\n return state;\n }\n\n brush.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n };\n\n brush.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n };\n\n brush.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), brush) : touchable;\n };\n\n brush.handleSize = function(_) {\n return arguments.length ? (handleSize = +_, brush) : handleSize;\n };\n\n brush.keyModifiers = function(_) {\n return arguments.length ? (keys = !!_, brush) : keys;\n };\n\n brush.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? brush : value;\n };\n\n return brush;\n}\n","export var cos = Math.cos;\nexport var sin = Math.sin;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = pi * 2;\nexport var max = Math.max;\n","import {range} from \"d3-array\";\nimport {max, tau} from \"./math\";\n\nfunction compareValue(compare) {\n return function(a, b) {\n return compare(\n a.source.value + a.target.value,\n b.source.value + b.target.value\n );\n };\n}\n\nexport default function() {\n var padAngle = 0,\n sortGroups = null,\n sortSubgroups = null,\n sortChords = null;\n\n function chord(matrix) {\n var n = matrix.length,\n groupSums = [],\n groupIndex = range(n),\n subgroupIndex = [],\n chords = [],\n groups = chords.groups = new Array(n),\n subgroups = new Array(n * n),\n k,\n x,\n x0,\n dx,\n i,\n j;\n\n // Compute the sum.\n k = 0, i = -1; while (++i < n) {\n x = 0, j = -1; while (++j < n) {\n x += matrix[i][j];\n }\n groupSums.push(x);\n subgroupIndex.push(range(n));\n k += x;\n }\n\n // Sort groups…\n if (sortGroups) groupIndex.sort(function(a, b) {\n return sortGroups(groupSums[a], groupSums[b]);\n });\n\n // Sort subgroups…\n if (sortSubgroups) subgroupIndex.forEach(function(d, i) {\n d.sort(function(a, b) {\n return sortSubgroups(matrix[i][a], matrix[i][b]);\n });\n });\n\n // Convert the sum to scaling factor for [0, 2pi].\n // TODO Allow start and end angle to be specified?\n // TODO Allow padding to be specified as percentage?\n k = max(0, tau - padAngle * n) / k;\n dx = k ? padAngle : tau / n;\n\n // Compute the start and end angle for each group and subgroup.\n // Note: Opera has a bug reordering object literal properties!\n x = 0, i = -1; while (++i < n) {\n x0 = x, j = -1; while (++j < n) {\n var di = groupIndex[i],\n dj = subgroupIndex[di][j],\n v = matrix[di][dj],\n a0 = x,\n a1 = x += v * k;\n subgroups[dj * n + di] = {\n index: di,\n subindex: dj,\n startAngle: a0,\n endAngle: a1,\n value: v\n };\n }\n groups[di] = {\n index: di,\n startAngle: x0,\n endAngle: x,\n value: groupSums[di]\n };\n x += dx;\n }\n\n // Generate chords for each (non-empty) subgroup-subgroup link.\n i = -1; while (++i < n) {\n j = i - 1; while (++j < n) {\n var source = subgroups[j * n + i],\n target = subgroups[i * n + j];\n if (source.value || target.value) {\n chords.push(source.value < target.value\n ? {source: target, target: source}\n : {source: source, target: target});\n }\n }\n }\n\n return sortChords ? chords.sort(sortChords) : chords;\n }\n\n chord.padAngle = function(_) {\n return arguments.length ? (padAngle = max(0, _), chord) : padAngle;\n };\n\n chord.sortGroups = function(_) {\n return arguments.length ? (sortGroups = _, chord) : sortGroups;\n };\n\n chord.sortSubgroups = function(_) {\n return arguments.length ? (sortSubgroups = _, chord) : sortSubgroups;\n };\n\n chord.sortChords = function(_) {\n return arguments.length ? (_ == null ? sortChords = null : (sortChords = compareValue(_))._ = _, chord) : sortChords && sortChords._;\n };\n\n return chord;\n}\n","export var slice = Array.prototype.slice;\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","var pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","import {slice} from \"./array\";\nimport constant from \"./constant\";\nimport {cos, halfPi, sin} from \"./math\";\nimport {path} from \"d3-path\";\n\nfunction defaultSource(d) {\n return d.source;\n}\n\nfunction defaultTarget(d) {\n return d.target;\n}\n\nfunction defaultRadius(d) {\n return d.radius;\n}\n\nfunction defaultStartAngle(d) {\n return d.startAngle;\n}\n\nfunction defaultEndAngle(d) {\n return d.endAngle;\n}\n\nexport default function() {\n var source = defaultSource,\n target = defaultTarget,\n radius = defaultRadius,\n startAngle = defaultStartAngle,\n endAngle = defaultEndAngle,\n context = null;\n\n function ribbon() {\n var buffer,\n argv = slice.call(arguments),\n s = source.apply(this, argv),\n t = target.apply(this, argv),\n sr = +radius.apply(this, (argv[0] = s, argv)),\n sa0 = startAngle.apply(this, argv) - halfPi,\n sa1 = endAngle.apply(this, argv) - halfPi,\n sx0 = sr * cos(sa0),\n sy0 = sr * sin(sa0),\n tr = +radius.apply(this, (argv[0] = t, argv)),\n ta0 = startAngle.apply(this, argv) - halfPi,\n ta1 = endAngle.apply(this, argv) - halfPi;\n\n if (!context) context = buffer = path();\n\n context.moveTo(sx0, sy0);\n context.arc(0, 0, sr, sa0, sa1);\n if (sa0 !== ta0 || sa1 !== ta1) { // TODO sr !== tr?\n context.quadraticCurveTo(0, 0, tr * cos(ta0), tr * sin(ta0));\n context.arc(0, 0, tr, ta0, ta1);\n }\n context.quadraticCurveTo(0, 0, sx0, sy0);\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n ribbon.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), ribbon) : radius;\n };\n\n ribbon.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : startAngle;\n };\n\n ribbon.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : endAngle;\n };\n\n ribbon.source = function(_) {\n return arguments.length ? (source = _, ribbon) : source;\n };\n\n ribbon.target = function(_) {\n return arguments.length ? (target = _, ribbon) : target;\n };\n\n ribbon.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), ribbon) : context;\n };\n\n return ribbon;\n}\n","export var prefix = \"$\";\n\nfunction Map() {}\n\nMap.prototype = map.prototype = {\n constructor: Map,\n has: function(key) {\n return (prefix + key) in this;\n },\n get: function(key) {\n return this[prefix + key];\n },\n set: function(key, value) {\n this[prefix + key] = value;\n return this;\n },\n remove: function(key) {\n var property = prefix + key;\n return property in this && delete this[property];\n },\n clear: function() {\n for (var property in this) if (property[0] === prefix) delete this[property];\n },\n keys: function() {\n var keys = [];\n for (var property in this) if (property[0] === prefix) keys.push(property.slice(1));\n return keys;\n },\n values: function() {\n var values = [];\n for (var property in this) if (property[0] === prefix) values.push(this[property]);\n return values;\n },\n entries: function() {\n var entries = [];\n for (var property in this) if (property[0] === prefix) entries.push({key: property.slice(1), value: this[property]});\n return entries;\n },\n size: function() {\n var size = 0;\n for (var property in this) if (property[0] === prefix) ++size;\n return size;\n },\n empty: function() {\n for (var property in this) if (property[0] === prefix) return false;\n return true;\n },\n each: function(f) {\n for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this);\n }\n};\n\nfunction map(object, f) {\n var map = new Map;\n\n // Copy constructor.\n if (object instanceof Map) object.each(function(value, key) { map.set(key, value); });\n\n // Index array by numeric index or specified key function.\n else if (Array.isArray(object)) {\n var i = -1,\n n = object.length,\n o;\n\n if (f == null) while (++i < n) map.set(i, object[i]);\n else while (++i < n) map.set(f(o = object[i], i, object), o);\n }\n\n // Convert object to map.\n else if (object) for (var key in object) map.set(key, object[key]);\n\n return map;\n}\n\nexport default map;\n","import map from \"./map\";\n\nexport default function() {\n var keys = [],\n sortKeys = [],\n sortValues,\n rollup,\n nest;\n\n function apply(array, depth, createResult, setResult) {\n if (depth >= keys.length) {\n if (sortValues != null) array.sort(sortValues);\n return rollup != null ? rollup(array) : array;\n }\n\n var i = -1,\n n = array.length,\n key = keys[depth++],\n keyValue,\n value,\n valuesByKey = map(),\n values,\n result = createResult();\n\n while (++i < n) {\n if (values = valuesByKey.get(keyValue = key(value = array[i]) + \"\")) {\n values.push(value);\n } else {\n valuesByKey.set(keyValue, [value]);\n }\n }\n\n valuesByKey.each(function(values, key) {\n setResult(result, key, apply(values, depth, createResult, setResult));\n });\n\n return result;\n }\n\n function entries(map, depth) {\n if (++depth > keys.length) return map;\n var array, sortKey = sortKeys[depth - 1];\n if (rollup != null && depth >= keys.length) array = map.entries();\n else array = [], map.each(function(v, k) { array.push({key: k, values: entries(v, depth)}); });\n return sortKey != null ? array.sort(function(a, b) { return sortKey(a.key, b.key); }) : array;\n }\n\n return nest = {\n object: function(array) { return apply(array, 0, createObject, setObject); },\n map: function(array) { return apply(array, 0, createMap, setMap); },\n entries: function(array) { return entries(apply(array, 0, createMap, setMap), 0); },\n key: function(d) { keys.push(d); return nest; },\n sortKeys: function(order) { sortKeys[keys.length - 1] = order; return nest; },\n sortValues: function(order) { sortValues = order; return nest; },\n rollup: function(f) { rollup = f; return nest; }\n };\n}\n\nfunction createObject() {\n return {};\n}\n\nfunction setObject(object, key, value) {\n object[key] = value;\n}\n\nfunction createMap() {\n return map();\n}\n\nfunction setMap(map, key, value) {\n map.set(key, value);\n}\n","import {default as map, prefix} from \"./map\";\n\nfunction Set() {}\n\nvar proto = map.prototype;\n\nSet.prototype = set.prototype = {\n constructor: Set,\n has: proto.has,\n add: function(value) {\n value += \"\";\n this[prefix + value] = value;\n return this;\n },\n remove: proto.remove,\n clear: proto.clear,\n values: proto.keys,\n size: proto.size,\n empty: proto.empty,\n each: proto.each\n};\n\nfunction set(object, f) {\n var set = new Set;\n\n // Copy constructor.\n if (object instanceof Set) object.each(function(value) { set.add(value); });\n\n // Otherwise, assume it’s an array.\n else if (object) {\n var i = -1, n = object.length;\n if (f == null) while (++i < n) set.add(object[i]);\n else while (++i < n) set.add(f(object[i], i, object));\n }\n\n return set;\n}\n\nexport default set;\n","export default function(map) {\n var keys = [];\n for (var key in map) keys.push(key);\n return keys;\n}\n","export default function(map) {\n var values = [];\n for (var key in map) values.push(map[key]);\n return values;\n}\n","export default function(map) {\n var entries = [];\n for (var key in map) entries.push({key: key, value: map[key]});\n return entries;\n}\n","export var deg2rad = Math.PI / 180;\nexport var rad2deg = 180 / Math.PI;\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb} from \"./color.js\";\nimport {deg2rad, rad2deg} from \"./math.js\";\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nvar K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) return hcl2lab(o);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n if (r === g && g === b) x = z = y; else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n brighter: function(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker: function(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb: function() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new Rgb(\n lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n this.opacity\n );\n }\n}));\n\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n var h = Math.atan2(o.b, o.a) * rad2deg;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\n\nfunction hcl2lab(o) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * deg2rad;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\n\ndefine(Hcl, hcl, extend(Color, {\n brighter: function(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker: function(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb: function() {\n return hcl2lab(this).rgb();\n }\n}));\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color.js\";\nimport {deg2rad, rad2deg} from \"./math.js\";\n\nvar A = -0.14861,\n B = +1.78277,\n C = -0.29227,\n D = -0.90649,\n E = +1.97294,\n ED = E * D,\n EB = E * B,\n BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n bl = b - l,\n k = (E * (g - l) - C * bl) / D,\n s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n h = s ? Math.atan2(k, bl) * rad2deg - 120 : NaN;\n return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nexport default function cubehelix(h, s, l, opacity) {\n return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nexport function Cubehelix(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Cubehelix, cubehelix, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * deg2rad,\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new Rgb(\n 255 * (l + a * (A * cosh + B * sinh)),\n 255 * (l + a * (C * cosh + D * sinh)),\n 255 * (l + a * (E * cosh)),\n this.opacity\n );\n }\n}));\n","var array = Array.prototype;\n\nexport var slice = array.slice;\n","export default function(a, b) {\n return a - b;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(ring, hole) {\n var i = -1, n = hole.length, c;\n while (++i < n) if (c = ringContains(ring, hole[i])) return c;\n return 0;\n}\n\nfunction ringContains(ring, point) {\n var x = point[0], y = point[1], contains = -1;\n for (var i = 0, n = ring.length, j = n - 1; i < n; j = i++) {\n var pi = ring[i], xi = pi[0], yi = pi[1], pj = ring[j], xj = pj[0], yj = pj[1];\n if (segmentContains(pi, pj, point)) return 0;\n if (((yi > y) !== (yj > y)) && ((x < (xj - xi) * (y - yi) / (yj - yi) + xi))) contains = -contains;\n }\n return contains;\n}\n\nfunction segmentContains(a, b, c) {\n var i; return collinear(a, b, c) && within(a[i = +(a[0] === b[0])], c[i], b[i]);\n}\n\nfunction collinear(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) === (c[0] - a[0]) * (b[1] - a[1]);\n}\n\nfunction within(p, q, r) {\n return p <= q && q <= r || r <= q && q <= p;\n}\n","export default function() {}\n","import {extent, thresholdSturges, tickStep, range} from \"d3-array\";\nimport {slice} from \"./array\";\nimport ascending from \"./ascending\";\nimport area from \"./area\";\nimport constant from \"./constant\";\nimport contains from \"./contains\";\nimport noop from \"./noop\";\n\nvar cases = [\n [],\n [[[1.0, 1.5], [0.5, 1.0]]],\n [[[1.5, 1.0], [1.0, 1.5]]],\n [[[1.5, 1.0], [0.5, 1.0]]],\n [[[1.0, 0.5], [1.5, 1.0]]],\n [[[1.0, 1.5], [0.5, 1.0]], [[1.0, 0.5], [1.5, 1.0]]],\n [[[1.0, 0.5], [1.0, 1.5]]],\n [[[1.0, 0.5], [0.5, 1.0]]],\n [[[0.5, 1.0], [1.0, 0.5]]],\n [[[1.0, 1.5], [1.0, 0.5]]],\n [[[0.5, 1.0], [1.0, 0.5]], [[1.5, 1.0], [1.0, 1.5]]],\n [[[1.5, 1.0], [1.0, 0.5]]],\n [[[0.5, 1.0], [1.5, 1.0]]],\n [[[1.0, 1.5], [1.5, 1.0]]],\n [[[0.5, 1.0], [1.0, 1.5]]],\n []\n];\n\nexport default function() {\n var dx = 1,\n dy = 1,\n threshold = thresholdSturges,\n smooth = smoothLinear;\n\n function contours(values) {\n var tz = threshold(values);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n var domain = extent(values), start = domain[0], stop = domain[1];\n tz = tickStep(start, stop, tz);\n tz = range(Math.floor(start / tz) * tz, Math.floor(stop / tz) * tz, tz);\n } else {\n tz = tz.slice().sort(ascending);\n }\n\n return tz.map(function(value) {\n return contour(values, value);\n });\n }\n\n // Accumulate, smooth contour rings, assign holes to exterior rings.\n // Based on https://github.com/mbostock/shapefile/blob/v0.6.2/shp/polygon.js\n function contour(values, value) {\n var polygons = [],\n holes = [];\n\n isorings(values, value, function(ring) {\n smooth(ring, values, value);\n if (area(ring) > 0) polygons.push([ring]);\n else holes.push(ring);\n });\n\n holes.forEach(function(hole) {\n for (var i = 0, n = polygons.length, polygon; i < n; ++i) {\n if (contains((polygon = polygons[i])[0], hole) !== -1) {\n polygon.push(hole);\n return;\n }\n }\n });\n\n return {\n type: \"MultiPolygon\",\n value: value,\n coordinates: polygons\n };\n }\n\n // Marching squares with isolines stitched into rings.\n // Based on https://github.com/topojson/topojson-client/blob/v3.0.0/src/stitch.js\n function isorings(values, value, callback) {\n var fragmentByStart = new Array,\n fragmentByEnd = new Array,\n x, y, t0, t1, t2, t3;\n\n // Special case for the first row (y = -1, t2 = t3 = 0).\n x = y = -1;\n t1 = values[0] >= value;\n cases[t1 << 1].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[x + 1] >= value;\n cases[t0 | t1 << 1].forEach(stitch);\n }\n cases[t1 << 0].forEach(stitch);\n\n // General case for the intermediate rows.\n while (++y < dy - 1) {\n x = -1;\n t1 = values[y * dx + dx] >= value;\n t2 = values[y * dx] >= value;\n cases[t1 << 1 | t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[y * dx + dx + x + 1] >= value;\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t0 | t1 << 1 | t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t1 | t2 << 3].forEach(stitch);\n }\n\n // Special case for the last row (y = dy - 1, t0 = t1 = 0).\n x = -1;\n t2 = values[y * dx] >= value;\n cases[t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t2 << 3].forEach(stitch);\n\n function stitch(line) {\n var start = [line[0][0] + x, line[0][1] + y],\n end = [line[1][0] + x, line[1][1] + y],\n startIndex = index(start),\n endIndex = index(end),\n f, g;\n if (f = fragmentByEnd[startIndex]) {\n if (g = fragmentByStart[endIndex]) {\n delete fragmentByEnd[f.end];\n delete fragmentByStart[g.start];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[f.start] = fragmentByEnd[g.end] = {start: f.start, end: g.end, ring: f.ring.concat(g.ring)};\n }\n } else {\n delete fragmentByEnd[f.end];\n f.ring.push(end);\n fragmentByEnd[f.end = endIndex] = f;\n }\n } else if (f = fragmentByStart[endIndex]) {\n if (g = fragmentByEnd[startIndex]) {\n delete fragmentByStart[f.start];\n delete fragmentByEnd[g.end];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[g.start] = fragmentByEnd[f.end] = {start: g.start, end: f.end, ring: g.ring.concat(f.ring)};\n }\n } else {\n delete fragmentByStart[f.start];\n f.ring.unshift(start);\n fragmentByStart[f.start = startIndex] = f;\n }\n } else {\n fragmentByStart[startIndex] = fragmentByEnd[endIndex] = {start: startIndex, end: endIndex, ring: [start, end]};\n }\n }\n }\n\n function index(point) {\n return point[0] * 2 + point[1] * (dx + 1) * 4;\n }\n\n function smoothLinear(ring, values, value) {\n ring.forEach(function(point) {\n var x = point[0],\n y = point[1],\n xt = x | 0,\n yt = y | 0,\n v0,\n v1 = values[yt * dx + xt];\n if (x > 0 && x < dx && xt === x) {\n v0 = values[yt * dx + xt - 1];\n point[0] = x + (value - v0) / (v1 - v0) - 0.5;\n }\n if (y > 0 && y < dy && yt === y) {\n v0 = values[(yt - 1) * dx + xt];\n point[1] = y + (value - v0) / (v1 - v0) - 0.5;\n }\n });\n }\n\n contours.contour = contour;\n\n contours.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]);\n if (!(_0 > 0) || !(_1 > 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, contours;\n };\n\n contours.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), contours) : threshold;\n };\n\n contours.smooth = function(_) {\n return arguments.length ? (smooth = _ ? smoothLinear : noop, contours) : smooth === smoothLinear;\n };\n\n return contours;\n}\n","export default function(ring) {\n var i = 0, n = ring.length, area = ring[n - 1][1] * ring[0][0] - ring[n - 1][0] * ring[0][1];\n while (++i < n) area += ring[i - 1][1] * ring[i][0] - ring[i - 1][0] * ring[i][1];\n return area;\n}\n","// TODO Optimize edge cases.\n// TODO Optimize index calculation.\n// TODO Optimize arguments.\nexport function blurX(source, target, r) {\n var n = source.width,\n m = source.height,\n w = (r << 1) + 1;\n for (var j = 0; j < m; ++j) {\n for (var i = 0, sr = 0; i < n + r; ++i) {\n if (i < n) {\n sr += source.data[i + j * n];\n }\n if (i >= r) {\n if (i >= w) {\n sr -= source.data[i - w + j * n];\n }\n target.data[i - r + j * n] = sr / Math.min(i + 1, n - 1 + w - i, w);\n }\n }\n }\n}\n\n// TODO Optimize edge cases.\n// TODO Optimize index calculation.\n// TODO Optimize arguments.\nexport function blurY(source, target, r) {\n var n = source.width,\n m = source.height,\n w = (r << 1) + 1;\n for (var i = 0; i < n; ++i) {\n for (var j = 0, sr = 0; j < m + r; ++j) {\n if (j < m) {\n sr += source.data[i + j * n];\n }\n if (j >= r) {\n if (j >= w) {\n sr -= source.data[i + (j - w) * n];\n }\n target.data[i + (j - r) * n] = sr / Math.min(j + 1, m - 1 + w - j, w);\n }\n }\n }\n}\n","import {max, range, tickStep} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {blurX, blurY} from \"./blur\";\nimport constant from \"./constant\";\nimport contours from \"./contours\";\n\nfunction defaultX(d) {\n return d[0];\n}\n\nfunction defaultY(d) {\n return d[1];\n}\n\nfunction defaultWeight() {\n return 1;\n}\n\nexport default function() {\n var x = defaultX,\n y = defaultY,\n weight = defaultWeight,\n dx = 960,\n dy = 500,\n r = 20, // blur radius\n k = 2, // log2(grid cell size)\n o = r * 3, // grid offset, to pad for blur\n n = (dx + o * 2) >> k, // grid width\n m = (dy + o * 2) >> k, // grid height\n threshold = constant(20);\n\n function density(data) {\n var values0 = new Float32Array(n * m),\n values1 = new Float32Array(n * m);\n\n data.forEach(function(d, i, data) {\n var xi = (+x(d, i, data) + o) >> k,\n yi = (+y(d, i, data) + o) >> k,\n wi = +weight(d, i, data);\n if (xi >= 0 && xi < n && yi >= 0 && yi < m) {\n values0[xi + yi * n] += wi;\n }\n });\n\n // TODO Optimize.\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n\n var tz = threshold(values0);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n var stop = max(values0);\n tz = tickStep(0, stop, tz);\n tz = range(0, Math.floor(stop / tz) * tz, tz);\n tz.shift();\n }\n\n return contours()\n .thresholds(tz)\n .size([n, m])\n (values0)\n .map(transform);\n }\n\n function transform(geometry) {\n geometry.value *= Math.pow(2, -2 * k); // Density in points per square pixel.\n geometry.coordinates.forEach(transformPolygon);\n return geometry;\n }\n\n function transformPolygon(coordinates) {\n coordinates.forEach(transformRing);\n }\n\n function transformRing(coordinates) {\n coordinates.forEach(transformPoint);\n }\n\n // TODO Optimize.\n function transformPoint(coordinates) {\n coordinates[0] = coordinates[0] * Math.pow(2, k) - o;\n coordinates[1] = coordinates[1] * Math.pow(2, k) - o;\n }\n\n function resize() {\n o = r * 3;\n n = (dx + o * 2) >> k;\n m = (dy + o * 2) >> k;\n return density;\n }\n\n density.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), density) : x;\n };\n\n density.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), density) : y;\n };\n\n density.weight = function(_) {\n return arguments.length ? (weight = typeof _ === \"function\" ? _ : constant(+_), density) : weight;\n };\n\n density.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]);\n if (!(_0 >= 0) && !(_0 >= 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, resize();\n };\n\n density.cellSize = function(_) {\n if (!arguments.length) return 1 << k;\n if (!((_ = +_) >= 1)) throw new Error(\"invalid cell size\");\n return k = Math.floor(Math.log(_) / Math.LN2), resize();\n };\n\n density.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), density) : threshold;\n };\n\n density.bandwidth = function(_) {\n if (!arguments.length) return Math.sqrt(r * (r + 1));\n if (!((_ = +_) >= 0)) throw new Error(\"invalid bandwidth\");\n return r = Math.round((Math.sqrt(4 * _ * _ + 1) - 1) / 2), resize();\n };\n\n return density;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function DragEvent(target, type, subject, id, active, x, y, dx, dy, dispatch) {\n this.target = target;\n this.type = type;\n this.subject = subject;\n this.identifier = id;\n this.active = active;\n this.x = x;\n this.y = y;\n this.dx = dx;\n this.dy = dy;\n this._ = dispatch;\n}\n\nDragEvent.prototype.on = function() {\n var value = this._.on.apply(this._, arguments);\n return value === this._ ? this : value;\n};\n","import {dispatch} from \"d3-dispatch\";\nimport {event, customEvent, select, mouse, touch} from \"d3-selection\";\nimport nodrag, {yesdrag} from \"./nodrag.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\nimport constant from \"./constant.js\";\nimport DragEvent from \"./event.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultContainer() {\n return this.parentNode;\n}\n\nfunction defaultSubject(d) {\n return d == null ? {x: event.x, y: event.y} : d;\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nexport default function() {\n var filter = defaultFilter,\n container = defaultContainer,\n subject = defaultSubject,\n touchable = defaultTouchable,\n gestures = {},\n listeners = dispatch(\"start\", \"drag\", \"end\"),\n active = 0,\n mousedownx,\n mousedowny,\n mousemoving,\n touchending,\n clickDistance2 = 0;\n\n function drag(selection) {\n selection\n .on(\"mousedown.drag\", mousedowned)\n .filter(touchable)\n .on(\"touchstart.drag\", touchstarted)\n .on(\"touchmove.drag\", touchmoved)\n .on(\"touchend.drag touchcancel.drag\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n function mousedowned() {\n if (touchending || !filter.apply(this, arguments)) return;\n var gesture = beforestart(\"mouse\", container.apply(this, arguments), mouse, this, arguments);\n if (!gesture) return;\n select(event.view).on(\"mousemove.drag\", mousemoved, true).on(\"mouseup.drag\", mouseupped, true);\n nodrag(event.view);\n nopropagation();\n mousemoving = false;\n mousedownx = event.clientX;\n mousedowny = event.clientY;\n gesture(\"start\");\n }\n\n function mousemoved() {\n noevent();\n if (!mousemoving) {\n var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny;\n mousemoving = dx * dx + dy * dy > clickDistance2;\n }\n gestures.mouse(\"drag\");\n }\n\n function mouseupped() {\n select(event.view).on(\"mousemove.drag mouseup.drag\", null);\n yesdrag(event.view, mousemoving);\n noevent();\n gestures.mouse(\"end\");\n }\n\n function touchstarted() {\n if (!filter.apply(this, arguments)) return;\n var touches = event.changedTouches,\n c = container.apply(this, arguments),\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = beforestart(touches[i].identifier, c, touch, this, arguments)) {\n nopropagation();\n gesture(\"start\");\n }\n }\n }\n\n function touchmoved() {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n noevent();\n gesture(\"drag\");\n }\n }\n }\n\n function touchended() {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n nopropagation();\n gesture(\"end\");\n }\n }\n }\n\n function beforestart(id, container, point, that, args) {\n var p = point(container, id), s, dx, dy,\n sublisteners = listeners.copy();\n\n if (!customEvent(new DragEvent(drag, \"beforestart\", s, id, active, p[0], p[1], 0, 0, sublisteners), function() {\n if ((event.subject = s = subject.apply(that, args)) == null) return false;\n dx = s.x - p[0] || 0;\n dy = s.y - p[1] || 0;\n return true;\n })) return;\n\n return function gesture(type) {\n var p0 = p, n;\n switch (type) {\n case \"start\": gestures[id] = gesture, n = active++; break;\n case \"end\": delete gestures[id], --active; // nobreak\n case \"drag\": p = point(container, id), n = active; break;\n }\n customEvent(new DragEvent(drag, type, s, id, n, p[0] + dx, p[1] + dy, p[0] - p0[0], p[1] - p0[1], sublisteners), sublisteners.apply, sublisteners, [type, that, args]);\n };\n }\n\n drag.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), drag) : filter;\n };\n\n drag.container = function(_) {\n return arguments.length ? (container = typeof _ === \"function\" ? _ : constant(_), drag) : container;\n };\n\n drag.subject = function(_) {\n return arguments.length ? (subject = typeof _ === \"function\" ? _ : constant(_), drag) : subject;\n };\n\n drag.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), drag) : touchable;\n };\n\n drag.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? drag : value;\n };\n\n drag.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2);\n };\n\n return drag;\n}\n","var EOL = {},\n EOF = {},\n QUOTE = 34,\n NEWLINE = 10,\n RETURN = 13;\n\nfunction objectConverter(columns) {\n return new Function(\"d\", \"return {\" + columns.map(function(name, i) {\n return JSON.stringify(name) + \": d[\" + i + \"] || \\\"\\\"\";\n }).join(\",\") + \"}\");\n}\n\nfunction customConverter(columns, f) {\n var object = objectConverter(columns);\n return function(row, i) {\n return f(object(row), i, columns);\n };\n}\n\n// Compute unique columns in order of discovery.\nfunction inferColumns(rows) {\n var columnSet = Object.create(null),\n columns = [];\n\n rows.forEach(function(row) {\n for (var column in row) {\n if (!(column in columnSet)) {\n columns.push(columnSet[column] = column);\n }\n }\n });\n\n return columns;\n}\n\nfunction pad(value, width) {\n var s = value + \"\", length = s.length;\n return length < width ? new Array(width - length + 1).join(0) + s : s;\n}\n\nfunction formatYear(year) {\n return year < 0 ? \"-\" + pad(-year, 6)\n : year > 9999 ? \"+\" + pad(year, 6)\n : pad(year, 4);\n}\n\nfunction formatDate(date) {\n var hours = date.getUTCHours(),\n minutes = date.getUTCMinutes(),\n seconds = date.getUTCSeconds(),\n milliseconds = date.getUTCMilliseconds();\n return isNaN(date) ? \"Invalid Date\"\n : formatYear(date.getUTCFullYear(), 4) + \"-\" + pad(date.getUTCMonth() + 1, 2) + \"-\" + pad(date.getUTCDate(), 2)\n + (milliseconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \".\" + pad(milliseconds, 3) + \"Z\"\n : seconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \"Z\"\n : minutes || hours ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \"Z\"\n : \"\");\n}\n\nexport default function(delimiter) {\n var reFormat = new RegExp(\"[\\\"\" + delimiter + \"\\n\\r]\"),\n DELIMITER = delimiter.charCodeAt(0);\n\n function parse(text, f) {\n var convert, columns, rows = parseRows(text, function(row, i) {\n if (convert) return convert(row, i - 1);\n columns = row, convert = f ? customConverter(row, f) : objectConverter(row);\n });\n rows.columns = columns || [];\n return rows;\n }\n\n function parseRows(text, f) {\n var rows = [], // output rows\n N = text.length,\n I = 0, // current character index\n n = 0, // current line number\n t, // current token\n eof = N <= 0, // current token followed by EOF?\n eol = false; // current token followed by EOL?\n\n // Strip the trailing newline.\n if (text.charCodeAt(N - 1) === NEWLINE) --N;\n if (text.charCodeAt(N - 1) === RETURN) --N;\n\n function token() {\n if (eof) return EOF;\n if (eol) return eol = false, EOL;\n\n // Unescape quotes.\n var i, j = I, c;\n if (text.charCodeAt(j) === QUOTE) {\n while (I++ < N && text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE);\n if ((i = I) >= N) eof = true;\n else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n return text.slice(j + 1, i - 1).replace(/\"\"/g, \"\\\"\");\n }\n\n // Find next delimiter or newline.\n while (I < N) {\n if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n else if (c !== DELIMITER) continue;\n return text.slice(j, i);\n }\n\n // Return last token before EOF.\n return eof = true, text.slice(j, N);\n }\n\n while ((t = token()) !== EOF) {\n var row = [];\n while (t !== EOL && t !== EOF) row.push(t), t = token();\n if (f && (row = f(row, n++)) == null) continue;\n rows.push(row);\n }\n\n return rows;\n }\n\n function preformatBody(rows, columns) {\n return rows.map(function(row) {\n return columns.map(function(column) {\n return formatValue(row[column]);\n }).join(delimiter);\n });\n }\n\n function format(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return [columns.map(formatValue).join(delimiter)].concat(preformatBody(rows, columns)).join(\"\\n\");\n }\n\n function formatBody(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return preformatBody(rows, columns).join(\"\\n\");\n }\n\n function formatRows(rows) {\n return rows.map(formatRow).join(\"\\n\");\n }\n\n function formatRow(row) {\n return row.map(formatValue).join(delimiter);\n }\n\n function formatValue(value) {\n return value == null ? \"\"\n : value instanceof Date ? formatDate(value)\n : reFormat.test(value += \"\") ? \"\\\"\" + value.replace(/\"/g, \"\\\"\\\"\") + \"\\\"\"\n : value;\n }\n\n return {\n parse: parse,\n parseRows: parseRows,\n format: format,\n formatBody: formatBody,\n formatRows: formatRows,\n formatRow: formatRow,\n formatValue: formatValue\n };\n}\n","import dsv from \"./dsv.js\";\n\nvar csv = dsv(\",\");\n\nexport var csvParse = csv.parse;\nexport var csvParseRows = csv.parseRows;\nexport var csvFormat = csv.format;\nexport var csvFormatBody = csv.formatBody;\nexport var csvFormatRows = csv.formatRows;\nexport var csvFormatRow = csv.formatRow;\nexport var csvFormatValue = csv.formatValue;\n","import dsv from \"./dsv.js\";\n\nvar tsv = dsv(\"\\t\");\n\nexport var tsvParse = tsv.parse;\nexport var tsvParseRows = tsv.parseRows;\nexport var tsvFormat = tsv.format;\nexport var tsvFormatBody = tsv.formatBody;\nexport var tsvFormatRows = tsv.formatRows;\nexport var tsvFormatRow = tsv.formatRow;\nexport var tsvFormatValue = tsv.formatValue;\n","export default function autoType(object) {\n for (var key in object) {\n var value = object[key].trim(), number, m;\n if (!value) value = null;\n else if (value === \"true\") value = true;\n else if (value === \"false\") value = false;\n else if (value === \"NaN\") value = NaN;\n else if (!isNaN(number = +value)) value = number;\n else if (m = value.match(/^([-+]\\d{2})?\\d{4}(-\\d{2}(-\\d{2})?)?(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{3})?)?(Z|[-+]\\d{2}:\\d{2})?)?$/)) {\n if (fixtz && !!m[4] && !m[7]) value = value.replace(/-/g, \"/\").replace(/T/, \" \");\n value = new Date(value);\n }\n else continue;\n object[key] = value;\n }\n return object;\n}\n\n// https://github.com/d3/d3-dsv/issues/45\nvar fixtz = new Date(\"2019-01-01T00:00\").getHours() || new Date(\"2019-07-01T00:00\").getHours();","export function linear(t) {\n return +t;\n}\n","export function quadIn(t) {\n return t * t;\n}\n\nexport function quadOut(t) {\n return t * (2 - t);\n}\n\nexport function quadInOut(t) {\n return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2;\n}\n","var exponent = 3;\n\nexport var polyIn = (function custom(e) {\n e = +e;\n\n function polyIn(t) {\n return Math.pow(t, e);\n }\n\n polyIn.exponent = custom;\n\n return polyIn;\n})(exponent);\n\nexport var polyOut = (function custom(e) {\n e = +e;\n\n function polyOut(t) {\n return 1 - Math.pow(1 - t, e);\n }\n\n polyOut.exponent = custom;\n\n return polyOut;\n})(exponent);\n\nexport var polyInOut = (function custom(e) {\n e = +e;\n\n function polyInOut(t) {\n return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;\n }\n\n polyInOut.exponent = custom;\n\n return polyInOut;\n})(exponent);\n","var pi = Math.PI,\n halfPi = pi / 2;\n\nexport function sinIn(t) {\n return (+t === 1) ? 1 : 1 - Math.cos(t * halfPi);\n}\n\nexport function sinOut(t) {\n return Math.sin(t * halfPi);\n}\n\nexport function sinInOut(t) {\n return (1 - Math.cos(pi * t)) / 2;\n}\n","// tpmt is two power minus ten times t scaled to [0,1]\nexport function tpmt(x) {\n return (Math.pow(2, -10 * x) - 0.0009765625) * 1.0009775171065494;\n}\n","import {tpmt} from \"./math.js\";\n\nexport function expIn(t) {\n return tpmt(1 - +t);\n}\n\nexport function expOut(t) {\n return 1 - tpmt(t);\n}\n\nexport function expInOut(t) {\n return ((t *= 2) <= 1 ? tpmt(1 - t) : 2 - tpmt(t - 1)) / 2;\n}\n","export function circleIn(t) {\n return 1 - Math.sqrt(1 - t * t);\n}\n\nexport function circleOut(t) {\n return Math.sqrt(1 - --t * t);\n}\n\nexport function circleInOut(t) {\n return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;\n}\n","var b1 = 4 / 11,\n b2 = 6 / 11,\n b3 = 8 / 11,\n b4 = 3 / 4,\n b5 = 9 / 11,\n b6 = 10 / 11,\n b7 = 15 / 16,\n b8 = 21 / 22,\n b9 = 63 / 64,\n b0 = 1 / b1 / b1;\n\nexport function bounceIn(t) {\n return 1 - bounceOut(1 - t);\n}\n\nexport function bounceOut(t) {\n return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9;\n}\n\nexport function bounceInOut(t) {\n return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;\n}\n","var overshoot = 1.70158;\n\nexport var backIn = (function custom(s) {\n s = +s;\n\n function backIn(t) {\n return (t = +t) * t * (s * (t - 1) + t);\n }\n\n backIn.overshoot = custom;\n\n return backIn;\n})(overshoot);\n\nexport var backOut = (function custom(s) {\n s = +s;\n\n function backOut(t) {\n return --t * t * ((t + 1) * s + t) + 1;\n }\n\n backOut.overshoot = custom;\n\n return backOut;\n})(overshoot);\n\nexport var backInOut = (function custom(s) {\n s = +s;\n\n function backInOut(t) {\n return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2;\n }\n\n backInOut.overshoot = custom;\n\n return backInOut;\n})(overshoot);\n","import {tpmt} from \"./math.js\";\n\nvar tau = 2 * Math.PI,\n amplitude = 1,\n period = 0.3;\n\nexport var elasticIn = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticIn(t) {\n return a * tpmt(-(--t)) * Math.sin((s - t) / p);\n }\n\n elasticIn.amplitude = function(a) { return custom(a, p * tau); };\n elasticIn.period = function(p) { return custom(a, p); };\n\n return elasticIn;\n})(amplitude, period);\n\nexport var elasticOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticOut(t) {\n return 1 - a * tpmt(t = +t) * Math.sin((t + s) / p);\n }\n\n elasticOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticOut.period = function(p) { return custom(a, p); };\n\n return elasticOut;\n})(amplitude, period);\n\nexport var elasticInOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticInOut(t) {\n return ((t = t * 2 - 1) < 0\n ? a * tpmt(-t) * Math.sin((s - t) / p)\n : 2 - a * tpmt(t) * Math.sin((s + t) / p)) / 2;\n }\n\n elasticInOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticInOut.period = function(p) { return custom(a, p); };\n\n return elasticInOut;\n})(amplitude, period);\n","function responseBlob(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.blob();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseBlob);\n}\n","function responseArrayBuffer(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.arrayBuffer();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseArrayBuffer);\n}\n","function responseText(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.text();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseText);\n}\n","import {csvParse, dsvFormat, tsvParse} from \"d3-dsv\";\nimport text from \"./text.js\";\n\nfunction dsvParse(parse) {\n return function(input, init, row) {\n if (arguments.length === 2 && typeof init === \"function\") row = init, init = undefined;\n return text(input, init).then(function(response) {\n return parse(response, row);\n });\n };\n}\n\nexport default function dsv(delimiter, input, init, row) {\n if (arguments.length === 3 && typeof init === \"function\") row = init, init = undefined;\n var format = dsvFormat(delimiter);\n return text(input, init).then(function(response) {\n return format.parse(response, row);\n });\n}\n\nexport var csv = dsvParse(csvParse);\nexport var tsv = dsvParse(tsvParse);\n","export default function(input, init) {\n return new Promise(function(resolve, reject) {\n var image = new Image;\n for (var key in init) image[key] = init[key];\n image.onerror = reject;\n image.onload = function() { resolve(image); };\n image.src = input;\n });\n}\n","function responseJson(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n if (response.status === 204 || response.status === 205) return;\n return response.json();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseJson);\n}\n","import text from \"./text.js\";\n\nfunction parser(type) {\n return function(input, init) {\n return text(input, init).then(function(text) {\n return (new DOMParser).parseFromString(text, type);\n });\n };\n}\n\nexport default parser(\"application/xml\");\n\nexport var html = parser(\"text/html\");\n\nexport var svg = parser(\"image/svg+xml\");\n","export default function(x, y) {\n var nodes;\n\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force() {\n var i,\n n = nodes.length,\n node,\n sx = 0,\n sy = 0;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], sx += node.x, sy += node.y;\n }\n\n for (sx = sx / n - x, sy = sy / n - y, i = 0; i < n; ++i) {\n node = nodes[i], node.x -= sx, node.y -= sy;\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n return force;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function() {\n return (Math.random() - 0.5) * 1e-6;\n}\n","export default function(d) {\n var x = +this._x.call(null, d),\n y = +this._y.call(null, d);\n return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n y0 = tree._y0,\n x1 = tree._x1,\n y1 = tree._y1,\n xm,\n ym,\n xp,\n yp,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n var d, i, n = data.length,\n x,\n y,\n xz = new Array(n),\n yz = new Array(n),\n x0 = Infinity,\n y0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1 || y0 > y1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0).cover(x1, y1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], data[i]);\n }\n\n return this;\n}\n","export default function(node, x0, y0, x1, y1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.x1 = x1;\n this.y1 = y1;\n}\n","export function defaultX(d) {\n return d[0];\n}\n\nexport default function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n","export function defaultY(d) {\n return d[1];\n}\n\nexport default function(_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add.js\";\nimport tree_cover from \"./cover.js\";\nimport tree_data from \"./data.js\";\nimport tree_extent from \"./extent.js\";\nimport tree_find from \"./find.js\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove.js\";\nimport tree_root from \"./root.js\";\nimport tree_size from \"./size.js\";\nimport tree_visit from \"./visit.js\";\nimport tree_visitAfter from \"./visitAfter.js\";\nimport tree_x, {defaultX} from \"./x.js\";\nimport tree_y, {defaultY} from \"./y.js\";\n\nexport default function quadtree(nodes, x, y) {\n var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n this._x = x;\n this._y = y;\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(4)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 4; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n","import constant from \"./constant\";\nimport jiggle from \"./jiggle\";\nimport {quadtree} from \"d3-quadtree\";\n\nfunction x(d) {\n return d.x + d.vx;\n}\n\nfunction y(d) {\n return d.y + d.vy;\n}\n\nexport default function(radius) {\n var nodes,\n radii,\n strength = 1,\n iterations = 1;\n\n if (typeof radius !== \"function\") radius = constant(radius == null ? 1 : +radius);\n\n function force() {\n var i, n = nodes.length,\n tree,\n node,\n xi,\n yi,\n ri,\n ri2;\n\n for (var k = 0; k < iterations; ++k) {\n tree = quadtree(nodes, x, y).visitAfter(prepare);\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n ri = radii[node.index], ri2 = ri * ri;\n xi = node.x + node.vx;\n yi = node.y + node.vy;\n tree.visit(apply);\n }\n }\n\n function apply(quad, x0, y0, x1, y1) {\n var data = quad.data, rj = quad.r, r = ri + rj;\n if (data) {\n if (data.index > node.index) {\n var x = xi - data.x - data.vx,\n y = yi - data.y - data.vy,\n l = x * x + y * y;\n if (l < r * r) {\n if (x === 0) x = jiggle(), l += x * x;\n if (y === 0) y = jiggle(), l += y * y;\n l = (r - (l = Math.sqrt(l))) / l * strength;\n node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj));\n node.vy += (y *= l) * r;\n data.vx -= x * (r = 1 - r);\n data.vy -= y * r;\n }\n }\n return;\n }\n return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r;\n }\n }\n\n function prepare(quad) {\n if (quad.data) return quad.r = radii[quad.data.index];\n for (var i = quad.r = 0; i < 4; ++i) {\n if (quad[i] && quad[i].r > quad.r) {\n quad.r = quad[i].r;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n radii = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes);\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n\n return force;\n}\n","import constant from \"./constant\";\nimport jiggle from \"./jiggle\";\nimport {map} from \"d3-collection\";\n\nfunction index(d) {\n return d.index;\n}\n\nfunction find(nodeById, nodeId) {\n var node = nodeById.get(nodeId);\n if (!node) throw new Error(\"missing: \" + nodeId);\n return node;\n}\n\nexport default function(links) {\n var id = index,\n strength = defaultStrength,\n strengths,\n distance = constant(30),\n distances,\n nodes,\n count,\n bias,\n iterations = 1;\n\n if (links == null) links = [];\n\n function defaultStrength(link) {\n return 1 / Math.min(count[link.source.index], count[link.target.index]);\n }\n\n function force(alpha) {\n for (var k = 0, n = links.length; k < iterations; ++k) {\n for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {\n link = links[i], source = link.source, target = link.target;\n x = target.x + target.vx - source.x - source.vx || jiggle();\n y = target.y + target.vy - source.y - source.vy || jiggle();\n l = Math.sqrt(x * x + y * y);\n l = (l - distances[i]) / l * alpha * strengths[i];\n x *= l, y *= l;\n target.vx -= x * (b = bias[i]);\n target.vy -= y * b;\n source.vx += x * (b = 1 - b);\n source.vy += y * b;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n\n var i,\n n = nodes.length,\n m = links.length,\n nodeById = map(nodes, id),\n link;\n\n for (i = 0, count = new Array(n); i < m; ++i) {\n link = links[i], link.index = i;\n if (typeof link.source !== \"object\") link.source = find(nodeById, link.source);\n if (typeof link.target !== \"object\") link.target = find(nodeById, link.target);\n count[link.source.index] = (count[link.source.index] || 0) + 1;\n count[link.target.index] = (count[link.target.index] || 0) + 1;\n }\n\n for (i = 0, bias = new Array(m); i < m; ++i) {\n link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n }\n\n strengths = new Array(m), initializeStrength();\n distances = new Array(m), initializeDistance();\n }\n\n function initializeStrength() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n strengths[i] = +strength(links[i], i, links);\n }\n }\n\n function initializeDistance() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n distances[i] = +distance(links[i], i, links);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.links = function(_) {\n return arguments.length ? (links = _, initialize(), force) : links;\n };\n\n force.id = function(_) {\n return arguments.length ? (id = _, force) : id;\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initializeStrength(), force) : strength;\n };\n\n force.distance = function(_) {\n return arguments.length ? (distance = typeof _ === \"function\" ? _ : constant(+_), initializeDistance(), force) : distance;\n };\n\n return force;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {map} from \"d3-collection\";\nimport {timer} from \"d3-timer\";\n\nexport function x(d) {\n return d.x;\n}\n\nexport function y(d) {\n return d.y;\n}\n\nvar initialRadius = 10,\n initialAngle = Math.PI * (3 - Math.sqrt(5));\n\nexport default function(nodes) {\n var simulation,\n alpha = 1,\n alphaMin = 0.001,\n alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n alphaTarget = 0,\n velocityDecay = 0.6,\n forces = map(),\n stepper = timer(step),\n event = dispatch(\"tick\", \"end\");\n\n if (nodes == null) nodes = [];\n\n function step() {\n tick();\n event.call(\"tick\", simulation);\n if (alpha < alphaMin) {\n stepper.stop();\n event.call(\"end\", simulation);\n }\n }\n\n function tick(iterations) {\n var i, n = nodes.length, node;\n\n if (iterations === undefined) iterations = 1;\n\n for (var k = 0; k < iterations; ++k) {\n alpha += (alphaTarget - alpha) * alphaDecay;\n\n forces.each(function (force) {\n force(alpha);\n });\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (node.fx == null) node.x += node.vx *= velocityDecay;\n else node.x = node.fx, node.vx = 0;\n if (node.fy == null) node.y += node.vy *= velocityDecay;\n else node.y = node.fy, node.vy = 0;\n }\n }\n\n return simulation;\n }\n\n function initializeNodes() {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.index = i;\n if (node.fx != null) node.x = node.fx;\n if (node.fy != null) node.y = node.fy;\n if (isNaN(node.x) || isNaN(node.y)) {\n var radius = initialRadius * Math.sqrt(i), angle = i * initialAngle;\n node.x = radius * Math.cos(angle);\n node.y = radius * Math.sin(angle);\n }\n if (isNaN(node.vx) || isNaN(node.vy)) {\n node.vx = node.vy = 0;\n }\n }\n }\n\n function initializeForce(force) {\n if (force.initialize) force.initialize(nodes);\n return force;\n }\n\n initializeNodes();\n\n return simulation = {\n tick: tick,\n\n restart: function() {\n return stepper.restart(step), simulation;\n },\n\n stop: function() {\n return stepper.stop(), simulation;\n },\n\n nodes: function(_) {\n return arguments.length ? (nodes = _, initializeNodes(), forces.each(initializeForce), simulation) : nodes;\n },\n\n alpha: function(_) {\n return arguments.length ? (alpha = +_, simulation) : alpha;\n },\n\n alphaMin: function(_) {\n return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n },\n\n alphaDecay: function(_) {\n return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n },\n\n alphaTarget: function(_) {\n return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n },\n\n velocityDecay: function(_) {\n return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n },\n\n force: function(name, _) {\n return arguments.length > 1 ? ((_ == null ? forces.remove(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n },\n\n find: function(x, y, radius) {\n var i = 0,\n n = nodes.length,\n dx,\n dy,\n d2,\n node,\n closest;\n\n if (radius == null) radius = Infinity;\n else radius *= radius;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n dx = x - node.x;\n dy = y - node.y;\n d2 = dx * dx + dy * dy;\n if (d2 < radius) closest = node, radius = d2;\n }\n\n return closest;\n },\n\n on: function(name, _) {\n return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n }\n };\n}\n","export default function(x, y) {\n if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1;\n\n // If the quadtree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing quadrant boundaries don’t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var z = x1 - x0,\n node = this._root,\n parent,\n i;\n\n while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n i = (y < y0) << 1 | (x < x0);\n parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n switch (i) {\n case 0: x1 = x0 + z, y1 = y0 + z; break;\n case 1: x0 = x1 - z, y1 = y0 + z; break;\n case 2: x1 = x0 + z, y0 = y1 - z; break;\n case 3: x0 = x1 - z, y0 = y1 - z; break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n return this;\n}\n","export default function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n","export default function(_) {\n return arguments.length\n ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n","import Quad from \"./quad.js\";\n\nexport default function(x, y, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n x1,\n y1,\n x2,\n y2,\n x3 = this._x1,\n y3 = this._y1,\n quads = [],\n node = this._root,\n q,\n i;\n\n if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius, y0 = y - radius;\n x3 = x + radius, y3 = y + radius;\n radius *= radius;\n }\n\n while (q = quads.pop()) {\n\n // Stop searching if this quadrant can’t contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (y1 = q.y0) > y3\n || (x2 = q.x1) < x0\n || (y2 = q.y1) < y0) continue;\n\n // Bisect the current quadrant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2;\n\n quads.push(\n new Quad(node[3], xm, ym, x2, y2),\n new Quad(node[2], x1, ym, xm, y2),\n new Quad(node[1], xm, y1, x2, ym),\n new Quad(node[0], x1, y1, xm, ym)\n );\n\n // Visit the closest quadrant first.\n if (i = (y >= ym) << 1 | (x >= xm)) {\n q = quads[quads.length - 1];\n quads[quads.length - 1] = quads[quads.length - 1 - i];\n quads[quads.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn’t necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n d2 = dx * dx + dy * dy;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d;\n x3 = x + d, y3 = y + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n","export default function(d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1,\n x,\n y,\n xm,\n ym,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n && node === (parent[3] || parent[2] || parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n","export default function() {\n return this._root;\n}\n","export default function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n }\n }\n return this;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], next = [], q;\n if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.x1, q.y1);\n }\n return this;\n}\n","import constant from \"./constant\";\nimport jiggle from \"./jiggle\";\nimport {quadtree} from \"d3-quadtree\";\nimport {x, y} from \"./simulation\";\n\nexport default function() {\n var nodes,\n node,\n alpha,\n strength = constant(-30),\n strengths,\n distanceMin2 = 1,\n distanceMax2 = Infinity,\n theta2 = 0.81;\n\n function force(_) {\n var i, n = nodes.length, tree = quadtree(nodes, x, y).visitAfter(accumulate);\n for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n strengths = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);\n }\n\n function accumulate(quad) {\n var strength = 0, q, c, weight = 0, x, y, i;\n\n // For internal nodes, accumulate forces from child quadrants.\n if (quad.length) {\n for (x = y = i = 0; i < 4; ++i) {\n if ((q = quad[i]) && (c = Math.abs(q.value))) {\n strength += q.value, weight += c, x += c * q.x, y += c * q.y;\n }\n }\n quad.x = x / weight;\n quad.y = y / weight;\n }\n\n // For leaf nodes, accumulate forces from coincident quadrants.\n else {\n q = quad;\n q.x = q.data.x;\n q.y = q.data.y;\n do strength += strengths[q.data.index];\n while (q = q.next);\n }\n\n quad.value = strength;\n }\n\n function apply(quad, x1, _, x2) {\n if (!quad.value) return true;\n\n var x = quad.x - node.x,\n y = quad.y - node.y,\n w = x2 - x1,\n l = x * x + y * y;\n\n // Apply the Barnes-Hut approximation if possible.\n // Limit forces for very close nodes; randomize direction if coincident.\n if (w * w / theta2 < l) {\n if (l < distanceMax2) {\n if (x === 0) x = jiggle(), l += x * x;\n if (y === 0) y = jiggle(), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n node.vx += x * quad.value * alpha / l;\n node.vy += y * quad.value * alpha / l;\n }\n return true;\n }\n\n // Otherwise, process points directly.\n else if (quad.length || l >= distanceMax2) return;\n\n // Limit forces for very close nodes; randomize direction if coincident.\n if (quad.data !== node || quad.next) {\n if (x === 0) x = jiggle(), l += x * x;\n if (y === 0) y = jiggle(), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n }\n\n do if (quad.data !== node) {\n w = strengths[quad.data.index] * alpha / l;\n node.vx += x * w;\n node.vy += y * w;\n } while (quad = quad.next);\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.distanceMin = function(_) {\n return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n };\n\n force.distanceMax = function(_) {\n return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n };\n\n force.theta = function(_) {\n return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n };\n\n return force;\n}\n","import constant from \"./constant\";\n\nexport default function(radius, x, y) {\n var nodes,\n strength = constant(0.1),\n strengths,\n radiuses;\n\n if (typeof radius !== \"function\") radius = constant(+radius);\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force(alpha) {\n for (var i = 0, n = nodes.length; i < n; ++i) {\n var node = nodes[i],\n dx = node.x - x || 1e-6,\n dy = node.y - y || 1e-6,\n r = Math.sqrt(dx * dx + dy * dy),\n k = (radiuses[i] - r) * strengths[i] * alpha / r;\n node.vx += dx * k;\n node.vy += dy * k;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n radiuses = new Array(n);\n for (i = 0; i < n; ++i) {\n radiuses[i] = +radius(nodes[i], i, nodes);\n strengths[i] = isNaN(radiuses[i]) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _, initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n return force;\n}\n","import constant from \"./constant\";\n\nexport default function(x) {\n var strength = constant(0.1),\n nodes,\n strengths,\n xz;\n\n if (typeof x !== \"function\") x = constant(x == null ? 0 : +x);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n xz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : x;\n };\n\n return force;\n}\n","import constant from \"./constant\";\n\nexport default function(y) {\n var strength = constant(0.1),\n nodes,\n strengths,\n yz;\n\n if (typeof y !== \"function\") y = constant(y == null ? 0 : +y);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n yz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : y;\n };\n\n return force;\n}\n","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": function(x, p) { return (x * 100).toFixed(p); },\n \"b\": function(x) { return Math.round(x).toString(2); },\n \"c\": function(x) { return x + \"\"; },\n \"d\": formatDecimal,\n \"e\": function(x, p) { return x.toExponential(p); },\n \"f\": function(x, p) { return x.toFixed(p); },\n \"g\": function(x, p) { return x.toPrecision(p); },\n \"o\": function(x) { return Math.round(x).toString(8); },\n \"p\": function(x, p) { return formatRounded(x * 100, p); },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n \"x\": function(x) { return Math.round(x).toString(16); }\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"-\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"],\n minus: \"-\"\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","// Adds floating point numbers with twice the normal precision.\n// Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and\n// Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3)\n// 305–363 (1997).\n// Code adapted from GeographicLib by Charles F. F. Karney,\n// http://geographiclib.sourceforge.net/\n\nexport default function() {\n return new Adder;\n}\n\nfunction Adder() {\n this.reset();\n}\n\nAdder.prototype = {\n constructor: Adder,\n reset: function() {\n this.s = // rounded value\n this.t = 0; // exact error\n },\n add: function(y) {\n add(temp, y, this.t);\n add(this, temp.s, this.s);\n if (this.s) this.t += temp.t;\n else this.s = temp.t;\n },\n valueOf: function() {\n return this.s;\n }\n};\n\nvar temp = new Adder;\n\nfunction add(adder, a, b) {\n var x = adder.s = a + b,\n bv = x - a,\n av = x - bv;\n adder.t = (a - av) + (b - bv);\n}\n","export var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function haversin(x) {\n return (x = sin(x / 2)) * x;\n}\n","export default function noop() {}\n","function streamGeometry(geometry, stream) {\n if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n streamGeometryType[geometry.type](geometry, stream);\n }\n}\n\nvar streamObjectType = {\n Feature: function(object, stream) {\n streamGeometry(object.geometry, stream);\n },\n FeatureCollection: function(object, stream) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) streamGeometry(features[i].geometry, stream);\n }\n};\n\nvar streamGeometryType = {\n Sphere: function(object, stream) {\n stream.sphere();\n },\n Point: function(object, stream) {\n object = object.coordinates;\n stream.point(object[0], object[1], object[2]);\n },\n MultiPoint: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n },\n LineString: function(object, stream) {\n streamLine(object.coordinates, stream, 0);\n },\n MultiLineString: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamLine(coordinates[i], stream, 0);\n },\n Polygon: function(object, stream) {\n streamPolygon(object.coordinates, stream);\n },\n MultiPolygon: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamPolygon(coordinates[i], stream);\n },\n GeometryCollection: function(object, stream) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) streamGeometry(geometries[i], stream);\n }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n var i = -1, n = coordinates.length - closed, coordinate;\n stream.lineStart();\n while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n var i = -1, n = coordinates.length;\n stream.polygonStart();\n while (++i < n) streamLine(coordinates[i], stream, 1);\n stream.polygonEnd();\n}\n\nexport default function(object, stream) {\n if (object && streamObjectType.hasOwnProperty(object.type)) {\n streamObjectType[object.type](object, stream);\n } else {\n streamGeometry(object, stream);\n }\n}\n","import adder from \"./adder.js\";\nimport {atan2, cos, quarterPi, radians, sin, tau} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nexport var areaRingSum = adder();\n\nvar areaSum = adder(),\n lambda00,\n phi00,\n lambda0,\n cosPhi0,\n sinPhi0;\n\nexport var areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaRingSum.reset();\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n var areaRing = +areaRingSum;\n areaSum.add(areaRing < 0 ? tau + areaRing : areaRing);\n this.lineStart = this.lineEnd = this.point = noop;\n },\n sphere: function() {\n areaSum.add(tau);\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaRingEnd() {\n areaPoint(lambda00, phi00);\n}\n\nfunction areaPointFirst(lambda, phi) {\n areaStream.point = areaPoint;\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n lambda0 = lambda, cosPhi0 = cos(phi = phi / 2 + quarterPi), sinPhi0 = sin(phi);\n}\n\nfunction areaPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n phi = phi / 2 + quarterPi; // half the angular distance from south pole\n\n // Spherical excess E for a spherical triangle with vertices: south pole,\n // previous point, current point. Uses a formula derived from Cagnoli’s\n // theorem. See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).\n var dLambda = lambda - lambda0,\n sdLambda = dLambda >= 0 ? 1 : -1,\n adLambda = sdLambda * dLambda,\n cosPhi = cos(phi),\n sinPhi = sin(phi),\n k = sinPhi0 * sinPhi,\n u = cosPhi0 * cosPhi + k * cos(adLambda),\n v = k * sdLambda * sin(adLambda);\n areaRingSum.add(atan2(v, u));\n\n // Advance the previous points.\n lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;\n}\n\nexport default function(object) {\n areaSum.reset();\n stream(object, areaStream);\n return areaSum * 2;\n}\n","import {asin, atan2, cos, sin, sqrt} from \"./math.js\";\n\nexport function spherical(cartesian) {\n return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])];\n}\n\nexport function cartesian(spherical) {\n var lambda = spherical[0], phi = spherical[1], cosPhi = cos(phi);\n return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)];\n}\n\nexport function cartesianDot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nexport function cartesianCross(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// TODO return a\nexport function cartesianAddInPlace(a, b) {\n a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\n\nexport function cartesianScale(vector, k) {\n return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nexport function cartesianNormalizeInPlace(d) {\n var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n d[0] /= l, d[1] /= l, d[2] /= l;\n}\n","import adder from \"./adder.js\";\nimport {areaStream, areaRingSum} from \"./area.js\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace, spherical} from \"./cartesian.js\";\nimport {abs, degrees, epsilon, radians} from \"./math.js\";\nimport stream from \"./stream.js\";\n\nvar lambda0, phi0, lambda1, phi1, // bounds\n lambda2, // previous lambda-coordinate\n lambda00, phi00, // first point\n p0, // previous 3D point\n deltaSum = adder(),\n ranges,\n range;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: boundsLineStart,\n lineEnd: boundsLineEnd,\n polygonStart: function() {\n boundsStream.point = boundsRingPoint;\n boundsStream.lineStart = boundsRingStart;\n boundsStream.lineEnd = boundsRingEnd;\n deltaSum.reset();\n areaStream.polygonStart();\n },\n polygonEnd: function() {\n areaStream.polygonEnd();\n boundsStream.point = boundsPoint;\n boundsStream.lineStart = boundsLineStart;\n boundsStream.lineEnd = boundsLineEnd;\n if (areaRingSum < 0) lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n else if (deltaSum > epsilon) phi1 = 90;\n else if (deltaSum < -epsilon) phi0 = -90;\n range[0] = lambda0, range[1] = lambda1;\n },\n sphere: function() {\n lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n }\n};\n\nfunction boundsPoint(lambda, phi) {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n}\n\nfunction linePoint(lambda, phi) {\n var p = cartesian([lambda * radians, phi * radians]);\n if (p0) {\n var normal = cartesianCross(p0, p),\n equatorial = [normal[1], -normal[0], 0],\n inflection = cartesianCross(equatorial, normal);\n cartesianNormalizeInPlace(inflection);\n inflection = spherical(inflection);\n var delta = lambda - lambda2,\n sign = delta > 0 ? 1 : -1,\n lambdai = inflection[0] * degrees * sign,\n phii,\n antimeridian = abs(delta) > 180;\n if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = inflection[1] * degrees;\n if (phii > phi1) phi1 = phii;\n } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = -inflection[1] * degrees;\n if (phii < phi0) phi0 = phii;\n } else {\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n }\n if (antimeridian) {\n if (lambda < lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n } else {\n if (lambda1 >= lambda0) {\n if (lambda < lambda0) lambda0 = lambda;\n if (lambda > lambda1) lambda1 = lambda;\n } else {\n if (lambda > lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n }\n }\n } else {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n }\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n p0 = p, lambda2 = lambda;\n}\n\nfunction boundsLineStart() {\n boundsStream.point = linePoint;\n}\n\nfunction boundsLineEnd() {\n range[0] = lambda0, range[1] = lambda1;\n boundsStream.point = boundsPoint;\n p0 = null;\n}\n\nfunction boundsRingPoint(lambda, phi) {\n if (p0) {\n var delta = lambda - lambda2;\n deltaSum.add(abs(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);\n } else {\n lambda00 = lambda, phi00 = phi;\n }\n areaStream.point(lambda, phi);\n linePoint(lambda, phi);\n}\n\nfunction boundsRingStart() {\n areaStream.lineStart();\n}\n\nfunction boundsRingEnd() {\n boundsRingPoint(lambda00, phi00);\n areaStream.lineEnd();\n if (abs(deltaSum) > epsilon) lambda0 = -(lambda1 = 180);\n range[0] = lambda0, range[1] = lambda1;\n p0 = null;\n}\n\n// Finds the left-right distance between two longitudes.\n// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want\n// the distance between ±180° to be 360°.\nfunction angle(lambda0, lambda1) {\n return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;\n}\n\nfunction rangeCompare(a, b) {\n return a[0] - b[0];\n}\n\nfunction rangeContains(range, x) {\n return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n}\n\nexport default function(feature) {\n var i, n, a, b, merged, deltaMax, delta;\n\n phi1 = lambda1 = -(lambda0 = phi0 = Infinity);\n ranges = [];\n stream(feature, boundsStream);\n\n // First, sort ranges by their minimum longitudes.\n if (n = ranges.length) {\n ranges.sort(rangeCompare);\n\n // Then, merge any ranges that overlap.\n for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {\n b = ranges[i];\n if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {\n if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n } else {\n merged.push(a = b);\n }\n }\n\n // Finally, find the largest gap between the merged ranges.\n // The final bounding box will be the inverse of this gap.\n for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {\n b = merged[i];\n if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0 = b[0], lambda1 = a[1];\n }\n }\n\n ranges = range = null;\n\n return lambda0 === Infinity || phi0 === Infinity\n ? [[NaN, NaN], [NaN, NaN]]\n : [[lambda0, phi0], [lambda1, phi1]];\n}\n","import {asin, atan2, cos, degrees, epsilon, epsilon2, radians, sin, sqrt} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nvar W0, W1,\n X0, Y0, Z0,\n X1, Y1, Z1,\n X2, Y2, Z2,\n lambda00, phi00, // first point\n x0, y0, z0; // previous point\n\nvar centroidStream = {\n sphere: noop,\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n }\n};\n\n// Arithmetic mean of Cartesian vectors.\nfunction centroidPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi);\n centroidPointCartesian(cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi));\n}\n\nfunction centroidPointCartesian(x, y, z) {\n ++W0;\n X0 += (x - X0) / W0;\n Y0 += (y - Y0) / W0;\n Z0 += (z - Z0) / W0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidLinePointFirst;\n}\n\nfunction centroidLinePointFirst(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi);\n x0 = cosPhi * cos(lambda);\n y0 = cosPhi * sin(lambda);\n z0 = sin(phi);\n centroidStream.point = centroidLinePoint;\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLinePoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi),\n x = cosPhi * cos(lambda),\n y = cosPhi * sin(lambda),\n z = sin(phi),\n w = atan2(sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\n// See J. E. Brock, The Inertia Tensor for a Spherical Triangle,\n// J. Applied Mechanics 42, 239 (1975).\nfunction centroidRingStart() {\n centroidStream.point = centroidRingPointFirst;\n}\n\nfunction centroidRingEnd() {\n centroidRingPoint(lambda00, phi00);\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingPointFirst(lambda, phi) {\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n centroidStream.point = centroidRingPoint;\n var cosPhi = cos(phi);\n x0 = cosPhi * cos(lambda);\n y0 = cosPhi * sin(lambda);\n z0 = sin(phi);\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidRingPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi),\n x = cosPhi * cos(lambda),\n y = cosPhi * sin(lambda),\n z = sin(phi),\n cx = y0 * z - z0 * y,\n cy = z0 * x - x0 * z,\n cz = x0 * y - y0 * x,\n m = sqrt(cx * cx + cy * cy + cz * cz),\n w = asin(m), // line weight = angle\n v = m && -w / m; // area weight multiplier\n X2 += v * cx;\n Y2 += v * cy;\n Z2 += v * cz;\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\n\nexport default function(object) {\n W0 = W1 =\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 =\n X2 = Y2 = Z2 = 0;\n stream(object, centroidStream);\n\n var x = X2,\n y = Y2,\n z = Z2,\n m = x * x + y * y + z * z;\n\n // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid.\n if (m < epsilon2) {\n x = X1, y = Y1, z = Z1;\n // If the feature has zero length, fall back to arithmetic mean of point vectors.\n if (W1 < epsilon) x = X0, y = Y0, z = Z0;\n m = x * x + y * y + z * z;\n // If the feature still has an undefined ccentroid, then return.\n if (m < epsilon2) return [NaN, NaN];\n }\n\n return [atan2(y, x) * degrees, asin(z / sqrt(m)) * degrees];\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(a, b) {\n\n function compose(x, y) {\n return x = a(x, y), b(x[0], x[1]);\n }\n\n if (a.invert && b.invert) compose.invert = function(x, y) {\n return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n };\n\n return compose;\n}\n","import compose from \"./compose.js\";\nimport {abs, asin, atan2, cos, degrees, pi, radians, sin, tau} from \"./math.js\";\n\nfunction rotationIdentity(lambda, phi) {\n return [abs(lambda) > pi ? lambda + Math.round(-lambda / tau) * tau : lambda, phi];\n}\n\nrotationIdentity.invert = rotationIdentity;\n\nexport function rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n return (deltaLambda %= tau) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))\n : rotationLambda(deltaLambda))\n : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)\n : rotationIdentity);\n}\n\nfunction forwardRotationLambda(deltaLambda) {\n return function(lambda, phi) {\n return lambda += deltaLambda, [lambda > pi ? lambda - tau : lambda < -pi ? lambda + tau : lambda, phi];\n };\n}\n\nfunction rotationLambda(deltaLambda) {\n var rotation = forwardRotationLambda(deltaLambda);\n rotation.invert = forwardRotationLambda(-deltaLambda);\n return rotation;\n}\n\nfunction rotationPhiGamma(deltaPhi, deltaGamma) {\n var cosDeltaPhi = cos(deltaPhi),\n sinDeltaPhi = sin(deltaPhi),\n cosDeltaGamma = cos(deltaGamma),\n sinDeltaGamma = sin(deltaGamma);\n\n function rotation(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaPhi + x * sinDeltaPhi;\n return [\n atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),\n asin(k * cosDeltaGamma + y * sinDeltaGamma)\n ];\n }\n\n rotation.invert = function(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaGamma - y * sinDeltaGamma;\n return [\n atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),\n asin(k * cosDeltaPhi - x * sinDeltaPhi)\n ];\n };\n\n return rotation;\n}\n\nexport default function(rotate) {\n rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0);\n\n function forward(coordinates) {\n coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n }\n\n forward.invert = function(coordinates) {\n coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n };\n\n return forward;\n}\n","import {cartesian, cartesianNormalizeInPlace, spherical} from \"./cartesian.js\";\nimport constant from \"./constant.js\";\nimport {acos, cos, degrees, epsilon, radians, sin, tau} from \"./math.js\";\nimport {rotateRadians} from \"./rotation.js\";\n\n// Generates a circle centered at [0°, 0°], with a given radius and precision.\nexport function circleStream(stream, radius, delta, direction, t0, t1) {\n if (!delta) return;\n var cosRadius = cos(radius),\n sinRadius = sin(radius),\n step = direction * delta;\n if (t0 == null) {\n t0 = radius + direction * tau;\n t1 = radius - step / 2;\n } else {\n t0 = circleRadius(cosRadius, t0);\n t1 = circleRadius(cosRadius, t1);\n if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau;\n }\n for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {\n point = spherical([cosRadius, -sinRadius * cos(t), -sinRadius * sin(t)]);\n stream.point(point[0], point[1]);\n }\n}\n\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction circleRadius(cosRadius, point) {\n point = cartesian(point), point[0] -= cosRadius;\n cartesianNormalizeInPlace(point);\n var radius = acos(-point[1]);\n return ((-point[2] < 0 ? -radius : radius) + tau - epsilon) % tau;\n}\n\nexport default function() {\n var center = constant([0, 0]),\n radius = constant(90),\n precision = constant(6),\n ring,\n rotate,\n stream = {point: point};\n\n function point(x, y) {\n ring.push(x = rotate(x, y));\n x[0] *= degrees, x[1] *= degrees;\n }\n\n function circle() {\n var c = center.apply(this, arguments),\n r = radius.apply(this, arguments) * radians,\n p = precision.apply(this, arguments) * radians;\n ring = [];\n rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert;\n circleStream(stream, r, p, 1);\n c = {type: \"Polygon\", coordinates: [ring]};\n ring = rotate = null;\n return c;\n }\n\n circle.center = function(_) {\n return arguments.length ? (center = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), circle) : center;\n };\n\n circle.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), circle) : radius;\n };\n\n circle.precision = function(_) {\n return arguments.length ? (precision = typeof _ === \"function\" ? _ : constant(+_), circle) : precision;\n };\n\n return circle;\n}\n","import noop from \"../noop.js\";\n\nexport default function() {\n var lines = [],\n line;\n return {\n point: function(x, y, m) {\n line.push([x, y, m]);\n },\n lineStart: function() {\n lines.push(line = []);\n },\n lineEnd: noop,\n rejoin: function() {\n if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n },\n result: function() {\n var result = lines;\n lines = [];\n line = null;\n return result;\n }\n };\n}\n","import {abs, epsilon} from \"./math.js\";\n\nexport default function(a, b) {\n return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon;\n}\n","import pointEqual from \"../pointEqual.js\";\nimport {epsilon} from \"../math.js\";\n\nfunction Intersection(point, points, other, entry) {\n this.x = point;\n this.z = points;\n this.o = other; // another intersection\n this.e = entry; // is an entry?\n this.v = false; // visited\n this.n = this.p = null; // next & previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\nexport default function(segments, compareIntersection, startInside, interpolate, stream) {\n var subject = [],\n clip = [],\n i,\n n;\n\n segments.forEach(function(segment) {\n if ((n = segment.length - 1) <= 0) return;\n var n, p0 = segment[0], p1 = segment[n], x;\n\n if (pointEqual(p0, p1)) {\n if (!p0[2] && !p1[2]) {\n stream.lineStart();\n for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n stream.lineEnd();\n return;\n }\n // handle degenerate cases by moving the point\n p1[0] += 2 * epsilon;\n }\n\n subject.push(x = new Intersection(p0, segment, null, true));\n clip.push(x.o = new Intersection(p0, null, x, false));\n subject.push(x = new Intersection(p1, segment, null, false));\n clip.push(x.o = new Intersection(p1, null, x, true));\n });\n\n if (!subject.length) return;\n\n clip.sort(compareIntersection);\n link(subject);\n link(clip);\n\n for (i = 0, n = clip.length; i < n; ++i) {\n clip[i].e = startInside = !startInside;\n }\n\n var start = subject[0],\n points,\n point;\n\n while (1) {\n // Find first unvisited intersection.\n var current = start,\n isSubject = true;\n while (current.v) if ((current = current.n) === start) return;\n points = current.z;\n stream.lineStart();\n do {\n current.v = current.o.v = true;\n if (current.e) {\n if (isSubject) {\n for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.n.x, 1, stream);\n }\n current = current.n;\n } else {\n if (isSubject) {\n points = current.p.z;\n for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.p.x, -1, stream);\n }\n current = current.p;\n }\n current = current.o;\n points = current.z;\n isSubject = !isSubject;\n } while (!current.v);\n stream.lineEnd();\n }\n}\n\nfunction link(array) {\n if (!(n = array.length)) return;\n var n,\n i = 0,\n a = array[0],\n b;\n while (++i < n) {\n a.n = b = array[i];\n b.p = a;\n a = b;\n }\n a.n = b = array[0];\n b.p = a;\n}\n","import adder from \"./adder.js\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace} from \"./cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, halfPi, pi, quarterPi, sign, sin, tau} from \"./math.js\";\n\nvar sum = adder();\n\nfunction longitude(point) {\n if (abs(point[0]) <= pi)\n return point[0];\n else\n return sign(point[0]) * ((abs(point[0]) + pi) % tau - pi);\n}\n\nexport default function(polygon, point) {\n var lambda = longitude(point),\n phi = point[1],\n sinPhi = sin(phi),\n normal = [sin(lambda), -cos(lambda), 0],\n angle = 0,\n winding = 0;\n\n sum.reset();\n\n if (sinPhi === 1) phi = halfPi + epsilon;\n else if (sinPhi === -1) phi = -halfPi - epsilon;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n if (!(m = (ring = polygon[i]).length)) continue;\n var ring,\n m,\n point0 = ring[m - 1],\n lambda0 = longitude(point0),\n phi0 = point0[1] / 2 + quarterPi,\n sinPhi0 = sin(phi0),\n cosPhi0 = cos(phi0);\n\n for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n var point1 = ring[j],\n lambda1 = longitude(point1),\n phi1 = point1[1] / 2 + quarterPi,\n sinPhi1 = sin(phi1),\n cosPhi1 = cos(phi1),\n delta = lambda1 - lambda0,\n sign = delta >= 0 ? 1 : -1,\n absDelta = sign * delta,\n antimeridian = absDelta > pi,\n k = sinPhi0 * sinPhi1;\n\n sum.add(atan2(k * sign * sin(absDelta), cosPhi0 * cosPhi1 + k * cos(absDelta)));\n angle += antimeridian ? delta + sign * tau : delta;\n\n // Are the longitudes either side of the point’s meridian (lambda),\n // and are the latitudes smaller than the parallel (phi)?\n if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n var arc = cartesianCross(cartesian(point0), cartesian(point1));\n cartesianNormalizeInPlace(arc);\n var intersection = cartesianCross(normal, arc);\n cartesianNormalizeInPlace(intersection);\n var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]);\n if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n winding += antimeridian ^ delta >= 0 ? 1 : -1;\n }\n }\n }\n }\n\n // First, determine whether the South pole is inside or outside:\n //\n // It is inside if:\n // * the polygon winds around it in a clockwise direction.\n // * the polygon does not (cumulatively) wind around it, but has a negative\n // (counter-clockwise) area.\n //\n // Second, count the (signed) number of times a segment crosses a lambda\n // from the point to the South pole. If it is zero, then the point is the\n // same side as the South pole.\n\n return (angle < -epsilon || angle < epsilon && sum < -epsilon) ^ (winding & 1);\n}\n","import clipBuffer from \"./buffer.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {epsilon, halfPi} from \"../math.js\";\nimport polygonContains from \"../polygonContains.js\";\nimport {merge} from \"d3-array\";\n\nexport default function(pointVisible, clipLine, interpolate, start) {\n return function(sink) {\n var line = clipLine(sink),\n ringBuffer = clipBuffer(),\n ringSink = clipLine(ringBuffer),\n polygonStarted = false,\n polygon,\n segments,\n ring;\n\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n clip.point = pointRing;\n clip.lineStart = ringStart;\n clip.lineEnd = ringEnd;\n segments = [];\n polygon = [];\n },\n polygonEnd: function() {\n clip.point = point;\n clip.lineStart = lineStart;\n clip.lineEnd = lineEnd;\n segments = merge(segments);\n var startInside = polygonContains(polygon, start);\n if (segments.length) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n clipRejoin(segments, compareIntersection, startInside, interpolate, sink);\n } else if (startInside) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n }\n if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n segments = polygon = null;\n },\n sphere: function() {\n sink.polygonStart();\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n sink.polygonEnd();\n }\n };\n\n function point(lambda, phi) {\n if (pointVisible(lambda, phi)) sink.point(lambda, phi);\n }\n\n function pointLine(lambda, phi) {\n line.point(lambda, phi);\n }\n\n function lineStart() {\n clip.point = pointLine;\n line.lineStart();\n }\n\n function lineEnd() {\n clip.point = point;\n line.lineEnd();\n }\n\n function pointRing(lambda, phi) {\n ring.push([lambda, phi]);\n ringSink.point(lambda, phi);\n }\n\n function ringStart() {\n ringSink.lineStart();\n ring = [];\n }\n\n function ringEnd() {\n pointRing(ring[0][0], ring[0][1]);\n ringSink.lineEnd();\n\n var clean = ringSink.clean(),\n ringSegments = ringBuffer.result(),\n i, n = ringSegments.length, m,\n segment,\n point;\n\n ring.pop();\n polygon.push(ring);\n ring = null;\n\n if (!n) return;\n\n // No intersections.\n if (clean & 1) {\n segment = ringSegments[0];\n if ((m = segment.length - 1) > 0) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);\n sink.lineEnd();\n }\n return;\n }\n\n // Rejoin connected segments.\n // TODO reuse ringBuffer.rejoin()?\n if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\n segments.push(ringSegments.filter(validSegment));\n }\n\n return clip;\n };\n}\n\nfunction validSegment(segment) {\n return segment.length > 1;\n}\n\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction compareIntersection(a, b) {\n return ((a = a.x)[0] < 0 ? a[1] - halfPi - epsilon : halfPi - a[1])\n - ((b = b.x)[0] < 0 ? b[1] - halfPi - epsilon : halfPi - b[1]);\n}\n","import clip from \"./index.js\";\nimport {abs, atan, cos, epsilon, halfPi, pi, sin} from \"../math.js\";\n\nexport default clip(\n function() { return true; },\n clipAntimeridianLine,\n clipAntimeridianInterpolate,\n [-pi, -halfPi]\n);\n\n// Takes a line and cuts into visible segments. Return values: 0 - there were\n// intersections or the line was empty; 1 - no intersections; 2 - there were\n// intersections, and the first and last segments should be rejoined.\nfunction clipAntimeridianLine(stream) {\n var lambda0 = NaN,\n phi0 = NaN,\n sign0 = NaN,\n clean; // no intersections\n\n return {\n lineStart: function() {\n stream.lineStart();\n clean = 1;\n },\n point: function(lambda1, phi1) {\n var sign1 = lambda1 > 0 ? pi : -pi,\n delta = abs(lambda1 - lambda0);\n if (abs(delta - pi) < epsilon) { // line crosses a pole\n stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi : -halfPi);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n stream.point(lambda1, phi0);\n clean = 0;\n } else if (sign0 !== sign1 && delta >= pi) { // line crosses antimeridian\n if (abs(lambda0 - sign0) < epsilon) lambda0 -= sign0 * epsilon; // handle degeneracies\n if (abs(lambda1 - sign1) < epsilon) lambda1 -= sign1 * epsilon;\n phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n clean = 0;\n }\n stream.point(lambda0 = lambda1, phi0 = phi1);\n sign0 = sign1;\n },\n lineEnd: function() {\n stream.lineEnd();\n lambda0 = phi0 = NaN;\n },\n clean: function() {\n return 2 - clean; // if intersections, rejoin first and last segments\n }\n };\n}\n\nfunction clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n var cosPhi0,\n cosPhi1,\n sinLambda0Lambda1 = sin(lambda0 - lambda1);\n return abs(sinLambda0Lambda1) > epsilon\n ? atan((sin(phi0) * (cosPhi1 = cos(phi1)) * sin(lambda1)\n - sin(phi1) * (cosPhi0 = cos(phi0)) * sin(lambda0))\n / (cosPhi0 * cosPhi1 * sinLambda0Lambda1))\n : (phi0 + phi1) / 2;\n}\n\nfunction clipAntimeridianInterpolate(from, to, direction, stream) {\n var phi;\n if (from == null) {\n phi = direction * halfPi;\n stream.point(-pi, phi);\n stream.point(0, phi);\n stream.point(pi, phi);\n stream.point(pi, 0);\n stream.point(pi, -phi);\n stream.point(0, -phi);\n stream.point(-pi, -phi);\n stream.point(-pi, 0);\n stream.point(-pi, phi);\n } else if (abs(from[0] - to[0]) > epsilon) {\n var lambda = from[0] < to[0] ? pi : -pi;\n phi = direction * lambda / 2;\n stream.point(-lambda, phi);\n stream.point(0, phi);\n stream.point(lambda, phi);\n } else {\n stream.point(to[0], to[1]);\n }\n}\n","import {cartesian, cartesianAddInPlace, cartesianCross, cartesianDot, cartesianScale, spherical} from \"../cartesian.js\";\nimport {circleStream} from \"../circle.js\";\nimport {abs, cos, epsilon, pi, radians, sqrt} from \"../math.js\";\nimport pointEqual from \"../pointEqual.js\";\nimport clip from \"./index.js\";\n\nexport default function(radius) {\n var cr = cos(radius),\n delta = 6 * radians,\n smallRadius = cr > 0,\n notHemisphere = abs(cr) > epsilon; // TODO optimise for this common case\n\n function interpolate(from, to, direction, stream) {\n circleStream(stream, radius, delta, direction, from, to);\n }\n\n function visible(lambda, phi) {\n return cos(lambda) * cos(phi) > cr;\n }\n\n // Takes a line and cuts into visible segments. Return values used for polygon\n // clipping: 0 - there were intersections or the line was empty; 1 - no\n // intersections 2 - there were intersections, and the first and last segments\n // should be rejoined.\n function clipLine(stream) {\n var point0, // previous point\n c0, // code for previous point\n v0, // visibility of previous point\n v00, // visibility of first point\n clean; // no intersections\n return {\n lineStart: function() {\n v00 = v0 = false;\n clean = 1;\n },\n point: function(lambda, phi) {\n var point1 = [lambda, phi],\n point2,\n v = visible(lambda, phi),\n c = smallRadius\n ? v ? 0 : code(lambda, phi)\n : v ? code(lambda + (lambda < 0 ? pi : -pi), phi) : 0;\n if (!point0 && (v00 = v0 = v)) stream.lineStart();\n if (v !== v0) {\n point2 = intersect(point0, point1);\n if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2))\n point1[2] = 1;\n }\n if (v !== v0) {\n clean = 0;\n if (v) {\n // outside going in\n stream.lineStart();\n point2 = intersect(point1, point0);\n stream.point(point2[0], point2[1]);\n } else {\n // inside going out\n point2 = intersect(point0, point1);\n stream.point(point2[0], point2[1], 2);\n stream.lineEnd();\n }\n point0 = point2;\n } else if (notHemisphere && point0 && smallRadius ^ v) {\n var t;\n // If the codes for two points are different, or are both zero,\n // and there this segment intersects with the small circle.\n if (!(c & c0) && (t = intersect(point1, point0, true))) {\n clean = 0;\n if (smallRadius) {\n stream.lineStart();\n stream.point(t[0][0], t[0][1]);\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n } else {\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n stream.lineStart();\n stream.point(t[0][0], t[0][1], 3);\n }\n }\n }\n if (v && (!point0 || !pointEqual(point0, point1))) {\n stream.point(point1[0], point1[1]);\n }\n point0 = point1, v0 = v, c0 = c;\n },\n lineEnd: function() {\n if (v0) stream.lineEnd();\n point0 = null;\n },\n // Rejoin first and last segments if there were intersections and the first\n // and last points were visible.\n clean: function() {\n return clean | ((v00 && v0) << 1);\n }\n };\n }\n\n // Intersects the great circle between a and b with the clip circle.\n function intersect(a, b, two) {\n var pa = cartesian(a),\n pb = cartesian(b);\n\n // We have two planes, n1.p = d1 and n2.p = d2.\n // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2).\n var n1 = [1, 0, 0], // normal\n n2 = cartesianCross(pa, pb),\n n2n2 = cartesianDot(n2, n2),\n n1n2 = n2[0], // cartesianDot(n1, n2),\n determinant = n2n2 - n1n2 * n1n2;\n\n // Two polar points.\n if (!determinant) return !two && a;\n\n var c1 = cr * n2n2 / determinant,\n c2 = -cr * n1n2 / determinant,\n n1xn2 = cartesianCross(n1, n2),\n A = cartesianScale(n1, c1),\n B = cartesianScale(n2, c2);\n cartesianAddInPlace(A, B);\n\n // Solve |p(t)|^2 = 1.\n var u = n1xn2,\n w = cartesianDot(A, u),\n uu = cartesianDot(u, u),\n t2 = w * w - uu * (cartesianDot(A, A) - 1);\n\n if (t2 < 0) return;\n\n var t = sqrt(t2),\n q = cartesianScale(u, (-w - t) / uu);\n cartesianAddInPlace(q, A);\n q = spherical(q);\n\n if (!two) return q;\n\n // Two intersection points.\n var lambda0 = a[0],\n lambda1 = b[0],\n phi0 = a[1],\n phi1 = b[1],\n z;\n\n if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;\n\n var delta = lambda1 - lambda0,\n polar = abs(delta - pi) < epsilon,\n meridian = polar || delta < epsilon;\n\n if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;\n\n // Check that the first point is between a and b.\n if (meridian\n ? polar\n ? phi0 + phi1 > 0 ^ q[1] < (abs(q[0] - lambda0) < epsilon ? phi0 : phi1)\n : phi0 <= q[1] && q[1] <= phi1\n : delta > pi ^ (lambda0 <= q[0] && q[0] <= lambda1)) {\n var q1 = cartesianScale(u, (-w + t) / uu);\n cartesianAddInPlace(q1, A);\n return [q, spherical(q1)];\n }\n }\n\n // Generates a 4-bit vector representing the location of a point relative to\n // the small circle's bounding box.\n function code(lambda, phi) {\n var r = smallRadius ? radius : pi - radius,\n code = 0;\n if (lambda < -r) code |= 1; // left\n else if (lambda > r) code |= 2; // right\n if (phi < -r) code |= 4; // below\n else if (phi > r) code |= 8; // above\n return code;\n }\n\n return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi, radius - pi]);\n}\n","import {abs, epsilon} from \"../math.js\";\nimport clipBuffer from \"./buffer.js\";\nimport clipLine from \"./line.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {merge} from \"d3-array\";\n\nvar clipMax = 1e9, clipMin = -clipMax;\n\n// TODO Use d3-polygon’s polygonContains here for the ring check?\n// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?\n\nexport default function clipRectangle(x0, y0, x1, y1) {\n\n function visible(x, y) {\n return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n }\n\n function interpolate(from, to, direction, stream) {\n var a = 0, a1 = 0;\n if (from == null\n || (a = corner(from, direction)) !== (a1 = corner(to, direction))\n || comparePoint(from, to) < 0 ^ direction > 0) {\n do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n while ((a = (a + direction + 4) % 4) !== a1);\n } else {\n stream.point(to[0], to[1]);\n }\n }\n\n function corner(p, direction) {\n return abs(p[0] - x0) < epsilon ? direction > 0 ? 0 : 3\n : abs(p[0] - x1) < epsilon ? direction > 0 ? 2 : 1\n : abs(p[1] - y0) < epsilon ? direction > 0 ? 1 : 0\n : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon\n }\n\n function compareIntersection(a, b) {\n return comparePoint(a.x, b.x);\n }\n\n function comparePoint(a, b) {\n var ca = corner(a, 1),\n cb = corner(b, 1);\n return ca !== cb ? ca - cb\n : ca === 0 ? b[1] - a[1]\n : ca === 1 ? a[0] - b[0]\n : ca === 2 ? a[1] - b[1]\n : b[0] - a[0];\n }\n\n return function(stream) {\n var activeStream = stream,\n bufferStream = clipBuffer(),\n segments,\n polygon,\n ring,\n x__, y__, v__, // first point\n x_, y_, v_, // previous point\n first,\n clean;\n\n var clipStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: polygonStart,\n polygonEnd: polygonEnd\n };\n\n function point(x, y) {\n if (visible(x, y)) activeStream.point(x, y);\n }\n\n function polygonInside() {\n var winding = 0;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {\n a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];\n if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; }\n else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; }\n }\n }\n\n return winding;\n }\n\n // Buffer geometry within a polygon and then clip it en masse.\n function polygonStart() {\n activeStream = bufferStream, segments = [], polygon = [], clean = true;\n }\n\n function polygonEnd() {\n var startInside = polygonInside(),\n cleanInside = clean && startInside,\n visible = (segments = merge(segments)).length;\n if (cleanInside || visible) {\n stream.polygonStart();\n if (cleanInside) {\n stream.lineStart();\n interpolate(null, null, 1, stream);\n stream.lineEnd();\n }\n if (visible) {\n clipRejoin(segments, compareIntersection, startInside, interpolate, stream);\n }\n stream.polygonEnd();\n }\n activeStream = stream, segments = polygon = ring = null;\n }\n\n function lineStart() {\n clipStream.point = linePoint;\n if (polygon) polygon.push(ring = []);\n first = true;\n v_ = false;\n x_ = y_ = NaN;\n }\n\n // TODO rather than special-case polygons, simply handle them separately.\n // Ideally, coincident intersection points should be jittered to avoid\n // clipping issues.\n function lineEnd() {\n if (segments) {\n linePoint(x__, y__);\n if (v__ && v_) bufferStream.rejoin();\n segments.push(bufferStream.result());\n }\n clipStream.point = point;\n if (v_) activeStream.lineEnd();\n }\n\n function linePoint(x, y) {\n var v = visible(x, y);\n if (polygon) ring.push([x, y]);\n if (first) {\n x__ = x, y__ = y, v__ = v;\n first = false;\n if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n }\n } else {\n if (v && v_) activeStream.point(x, y);\n else {\n var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],\n b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];\n if (clipLine(a, b, x0, y0, x1, y1)) {\n if (!v_) {\n activeStream.lineStart();\n activeStream.point(a[0], a[1]);\n }\n activeStream.point(b[0], b[1]);\n if (!v) activeStream.lineEnd();\n clean = false;\n } else if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n clean = false;\n }\n }\n }\n x_ = x, y_ = y, v_ = v;\n }\n\n return clipStream;\n };\n}\n","export default function(a, b, x0, y0, x1, y1) {\n var ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;\n if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;\n return true;\n}\n","import clipRectangle from \"./rectangle.js\";\n\nexport default function() {\n var x0 = 0,\n y0 = 0,\n x1 = 960,\n y1 = 500,\n cache,\n cacheStream,\n clip;\n\n return clip = {\n stream: function(stream) {\n return cache && cacheStream === stream ? cache : cache = clipRectangle(x0, y0, x1, y1)(cacheStream = stream);\n },\n extent: function(_) {\n return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], cache = cacheStream = null, clip) : [[x0, y0], [x1, y1]];\n }\n };\n}\n","import adder from \"./adder.js\";\nimport {abs, atan2, cos, radians, sin, sqrt} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nvar lengthSum = adder(),\n lambda0,\n sinPhi0,\n cosPhi0;\n\nvar lengthStream = {\n sphere: noop,\n point: noop,\n lineStart: lengthLineStart,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop\n};\n\nfunction lengthLineStart() {\n lengthStream.point = lengthPointFirst;\n lengthStream.lineEnd = lengthLineEnd;\n}\n\nfunction lengthLineEnd() {\n lengthStream.point = lengthStream.lineEnd = noop;\n}\n\nfunction lengthPointFirst(lambda, phi) {\n lambda *= radians, phi *= radians;\n lambda0 = lambda, sinPhi0 = sin(phi), cosPhi0 = cos(phi);\n lengthStream.point = lengthPoint;\n}\n\nfunction lengthPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var sinPhi = sin(phi),\n cosPhi = cos(phi),\n delta = abs(lambda - lambda0),\n cosDelta = cos(delta),\n sinDelta = sin(delta),\n x = cosPhi * sinDelta,\n y = cosPhi0 * sinPhi - sinPhi0 * cosPhi * cosDelta,\n z = sinPhi0 * sinPhi + cosPhi0 * cosPhi * cosDelta;\n lengthSum.add(atan2(sqrt(x * x + y * y), z));\n lambda0 = lambda, sinPhi0 = sinPhi, cosPhi0 = cosPhi;\n}\n\nexport default function(object) {\n lengthSum.reset();\n stream(object, lengthStream);\n return +lengthSum;\n}\n","import length from \"./length.js\";\n\nvar coordinates = [null, null],\n object = {type: \"LineString\", coordinates: coordinates};\n\nexport default function(a, b) {\n coordinates[0] = a;\n coordinates[1] = b;\n return length(object);\n}\n","import {default as polygonContains} from \"./polygonContains.js\";\nimport {default as distance} from \"./distance.js\";\nimport {epsilon2, radians} from \"./math.js\";\n\nvar containsObjectType = {\n Feature: function(object, point) {\n return containsGeometry(object.geometry, point);\n },\n FeatureCollection: function(object, point) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) if (containsGeometry(features[i].geometry, point)) return true;\n return false;\n }\n};\n\nvar containsGeometryType = {\n Sphere: function() {\n return true;\n },\n Point: function(object, point) {\n return containsPoint(object.coordinates, point);\n },\n MultiPoint: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsPoint(coordinates[i], point)) return true;\n return false;\n },\n LineString: function(object, point) {\n return containsLine(object.coordinates, point);\n },\n MultiLineString: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsLine(coordinates[i], point)) return true;\n return false;\n },\n Polygon: function(object, point) {\n return containsPolygon(object.coordinates, point);\n },\n MultiPolygon: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsPolygon(coordinates[i], point)) return true;\n return false;\n },\n GeometryCollection: function(object, point) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) if (containsGeometry(geometries[i], point)) return true;\n return false;\n }\n};\n\nfunction containsGeometry(geometry, point) {\n return geometry && containsGeometryType.hasOwnProperty(geometry.type)\n ? containsGeometryType[geometry.type](geometry, point)\n : false;\n}\n\nfunction containsPoint(coordinates, point) {\n return distance(coordinates, point) === 0;\n}\n\nfunction containsLine(coordinates, point) {\n var ao, bo, ab;\n for (var i = 0, n = coordinates.length; i < n; i++) {\n bo = distance(coordinates[i], point);\n if (bo === 0) return true;\n if (i > 0) {\n ab = distance(coordinates[i], coordinates[i - 1]);\n if (\n ab > 0 &&\n ao <= ab &&\n bo <= ab &&\n (ao + bo - ab) * (1 - Math.pow((ao - bo) / ab, 2)) < epsilon2 * ab\n )\n return true;\n }\n ao = bo;\n }\n return false;\n}\n\nfunction containsPolygon(coordinates, point) {\n return !!polygonContains(coordinates.map(ringRadians), pointRadians(point));\n}\n\nfunction ringRadians(ring) {\n return ring = ring.map(pointRadians), ring.pop(), ring;\n}\n\nfunction pointRadians(point) {\n return [point[0] * radians, point[1] * radians];\n}\n\nexport default function(object, point) {\n return (object && containsObjectType.hasOwnProperty(object.type)\n ? containsObjectType[object.type]\n : containsGeometry)(object, point);\n}\n","import {range} from \"d3-array\";\nimport {abs, ceil, epsilon} from \"./math.js\";\n\nfunction graticuleX(y0, y1, dy) {\n var y = range(y0, y1 - epsilon, dy).concat(y1);\n return function(x) { return y.map(function(y) { return [x, y]; }); };\n}\n\nfunction graticuleY(x0, x1, dx) {\n var x = range(x0, x1 - epsilon, dx).concat(x1);\n return function(y) { return x.map(function(x) { return [x, y]; }); };\n}\n\nexport default function graticule() {\n var x1, x0, X1, X0,\n y1, y0, Y1, Y0,\n dx = 10, dy = dx, DX = 90, DY = 360,\n x, y, X, Y,\n precision = 2.5;\n\n function graticule() {\n return {type: \"MultiLineString\", coordinates: lines()};\n }\n\n function lines() {\n return range(ceil(X0 / DX) * DX, X1, DX).map(X)\n .concat(range(ceil(Y0 / DY) * DY, Y1, DY).map(Y))\n .concat(range(ceil(x0 / dx) * dx, x1, dx).filter(function(x) { return abs(x % DX) > epsilon; }).map(x))\n .concat(range(ceil(y0 / dy) * dy, y1, dy).filter(function(y) { return abs(y % DY) > epsilon; }).map(y));\n }\n\n graticule.lines = function() {\n return lines().map(function(coordinates) { return {type: \"LineString\", coordinates: coordinates}; });\n };\n\n graticule.outline = function() {\n return {\n type: \"Polygon\",\n coordinates: [\n X(X0).concat(\n Y(Y1).slice(1),\n X(X1).reverse().slice(1),\n Y(Y0).reverse().slice(1))\n ]\n };\n };\n\n graticule.extent = function(_) {\n if (!arguments.length) return graticule.extentMinor();\n return graticule.extentMajor(_).extentMinor(_);\n };\n\n graticule.extentMajor = function(_) {\n if (!arguments.length) return [[X0, Y0], [X1, Y1]];\n X0 = +_[0][0], X1 = +_[1][0];\n Y0 = +_[0][1], Y1 = +_[1][1];\n if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n return graticule.precision(precision);\n };\n\n graticule.extentMinor = function(_) {\n if (!arguments.length) return [[x0, y0], [x1, y1]];\n x0 = +_[0][0], x1 = +_[1][0];\n y0 = +_[0][1], y1 = +_[1][1];\n if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n return graticule.precision(precision);\n };\n\n graticule.step = function(_) {\n if (!arguments.length) return graticule.stepMinor();\n return graticule.stepMajor(_).stepMinor(_);\n };\n\n graticule.stepMajor = function(_) {\n if (!arguments.length) return [DX, DY];\n DX = +_[0], DY = +_[1];\n return graticule;\n };\n\n graticule.stepMinor = function(_) {\n if (!arguments.length) return [dx, dy];\n dx = +_[0], dy = +_[1];\n return graticule;\n };\n\n graticule.precision = function(_) {\n if (!arguments.length) return precision;\n precision = +_;\n x = graticuleX(y0, y1, 90);\n y = graticuleY(x0, x1, precision);\n X = graticuleX(Y0, Y1, 90);\n Y = graticuleY(X0, X1, precision);\n return graticule;\n };\n\n return graticule\n .extentMajor([[-180, -90 + epsilon], [180, 90 - epsilon]])\n .extentMinor([[-180, -80 - epsilon], [180, 80 + epsilon]]);\n}\n\nexport function graticule10() {\n return graticule()();\n}\n","import {asin, atan2, cos, degrees, haversin, radians, sin, sqrt} from \"./math.js\";\n\nexport default function(a, b) {\n var x0 = a[0] * radians,\n y0 = a[1] * radians,\n x1 = b[0] * radians,\n y1 = b[1] * radians,\n cy0 = cos(y0),\n sy0 = sin(y0),\n cy1 = cos(y1),\n sy1 = sin(y1),\n kx0 = cy0 * cos(x0),\n ky0 = cy0 * sin(x0),\n kx1 = cy1 * cos(x1),\n ky1 = cy1 * sin(x1),\n d = 2 * asin(sqrt(haversin(y1 - y0) + cy0 * cy1 * haversin(x1 - x0))),\n k = sin(d);\n\n var interpolate = d ? function(t) {\n var B = sin(t *= d) / k,\n A = sin(d - t) / k,\n x = A * kx0 + B * kx1,\n y = A * ky0 + B * ky1,\n z = A * sy0 + B * sy1;\n return [\n atan2(y, x) * degrees,\n atan2(z, sqrt(x * x + y * y)) * degrees\n ];\n } : function() {\n return [x0 * degrees, y0 * degrees];\n };\n\n interpolate.distance = d;\n\n return interpolate;\n}\n","export default function(x) {\n return x;\n}\n","import adder from \"../adder.js\";\nimport {abs} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar areaSum = adder(),\n areaRingSum = adder(),\n x00,\n y00,\n x0,\n y0;\n\nvar areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop;\n areaSum.add(abs(areaRingSum));\n areaRingSum.reset();\n },\n result: function() {\n var area = areaSum / 2;\n areaSum.reset();\n return area;\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n areaStream.point = areaPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n areaRingSum.add(y0 * x - x0 * y);\n x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n areaPoint(x00, y00);\n}\n\nexport default areaStream;\n","import {sqrt} from \"../math.js\";\n\n// TODO Enforce positive area for exterior, negative area for interior?\n\nvar X0 = 0,\n Y0 = 0,\n Z0 = 0,\n X1 = 0,\n Y1 = 0,\n Z1 = 0,\n X2 = 0,\n Y2 = 0,\n Z2 = 0,\n x00,\n y00,\n x0,\n y0;\n\nvar centroidStream = {\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.point = centroidPoint;\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n },\n result: function() {\n var centroid = Z2 ? [X2 / Z2, Y2 / Z2]\n : Z1 ? [X1 / Z1, Y1 / Z1]\n : Z0 ? [X0 / Z0, Y0 / Z0]\n : [NaN, NaN];\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 =\n X2 = Y2 = Z2 = 0;\n return centroid;\n }\n};\n\nfunction centroidPoint(x, y) {\n X0 += x;\n Y0 += y;\n ++Z0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidPointFirstLine;\n}\n\nfunction centroidPointFirstLine(x, y) {\n centroidStream.point = centroidPointLine;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidPointLine(x, y) {\n var dx = x - x0, dy = y - y0, z = sqrt(dx * dx + dy * dy);\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingStart() {\n centroidStream.point = centroidPointFirstRing;\n}\n\nfunction centroidRingEnd() {\n centroidPointRing(x00, y00);\n}\n\nfunction centroidPointFirstRing(x, y) {\n centroidStream.point = centroidPointRing;\n centroidPoint(x00 = x0 = x, y00 = y0 = y);\n}\n\nfunction centroidPointRing(x, y) {\n var dx = x - x0,\n dy = y - y0,\n z = sqrt(dx * dx + dy * dy);\n\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n\n z = y0 * x - x0 * y;\n X2 += z * (x0 + x);\n Y2 += z * (y0 + y);\n Z2 += z * 3;\n centroidPoint(x0 = x, y0 = y);\n}\n\nexport default centroidStream;\n","import noop from \"../noop.js\";\n\nvar x0 = Infinity,\n y0 = x0,\n x1 = -x0,\n y1 = x1;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop,\n result: function() {\n var bounds = [[x0, y0], [x1, y1]];\n x1 = y1 = -(y0 = x0 = Infinity);\n return bounds;\n }\n};\n\nfunction boundsPoint(x, y) {\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n}\n\nexport default boundsStream;\n","import {tau} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nexport default function PathContext(context) {\n this._context = context;\n}\n\nPathContext.prototype = {\n _radius: 4.5,\n pointRadius: function(_) {\n return this._radius = _, this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._context.closePath();\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._context.moveTo(x, y);\n this._point = 1;\n break;\n }\n case 1: {\n this._context.lineTo(x, y);\n break;\n }\n default: {\n this._context.moveTo(x + this._radius, y);\n this._context.arc(x, y, this._radius, 0, tau);\n break;\n }\n }\n },\n result: noop\n};\n","import adder from \"../adder.js\";\nimport {sqrt} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar lengthSum = adder(),\n lengthRing,\n x00,\n y00,\n x0,\n y0;\n\nvar lengthStream = {\n point: noop,\n lineStart: function() {\n lengthStream.point = lengthPointFirst;\n },\n lineEnd: function() {\n if (lengthRing) lengthPoint(x00, y00);\n lengthStream.point = noop;\n },\n polygonStart: function() {\n lengthRing = true;\n },\n polygonEnd: function() {\n lengthRing = null;\n },\n result: function() {\n var length = +lengthSum;\n lengthSum.reset();\n return length;\n }\n};\n\nfunction lengthPointFirst(x, y) {\n lengthStream.point = lengthPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n x0 -= x, y0 -= y;\n lengthSum.add(sqrt(x0 * x0 + y0 * y0));\n x0 = x, y0 = y;\n}\n\nexport default lengthStream;\n","export default function PathString() {\n this._string = [];\n}\n\nPathString.prototype = {\n _radius: 4.5,\n _circle: circle(4.5),\n pointRadius: function(_) {\n if ((_ = +_) !== this._radius) this._radius = _, this._circle = null;\n return this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._string.push(\"Z\");\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._string.push(\"M\", x, \",\", y);\n this._point = 1;\n break;\n }\n case 1: {\n this._string.push(\"L\", x, \",\", y);\n break;\n }\n default: {\n if (this._circle == null) this._circle = circle(this._radius);\n this._string.push(\"M\", x, \",\", y, this._circle);\n break;\n }\n }\n },\n result: function() {\n if (this._string.length) {\n var result = this._string.join(\"\");\n this._string = [];\n return result;\n } else {\n return null;\n }\n }\n};\n\nfunction circle(radius) {\n return \"m0,\" + radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius\n + \"z\";\n}\n","import identity from \"../identity.js\";\nimport stream from \"../stream.js\";\nimport pathArea from \"./area.js\";\nimport pathBounds from \"./bounds.js\";\nimport pathCentroid from \"./centroid.js\";\nimport PathContext from \"./context.js\";\nimport pathMeasure from \"./measure.js\";\nimport PathString from \"./string.js\";\n\nexport default function(projection, context) {\n var pointRadius = 4.5,\n projectionStream,\n contextStream;\n\n function path(object) {\n if (object) {\n if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n stream(object, projectionStream(contextStream));\n }\n return contextStream.result();\n }\n\n path.area = function(object) {\n stream(object, projectionStream(pathArea));\n return pathArea.result();\n };\n\n path.measure = function(object) {\n stream(object, projectionStream(pathMeasure));\n return pathMeasure.result();\n };\n\n path.bounds = function(object) {\n stream(object, projectionStream(pathBounds));\n return pathBounds.result();\n };\n\n path.centroid = function(object) {\n stream(object, projectionStream(pathCentroid));\n return pathCentroid.result();\n };\n\n path.projection = function(_) {\n return arguments.length ? (projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream, path) : projection;\n };\n\n path.context = function(_) {\n if (!arguments.length) return context;\n contextStream = _ == null ? (context = null, new PathString) : new PathContext(context = _);\n if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n return path;\n };\n\n path.pointRadius = function(_) {\n if (!arguments.length) return pointRadius;\n pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n return path;\n };\n\n return path.projection(projection).context(context);\n}\n","export default function(methods) {\n return {\n stream: transformer(methods)\n };\n}\n\nexport function transformer(methods) {\n return function(stream) {\n var s = new TransformStream;\n for (var key in methods) s[key] = methods[key];\n s.stream = stream;\n return s;\n };\n}\n\nfunction TransformStream() {}\n\nTransformStream.prototype = {\n constructor: TransformStream,\n point: function(x, y) { this.stream.point(x, y); },\n sphere: function() { this.stream.sphere(); },\n lineStart: function() { this.stream.lineStart(); },\n lineEnd: function() { this.stream.lineEnd(); },\n polygonStart: function() { this.stream.polygonStart(); },\n polygonEnd: function() { this.stream.polygonEnd(); }\n};\n","import {default as geoStream} from \"../stream.js\";\nimport boundsStream from \"../path/bounds.js\";\n\nfunction fit(projection, fitBounds, object) {\n var clip = projection.clipExtent && projection.clipExtent();\n projection.scale(150).translate([0, 0]);\n if (clip != null) projection.clipExtent(null);\n geoStream(object, projection.stream(boundsStream));\n fitBounds(boundsStream.result());\n if (clip != null) projection.clipExtent(clip);\n return projection;\n}\n\nexport function fitExtent(projection, extent, object) {\n return fit(projection, function(b) {\n var w = extent[1][0] - extent[0][0],\n h = extent[1][1] - extent[0][1],\n k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),\n x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,\n y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nexport function fitSize(projection, size, object) {\n return fitExtent(projection, [[0, 0], size], object);\n}\n\nexport function fitWidth(projection, width, object) {\n return fit(projection, function(b) {\n var w = +width,\n k = w / (b[1][0] - b[0][0]),\n x = (w - k * (b[1][0] + b[0][0])) / 2,\n y = -k * b[0][1];\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nexport function fitHeight(projection, height, object) {\n return fit(projection, function(b) {\n var h = +height,\n k = h / (b[1][1] - b[0][1]),\n x = -k * b[0][0],\n y = (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n","import {cartesian} from \"../cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, radians, sqrt} from \"../math.js\";\nimport {transformer} from \"../transform.js\";\n\nvar maxDepth = 16, // maximum depth of subdivision\n cosMinDistance = cos(30 * radians); // cos(minimum angular distance)\n\nexport default function(project, delta2) {\n return +delta2 ? resample(project, delta2) : resampleNone(project);\n}\n\nfunction resampleNone(project) {\n return transformer({\n point: function(x, y) {\n x = project(x, y);\n this.stream.point(x[0], x[1]);\n }\n });\n}\n\nfunction resample(project, delta2) {\n\n function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n var dx = x1 - x0,\n dy = y1 - y0,\n d2 = dx * dx + dy * dy;\n if (d2 > 4 * delta2 && depth--) {\n var a = a0 + a1,\n b = b0 + b1,\n c = c0 + c1,\n m = sqrt(a * a + b * b + c * c),\n phi2 = asin(c /= m),\n lambda2 = abs(abs(c) - 1) < epsilon || abs(lambda0 - lambda1) < epsilon ? (lambda0 + lambda1) / 2 : atan2(b, a),\n p = project(lambda2, phi2),\n x2 = p[0],\n y2 = p[1],\n dx2 = x2 - x0,\n dy2 = y2 - y0,\n dz = dy * dx2 - dx * dy2;\n if (dz * dz / d2 > delta2 // perpendicular projected distance\n || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end\n || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n stream.point(x2, y2);\n resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n }\n }\n }\n return function(stream) {\n var lambda00, x00, y00, a00, b00, c00, // first point\n lambda0, x0, y0, a0, b0, c0; // previous point\n\n var resampleStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },\n polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }\n };\n\n function point(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n }\n\n function lineStart() {\n x0 = NaN;\n resampleStream.point = linePoint;\n stream.lineStart();\n }\n\n function linePoint(lambda, phi) {\n var c = cartesian([lambda, phi]), p = project(lambda, phi);\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n stream.point(x0, y0);\n }\n\n function lineEnd() {\n resampleStream.point = point;\n stream.lineEnd();\n }\n\n function ringStart() {\n lineStart();\n resampleStream.point = ringPoint;\n resampleStream.lineEnd = ringEnd;\n }\n\n function ringPoint(lambda, phi) {\n linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n resampleStream.point = linePoint;\n }\n\n function ringEnd() {\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);\n resampleStream.lineEnd = lineEnd;\n lineEnd();\n }\n\n return resampleStream;\n };\n}\n","import clipAntimeridian from \"../clip/antimeridian.js\";\nimport clipCircle from \"../clip/circle.js\";\nimport clipRectangle from \"../clip/rectangle.js\";\nimport compose from \"../compose.js\";\nimport identity from \"../identity.js\";\nimport {cos, degrees, radians, sin, sqrt} from \"../math.js\";\nimport {rotateRadians} from \"../rotation.js\";\nimport {transformer} from \"../transform.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\nimport resample from \"./resample.js\";\n\nvar transformRadians = transformer({\n point: function(x, y) {\n this.stream.point(x * radians, y * radians);\n }\n});\n\nfunction transformRotate(rotate) {\n return transformer({\n point: function(x, y) {\n var r = rotate(x, y);\n return this.stream.point(r[0], r[1]);\n }\n });\n}\n\nfunction scaleTranslate(k, dx, dy, sx, sy) {\n function transform(x, y) {\n x *= sx; y *= sy;\n return [dx + k * x, dy - k * y];\n }\n transform.invert = function(x, y) {\n return [(x - dx) / k * sx, (dy - y) / k * sy];\n };\n return transform;\n}\n\nfunction scaleTranslateRotate(k, dx, dy, sx, sy, alpha) {\n var cosAlpha = cos(alpha),\n sinAlpha = sin(alpha),\n a = cosAlpha * k,\n b = sinAlpha * k,\n ai = cosAlpha / k,\n bi = sinAlpha / k,\n ci = (sinAlpha * dy - cosAlpha * dx) / k,\n fi = (sinAlpha * dx + cosAlpha * dy) / k;\n function transform(x, y) {\n x *= sx; y *= sy;\n return [a * x - b * y + dx, dy - b * x - a * y];\n }\n transform.invert = function(x, y) {\n return [sx * (ai * x - bi * y + ci), sy * (fi - bi * x - ai * y)];\n };\n return transform;\n}\n\nexport default function projection(project) {\n return projectionMutator(function() { return project; })();\n}\n\nexport function projectionMutator(projectAt) {\n var project,\n k = 150, // scale\n x = 480, y = 250, // translate\n lambda = 0, phi = 0, // center\n deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, // pre-rotate\n alpha = 0, // post-rotate angle\n sx = 1, // reflectX\n sy = 1, // reflectX\n theta = null, preclip = clipAntimeridian, // pre-clip angle\n x0 = null, y0, x1, y1, postclip = identity, // post-clip extent\n delta2 = 0.5, // precision\n projectResample,\n projectTransform,\n projectRotateTransform,\n cache,\n cacheStream;\n\n function projection(point) {\n return projectRotateTransform(point[0] * radians, point[1] * radians);\n }\n\n function invert(point) {\n point = projectRotateTransform.invert(point[0], point[1]);\n return point && [point[0] * degrees, point[1] * degrees];\n }\n\n projection.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream)))));\n };\n\n projection.preclip = function(_) {\n return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip;\n };\n\n projection.postclip = function(_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n };\n\n projection.clipAngle = function(_) {\n return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees;\n };\n\n projection.clipExtent = function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n projection.scale = function(_) {\n return arguments.length ? (k = +_, recenter()) : k;\n };\n\n projection.translate = function(_) {\n return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];\n };\n\n projection.center = function(_) {\n return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees];\n };\n\n projection.rotate = function(_) {\n return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees];\n };\n\n projection.angle = function(_) {\n return arguments.length ? (alpha = _ % 360 * radians, recenter()) : alpha * degrees;\n };\n\n projection.reflectX = function(_) {\n return arguments.length ? (sx = _ ? -1 : 1, recenter()) : sx < 0;\n };\n\n projection.reflectY = function(_) {\n return arguments.length ? (sy = _ ? -1 : 1, recenter()) : sy < 0;\n };\n\n projection.precision = function(_) {\n return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2);\n };\n\n projection.fitExtent = function(extent, object) {\n return fitExtent(projection, extent, object);\n };\n\n projection.fitSize = function(size, object) {\n return fitSize(projection, size, object);\n };\n\n projection.fitWidth = function(width, object) {\n return fitWidth(projection, width, object);\n };\n\n projection.fitHeight = function(height, object) {\n return fitHeight(projection, height, object);\n };\n\n function recenter() {\n var center = scaleTranslateRotate(k, 0, 0, sx, sy, alpha).apply(null, project(lambda, phi)),\n transform = (alpha ? scaleTranslateRotate : scaleTranslate)(k, x - center[0], y - center[1], sx, sy, alpha);\n rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma);\n projectTransform = compose(project, transform);\n projectRotateTransform = compose(rotate, projectTransform);\n projectResample = resample(projectTransform, delta2);\n return reset();\n }\n\n function reset() {\n cache = cacheStream = null;\n return projection;\n }\n\n return function() {\n project = projectAt.apply(this, arguments);\n projection.invert = project.invert && invert;\n return recenter();\n };\n}\n","import {degrees, pi, radians} from \"../math.js\";\nimport {projectionMutator} from \"./index.js\";\n\nexport function conicProjection(projectAt) {\n var phi0 = 0,\n phi1 = pi / 3,\n m = projectionMutator(projectAt),\n p = m(phi0, phi1);\n\n p.parallels = function(_) {\n return arguments.length ? m(phi0 = _[0] * radians, phi1 = _[1] * radians) : [phi0 * degrees, phi1 * degrees];\n };\n\n return p;\n}\n","import {abs, asin, atan2, cos, epsilon, pi, sign, sin, sqrt} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {cylindricalEqualAreaRaw} from \"./cylindricalEqualArea.js\";\n\nexport function conicEqualAreaRaw(y0, y1) {\n var sy0 = sin(y0), n = (sy0 + sin(y1)) / 2;\n\n // Are the parallels symmetrical around the Equator?\n if (abs(n) < epsilon) return cylindricalEqualAreaRaw(y0);\n\n var c = 1 + sy0 * (2 * n - sy0), r0 = sqrt(c) / n;\n\n function project(x, y) {\n var r = sqrt(c - 2 * n * sin(y)) / n;\n return [r * sin(x *= n), r0 - r * cos(x)];\n }\n\n project.invert = function(x, y) {\n var r0y = r0 - y,\n l = atan2(x, abs(r0y)) * sign(r0y);\n if (r0y * n < 0)\n l -= pi * sign(x) * sign(r0y);\n return [l / n, asin((c - (x * x + r0y * r0y) * n * n) / (2 * n))];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicEqualAreaRaw)\n .scale(155.424)\n .center([0, 33.6442]);\n}\n","import {asin, cos, sin} from \"../math.js\";\n\nexport function cylindricalEqualAreaRaw(phi0) {\n var cosPhi0 = cos(phi0);\n\n function forward(lambda, phi) {\n return [lambda * cosPhi0, sin(phi) / cosPhi0];\n }\n\n forward.invert = function(x, y) {\n return [x / cosPhi0, asin(y * cosPhi0)];\n };\n\n return forward;\n}\n","import conicEqualArea from \"./conicEqualArea.js\";\n\nexport default function() {\n return conicEqualArea()\n .parallels([29.5, 45.5])\n .scale(1070)\n .translate([480, 250])\n .rotate([96, 0])\n .center([-0.6, 38.7]);\n}\n","import {epsilon} from \"../math.js\";\nimport albers from \"./albers.js\";\nimport conicEqualArea from \"./conicEqualArea.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\n\n// The projections must have mutually exclusive clip regions on the sphere,\n// as this will avoid emitting interleaving lines and polygons.\nfunction multiplex(streams) {\n var n = streams.length;\n return {\n point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); },\n sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); },\n lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); },\n lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); },\n polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); },\n polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); }\n };\n}\n\n// A composite projection for the United States, configured by default for\n// 960×500. The projection also works quite well at 960×600 if you change the\n// scale to 1285 and adjust the translate accordingly. The set of standard\n// parallels for each region comes from USGS, which is published here:\n// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers\nexport default function() {\n var cache,\n cacheStream,\n lower48 = albers(), lower48Point,\n alaska = conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338\n hawaii = conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007\n point, pointStream = {point: function(x, y) { point = [x, y]; }};\n\n function albersUsa(coordinates) {\n var x = coordinates[0], y = coordinates[1];\n return point = null,\n (lower48Point.point(x, y), point)\n || (alaskaPoint.point(x, y), point)\n || (hawaiiPoint.point(x, y), point);\n }\n\n albersUsa.invert = function(coordinates) {\n var k = lower48.scale(),\n t = lower48.translate(),\n x = (coordinates[0] - t[0]) / k,\n y = (coordinates[1] - t[1]) / k;\n return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska\n : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii\n : lower48).invert(coordinates);\n };\n\n albersUsa.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]);\n };\n\n albersUsa.precision = function(_) {\n if (!arguments.length) return lower48.precision();\n lower48.precision(_), alaska.precision(_), hawaii.precision(_);\n return reset();\n };\n\n albersUsa.scale = function(_) {\n if (!arguments.length) return lower48.scale();\n lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_);\n return albersUsa.translate(lower48.translate());\n };\n\n albersUsa.translate = function(_) {\n if (!arguments.length) return lower48.translate();\n var k = lower48.scale(), x = +_[0], y = +_[1];\n\n lower48Point = lower48\n .translate(_)\n .clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]])\n .stream(pointStream);\n\n alaskaPoint = alaska\n .translate([x - 0.307 * k, y + 0.201 * k])\n .clipExtent([[x - 0.425 * k + epsilon, y + 0.120 * k + epsilon], [x - 0.214 * k - epsilon, y + 0.234 * k - epsilon]])\n .stream(pointStream);\n\n hawaiiPoint = hawaii\n .translate([x - 0.205 * k, y + 0.212 * k])\n .clipExtent([[x - 0.214 * k + epsilon, y + 0.166 * k + epsilon], [x - 0.115 * k - epsilon, y + 0.234 * k - epsilon]])\n .stream(pointStream);\n\n return reset();\n };\n\n albersUsa.fitExtent = function(extent, object) {\n return fitExtent(albersUsa, extent, object);\n };\n\n albersUsa.fitSize = function(size, object) {\n return fitSize(albersUsa, size, object);\n };\n\n albersUsa.fitWidth = function(width, object) {\n return fitWidth(albersUsa, width, object);\n };\n\n albersUsa.fitHeight = function(height, object) {\n return fitHeight(albersUsa, height, object);\n };\n\n function reset() {\n cache = cacheStream = null;\n return albersUsa;\n }\n\n return albersUsa.scale(1070);\n}\n","import {asin, atan2, cos, sin, sqrt} from \"../math.js\";\n\nexport function azimuthalRaw(scale) {\n return function(x, y) {\n var cx = cos(x),\n cy = cos(y),\n k = scale(cx * cy);\n return [\n k * cy * sin(x),\n k * sin(y)\n ];\n }\n}\n\nexport function azimuthalInvert(angle) {\n return function(x, y) {\n var z = sqrt(x * x + y * y),\n c = angle(z),\n sc = sin(c),\n cc = cos(c);\n return [\n atan2(x * sc, z * cc),\n asin(z && y * sc / z)\n ];\n }\n}\n","import {asin, sqrt} from \"../math.js\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport var azimuthalEqualAreaRaw = azimuthalRaw(function(cxcy) {\n return sqrt(2 / (1 + cxcy));\n});\n\nazimuthalEqualAreaRaw.invert = azimuthalInvert(function(z) {\n return 2 * asin(z / 2);\n});\n\nexport default function() {\n return projection(azimuthalEqualAreaRaw)\n .scale(124.75)\n .clipAngle(180 - 1e-3);\n}\n","import {acos, sin} from \"../math.js\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport var azimuthalEquidistantRaw = azimuthalRaw(function(c) {\n return (c = acos(c)) && c / sin(c);\n});\n\nazimuthalEquidistantRaw.invert = azimuthalInvert(function(z) {\n return z;\n});\n\nexport default function() {\n return projection(azimuthalEquidistantRaw)\n .scale(79.4188)\n .clipAngle(180 - 1e-3);\n}\n","import {atan, exp, halfPi, log, pi, tan, tau} from \"../math.js\";\nimport rotation from \"../rotation.js\";\nimport projection from \"./index.js\";\n\nexport function mercatorRaw(lambda, phi) {\n return [lambda, log(tan((halfPi + phi) / 2))];\n}\n\nmercatorRaw.invert = function(x, y) {\n return [x, 2 * atan(exp(y)) - halfPi];\n};\n\nexport default function() {\n return mercatorProjection(mercatorRaw)\n .scale(961 / tau);\n}\n\nexport function mercatorProjection(project) {\n var m = projection(project),\n center = m.center,\n scale = m.scale,\n translate = m.translate,\n clipExtent = m.clipExtent,\n x0 = null, y0, x1, y1; // clip extent\n\n m.scale = function(_) {\n return arguments.length ? (scale(_), reclip()) : scale();\n };\n\n m.translate = function(_) {\n return arguments.length ? (translate(_), reclip()) : translate();\n };\n\n m.center = function(_) {\n return arguments.length ? (center(_), reclip()) : center();\n };\n\n m.clipExtent = function(_) {\n return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n function reclip() {\n var k = pi * scale(),\n t = m(rotation(m.rotate()).invert([0, 0]));\n return clipExtent(x0 == null\n ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw\n ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]]\n : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]);\n }\n\n return reclip();\n}\n","import {abs, atan, atan2, cos, epsilon, halfPi, log, pi, pow, sign, sin, sqrt, tan} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {mercatorRaw} from \"./mercator.js\";\n\nfunction tany(y) {\n return tan((halfPi + y) / 2);\n}\n\nexport function conicConformalRaw(y0, y1) {\n var cy0 = cos(y0),\n n = y0 === y1 ? sin(y0) : log(cy0 / cos(y1)) / log(tany(y1) / tany(y0)),\n f = cy0 * pow(tany(y0), n) / n;\n\n if (!n) return mercatorRaw;\n\n function project(x, y) {\n if (f > 0) { if (y < -halfPi + epsilon) y = -halfPi + epsilon; }\n else { if (y > halfPi - epsilon) y = halfPi - epsilon; }\n var r = f / pow(tany(y), n);\n return [r * sin(n * x), f - r * cos(n * x)];\n }\n\n project.invert = function(x, y) {\n var fy = f - y, r = sign(n) * sqrt(x * x + fy * fy),\n l = atan2(x, abs(fy)) * sign(fy);\n if (fy * n < 0)\n l -= pi * sign(x) * sign(fy);\n return [l / n, 2 * atan(pow(f / r, 1 / n)) - halfPi];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicConformalRaw)\n .scale(109.5)\n .parallels([30, 30]);\n}\n","import projection from \"./index.js\";\n\nexport function equirectangularRaw(lambda, phi) {\n return [lambda, phi];\n}\n\nequirectangularRaw.invert = equirectangularRaw;\n\nexport default function() {\n return projection(equirectangularRaw)\n .scale(152.63);\n}\n","import {abs, atan2, cos, epsilon, pi, sign, sin, sqrt} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {equirectangularRaw} from \"./equirectangular.js\";\n\nexport function conicEquidistantRaw(y0, y1) {\n var cy0 = cos(y0),\n n = y0 === y1 ? sin(y0) : (cy0 - cos(y1)) / (y1 - y0),\n g = cy0 / n + y0;\n\n if (abs(n) < epsilon) return equirectangularRaw;\n\n function project(x, y) {\n var gy = g - y, nx = n * x;\n return [gy * sin(nx), g - gy * cos(nx)];\n }\n\n project.invert = function(x, y) {\n var gy = g - y,\n l = atan2(x, abs(gy)) * sign(gy);\n if (gy * n < 0)\n l -= pi * sign(x) * sign(gy);\n return [l / n, g - sign(n) * sqrt(x * x + gy * gy)];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicEquidistantRaw)\n .scale(131.154)\n .center([0, 13.9389]);\n}\n","import projection from \"./index.js\";\nimport {abs, asin, cos, epsilon2, sin, sqrt} from \"../math.js\";\n\nvar A1 = 1.340264,\n A2 = -0.081106,\n A3 = 0.000893,\n A4 = 0.003796,\n M = sqrt(3) / 2,\n iterations = 12;\n\nexport function equalEarthRaw(lambda, phi) {\n var l = asin(M * sin(phi)), l2 = l * l, l6 = l2 * l2 * l2;\n return [\n lambda * cos(l) / (M * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2))),\n l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2))\n ];\n}\n\nequalEarthRaw.invert = function(x, y) {\n var l = y, l2 = l * l, l6 = l2 * l2 * l2;\n for (var i = 0, delta, fy, fpy; i < iterations; ++i) {\n fy = l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - y;\n fpy = A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2);\n l -= delta = fy / fpy, l2 = l * l, l6 = l2 * l2 * l2;\n if (abs(delta) < epsilon2) break;\n }\n return [\n M * x * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2)) / cos(l),\n asin(sin(l) / M)\n ];\n};\n\nexport default function() {\n return projection(equalEarthRaw)\n .scale(177.158);\n}\n","import {atan, cos, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function gnomonicRaw(x, y) {\n var cy = cos(y), k = cos(x) * cy;\n return [cy * sin(x) / k, sin(y) / k];\n}\n\ngnomonicRaw.invert = azimuthalInvert(atan);\n\nexport default function() {\n return projection(gnomonicRaw)\n .scale(144.049)\n .clipAngle(60);\n}\n","import clipRectangle from \"../clip/rectangle.js\";\nimport identity from \"../identity.js\";\nimport {transformer} from \"../transform.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\nimport {cos, degrees, radians, sin} from \"../math.js\";\n\nexport default function() {\n var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, // scale, translate and reflect\n alpha = 0, ca, sa, // angle\n x0 = null, y0, x1, y1, // clip extent\n kx = 1, ky = 1,\n transform = transformer({\n point: function(x, y) {\n var p = projection([x, y])\n this.stream.point(p[0], p[1]);\n }\n }),\n postclip = identity,\n cache,\n cacheStream;\n\n function reset() {\n kx = k * sx;\n ky = k * sy;\n cache = cacheStream = null;\n return projection;\n }\n\n function projection (p) {\n var x = p[0] * kx, y = p[1] * ky;\n if (alpha) {\n var t = y * ca - x * sa;\n x = x * ca + y * sa;\n y = t;\n } \n return [x + tx, y + ty];\n }\n projection.invert = function(p) {\n var x = p[0] - tx, y = p[1] - ty;\n if (alpha) {\n var t = y * ca + x * sa;\n x = x * ca - y * sa;\n y = t;\n }\n return [x / kx, y / ky];\n };\n projection.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = transform(postclip(cacheStream = stream));\n };\n projection.postclip = function(_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n };\n projection.clipExtent = function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n projection.scale = function(_) {\n return arguments.length ? (k = +_, reset()) : k;\n };\n projection.translate = function(_) {\n return arguments.length ? (tx = +_[0], ty = +_[1], reset()) : [tx, ty];\n }\n projection.angle = function(_) {\n return arguments.length ? (alpha = _ % 360 * radians, sa = sin(alpha), ca = cos(alpha), reset()) : alpha * degrees;\n };\n projection.reflectX = function(_) {\n return arguments.length ? (sx = _ ? -1 : 1, reset()) : sx < 0;\n };\n projection.reflectY = function(_) {\n return arguments.length ? (sy = _ ? -1 : 1, reset()) : sy < 0;\n };\n projection.fitExtent = function(extent, object) {\n return fitExtent(projection, extent, object);\n };\n projection.fitSize = function(size, object) {\n return fitSize(projection, size, object);\n };\n projection.fitWidth = function(width, object) {\n return fitWidth(projection, width, object);\n };\n projection.fitHeight = function(height, object) {\n return fitHeight(projection, height, object);\n };\n\n return projection;\n}\n","import projection from \"./index.js\";\nimport {abs, epsilon} from \"../math.js\";\n\nexport function naturalEarth1Raw(lambda, phi) {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n return [\n lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))),\n phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4)))\n ];\n}\n\nnaturalEarth1Raw.invert = function(x, y) {\n var phi = y, i = 25, delta;\n do {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) /\n (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4)));\n } while (abs(delta) > epsilon && --i > 0);\n return [\n x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))),\n phi\n ];\n};\n\nexport default function() {\n return projection(naturalEarth1Raw)\n .scale(175.295);\n}\n","import {asin, cos, epsilon, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function orthographicRaw(x, y) {\n return [cos(y) * sin(x), sin(y)];\n}\n\northographicRaw.invert = azimuthalInvert(asin);\n\nexport default function() {\n return projection(orthographicRaw)\n .scale(249.5)\n .clipAngle(90 + epsilon);\n}\n","import {atan, cos, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function stereographicRaw(x, y) {\n var cy = cos(y), k = 1 + cos(x) * cy;\n return [cy * sin(x) / k, sin(y) / k];\n}\n\nstereographicRaw.invert = azimuthalInvert(function(z) {\n return 2 * atan(z);\n});\n\nexport default function() {\n return projection(stereographicRaw)\n .scale(250)\n .clipAngle(142);\n}\n","import {atan, exp, halfPi, log, tan} from \"../math.js\";\nimport {mercatorProjection} from \"./mercator.js\";\n\nexport function transverseMercatorRaw(lambda, phi) {\n return [log(tan((halfPi + phi) / 2)), -lambda];\n}\n\ntransverseMercatorRaw.invert = function(x, y) {\n return [-y, 2 * atan(exp(x)) - halfPi];\n};\n\nexport default function() {\n var m = mercatorProjection(transverseMercatorRaw),\n center = m.center,\n rotate = m.rotate;\n\n m.center = function(_) {\n return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]);\n };\n\n m.rotate = function(_) {\n return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]);\n };\n\n return rotate([0, 0, 90])\n .scale(159.155);\n}\n","function defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\nfunction meanX(children) {\n return children.reduce(meanXReduce, 0) / children.length;\n}\n\nfunction meanXReduce(x, c) {\n return x + c.x;\n}\n\nfunction maxY(children) {\n return 1 + children.reduce(maxYReduce, 0);\n}\n\nfunction maxYReduce(y, c) {\n return Math.max(y, c.y);\n}\n\nfunction leafLeft(node) {\n var children;\n while (children = node.children) node = children[0];\n return node;\n}\n\nfunction leafRight(node) {\n var children;\n while (children = node.children) node = children[children.length - 1];\n return node;\n}\n\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = false;\n\n function cluster(root) {\n var previousNode,\n x = 0;\n\n // First walk, computing the initial x & y values.\n root.eachAfter(function(node) {\n var children = node.children;\n if (children) {\n node.x = meanX(children);\n node.y = maxY(children);\n } else {\n node.x = previousNode ? x += separation(node, previousNode) : 0;\n node.y = 0;\n previousNode = node;\n }\n });\n\n var left = leafLeft(root),\n right = leafRight(root),\n x0 = left.x - separation(left, right) / 2,\n x1 = right.x + separation(right, left) / 2;\n\n // Second walk, normalizing x & y to the desired size.\n return root.eachAfter(nodeSize ? function(node) {\n node.x = (node.x - root.x) * dx;\n node.y = (root.y - node.y) * dy;\n } : function(node) {\n node.x = (node.x - x0) / (x1 - x0) * dx;\n node.y = (1 - (root.y ? node.y / root.y : 1)) * dy;\n });\n }\n\n cluster.separation = function(x) {\n return arguments.length ? (separation = x, cluster) : separation;\n };\n\n cluster.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? null : [dx, dy]);\n };\n\n cluster.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? [dx, dy] : null);\n };\n\n return cluster;\n}\n","function count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;\n else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\n\nexport default function() {\n return this.eachAfter(count);\n}\n","import node_count from \"./count.js\";\nimport node_each from \"./each.js\";\nimport node_eachBefore from \"./eachBefore.js\";\nimport node_eachAfter from \"./eachAfter.js\";\nimport node_sum from \"./sum.js\";\nimport node_sort from \"./sort.js\";\nimport node_path from \"./path.js\";\nimport node_ancestors from \"./ancestors.js\";\nimport node_descendants from \"./descendants.js\";\nimport node_leaves from \"./leaves.js\";\nimport node_links from \"./links.js\";\n\nexport default function hierarchy(data, children) {\n var root = new Node(data),\n valued = +data.value && (root.value = data.value),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n\n if (children == null) children = defaultChildren;\n\n while (node = nodes.pop()) {\n if (valued) node.value = +node.data.value;\n if ((childs = children(node.data)) && (n = childs.length)) {\n node.children = new Array(n);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new Node(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n\n return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n return hierarchy(this).eachBefore(copyData);\n}\n\nfunction defaultChildren(d) {\n return d.children;\n}\n\nfunction copyData(node) {\n node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n var height = 0;\n do node.height = height;\n while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n this.data = data;\n this.depth =\n this.height = 0;\n this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n constructor: Node,\n count: node_count,\n each: node_each,\n eachAfter: node_eachAfter,\n eachBefore: node_eachBefore,\n sum: node_sum,\n sort: node_sort,\n path: node_path,\n ancestors: node_ancestors,\n descendants: node_descendants,\n leaves: node_leaves,\n links: node_links,\n copy: node_copy\n};\n","export default function(callback) {\n var node = this, current, next = [node], children, i, n;\n do {\n current = next.reverse(), next = [];\n while (node = current.pop()) {\n callback(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n } while (next.length);\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], next = [], children, i, n;\n while (node = nodes.pop()) {\n next.push(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n while (node = next.pop()) {\n callback(node);\n }\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], children, i;\n while (node = nodes.pop()) {\n callback(node), children = node.children;\n if (children) for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n return this;\n}\n","export default function(value) {\n return this.eachAfter(function(node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}\n","export default function(compare) {\n return this.eachBefore(function(node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}\n","export default function(end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}\n","export default function() {\n var node = this, nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}\n","export default function() {\n var nodes = [];\n this.each(function(node) {\n nodes.push(node);\n });\n return nodes;\n}\n","export default function() {\n var leaves = [];\n this.eachBefore(function(node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}\n","export default function() {\n var root = this, links = [];\n root.each(function(node) {\n if (node !== root) { // Don’t include the root’s parent, if any.\n links.push({source: node.parent, target: node});\n }\n });\n return links;\n}\n","export var slice = Array.prototype.slice;\n\nexport function shuffle(array) {\n var m = array.length,\n t,\n i;\n\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m];\n array[m] = array[i];\n array[i] = t;\n }\n\n return array;\n}\n","import {shuffle, slice} from \"../array.js\";\n\nexport default function(circles) {\n var i = 0, n = (circles = shuffle(slice.call(circles))).length, B = [], p, e;\n\n while (i < n) {\n p = circles[i];\n if (e && enclosesWeak(e, p)) ++i;\n else e = encloseBasis(B = extendBasis(B, p)), i = 0;\n }\n\n return e;\n}\n\nfunction extendBasis(B, p) {\n var i, j;\n\n if (enclosesWeakAll(p, B)) return [p];\n\n // If we get here then B must have at least one element.\n for (i = 0; i < B.length; ++i) {\n if (enclosesNot(p, B[i])\n && enclosesWeakAll(encloseBasis2(B[i], p), B)) {\n return [B[i], p];\n }\n }\n\n // If we get here then B must have at least two elements.\n for (i = 0; i < B.length - 1; ++i) {\n for (j = i + 1; j < B.length; ++j) {\n if (enclosesNot(encloseBasis2(B[i], B[j]), p)\n && enclosesNot(encloseBasis2(B[i], p), B[j])\n && enclosesNot(encloseBasis2(B[j], p), B[i])\n && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) {\n return [B[i], B[j], p];\n }\n }\n }\n\n // If we get here then something is very wrong.\n throw new Error;\n}\n\nfunction enclosesNot(a, b) {\n var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y;\n return dr < 0 || dr * dr < dx * dx + dy * dy;\n}\n\nfunction enclosesWeak(a, b) {\n var dr = a.r - b.r + 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction enclosesWeakAll(a, B) {\n for (var i = 0; i < B.length; ++i) {\n if (!enclosesWeak(a, B[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction encloseBasis(B) {\n switch (B.length) {\n case 1: return encloseBasis1(B[0]);\n case 2: return encloseBasis2(B[0], B[1]);\n case 3: return encloseBasis3(B[0], B[1], B[2]);\n }\n}\n\nfunction encloseBasis1(a) {\n return {\n x: a.x,\n y: a.y,\n r: a.r\n };\n}\n\nfunction encloseBasis2(a, b) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1,\n l = Math.sqrt(x21 * x21 + y21 * y21);\n return {\n x: (x1 + x2 + x21 / l * r21) / 2,\n y: (y1 + y2 + y21 / l * r21) / 2,\n r: (l + r1 + r2) / 2\n };\n}\n\nfunction encloseBasis3(a, b, c) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x3 = c.x, y3 = c.y, r3 = c.r,\n a2 = x1 - x2,\n a3 = x1 - x3,\n b2 = y1 - y2,\n b3 = y1 - y3,\n c2 = r2 - r1,\n c3 = r3 - r1,\n d1 = x1 * x1 + y1 * y1 - r1 * r1,\n d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2,\n d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3,\n ab = a3 * b2 - a2 * b3,\n xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1,\n xb = (b3 * c2 - b2 * c3) / ab,\n ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1,\n yb = (a2 * c3 - a3 * c2) / ab,\n A = xb * xb + yb * yb - 1,\n B = 2 * (r1 + xa * xb + ya * yb),\n C = xa * xa + ya * ya - r1 * r1,\n r = -(A ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B);\n return {\n x: x1 + xa + xb * r,\n y: y1 + ya + yb * r,\n r: r\n };\n}\n","import enclose from \"./enclose.js\";\n\nfunction place(b, a, c) {\n var dx = b.x - a.x, x, a2,\n dy = b.y - a.y, y, b2,\n d2 = dx * dx + dy * dy;\n if (d2) {\n a2 = a.r + c.r, a2 *= a2;\n b2 = b.r + c.r, b2 *= b2;\n if (a2 > b2) {\n x = (d2 + b2 - a2) / (2 * d2);\n y = Math.sqrt(Math.max(0, b2 / d2 - x * x));\n c.x = b.x - x * dx - y * dy;\n c.y = b.y - x * dy + y * dx;\n } else {\n x = (d2 + a2 - b2) / (2 * d2);\n y = Math.sqrt(Math.max(0, a2 / d2 - x * x));\n c.x = a.x + x * dx - y * dy;\n c.y = a.y + x * dy + y * dx;\n }\n } else {\n c.x = a.x + c.r;\n c.y = a.y;\n }\n}\n\nfunction intersects(a, b) {\n var dr = a.r + b.r - 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction score(node) {\n var a = node._,\n b = node.next._,\n ab = a.r + b.r,\n dx = (a.x * b.r + b.x * a.r) / ab,\n dy = (a.y * b.r + b.y * a.r) / ab;\n return dx * dx + dy * dy;\n}\n\nfunction Node(circle) {\n this._ = circle;\n this.next = null;\n this.previous = null;\n}\n\nexport function packEnclose(circles) {\n if (!(n = circles.length)) return 0;\n\n var a, b, c, n, aa, ca, i, j, k, sj, sk;\n\n // Place the first circle.\n a = circles[0], a.x = 0, a.y = 0;\n if (!(n > 1)) return a.r;\n\n // Place the second circle.\n b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0;\n if (!(n > 2)) return a.r + b.r;\n\n // Place the third circle.\n place(b, a, c = circles[2]);\n\n // Initialize the front-chain using the first three circles a, b and c.\n a = new Node(a), b = new Node(b), c = new Node(c);\n a.next = c.previous = b;\n b.next = a.previous = c;\n c.next = b.previous = a;\n\n // Attempt to place each remaining circle…\n pack: for (i = 3; i < n; ++i) {\n place(a._, b._, c = circles[i]), c = new Node(c);\n\n // Find the closest intersecting circle on the front-chain, if any.\n // “Closeness” is determined by linear distance along the front-chain.\n // “Ahead” or “behind” is likewise determined by linear distance.\n j = b.next, k = a.previous, sj = b._.r, sk = a._.r;\n do {\n if (sj <= sk) {\n if (intersects(j._, c._)) {\n b = j, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sj += j._.r, j = j.next;\n } else {\n if (intersects(k._, c._)) {\n a = k, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sk += k._.r, k = k.previous;\n }\n } while (j !== k.next);\n\n // Success! Insert the new circle c between a and b.\n c.previous = a, c.next = b, a.next = b.previous = b = c;\n\n // Compute the new closest circle pair to the centroid.\n aa = score(a);\n while ((c = c.next) !== b) {\n if ((ca = score(c)) < aa) {\n a = c, aa = ca;\n }\n }\n b = a.next;\n }\n\n // Compute the enclosing circle of the front chain.\n a = [b._], c = b; while ((c = c.next) !== b) a.push(c._); c = enclose(a);\n\n // Translate the circles to put the enclosing circle around the origin.\n for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y;\n\n return c.r;\n}\n\nexport default function(circles) {\n packEnclose(circles);\n return circles;\n}\n","export function optional(f) {\n return f == null ? null : required(f);\n}\n\nexport function required(f) {\n if (typeof f !== \"function\") throw new Error;\n return f;\n}\n","export function constantZero() {\n return 0;\n}\n\nexport default function(x) {\n return function() {\n return x;\n };\n}\n","import {packEnclose} from \"./siblings.js\";\nimport {optional} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\n\nfunction defaultRadius(d) {\n return Math.sqrt(d.value);\n}\n\nexport default function() {\n var radius = null,\n dx = 1,\n dy = 1,\n padding = constantZero;\n\n function pack(root) {\n root.x = dx / 2, root.y = dy / 2;\n if (radius) {\n root.eachBefore(radiusLeaf(radius))\n .eachAfter(packChildren(padding, 0.5))\n .eachBefore(translateChild(1));\n } else {\n root.eachBefore(radiusLeaf(defaultRadius))\n .eachAfter(packChildren(constantZero, 1))\n .eachAfter(packChildren(padding, root.r / Math.min(dx, dy)))\n .eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r)));\n }\n return root;\n }\n\n pack.radius = function(x) {\n return arguments.length ? (radius = optional(x), pack) : radius;\n };\n\n pack.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy];\n };\n\n pack.padding = function(x) {\n return arguments.length ? (padding = typeof x === \"function\" ? x : constant(+x), pack) : padding;\n };\n\n return pack;\n}\n\nfunction radiusLeaf(radius) {\n return function(node) {\n if (!node.children) {\n node.r = Math.max(0, +radius(node) || 0);\n }\n };\n}\n\nfunction packChildren(padding, k) {\n return function(node) {\n if (children = node.children) {\n var children,\n i,\n n = children.length,\n r = padding(node) * k || 0,\n e;\n\n if (r) for (i = 0; i < n; ++i) children[i].r += r;\n e = packEnclose(children);\n if (r) for (i = 0; i < n; ++i) children[i].r -= r;\n node.r = e + r;\n }\n };\n}\n\nfunction translateChild(k) {\n return function(node) {\n var parent = node.parent;\n node.r *= k;\n if (parent) {\n node.x = parent.x + k * node.x;\n node.y = parent.y + k * node.y;\n }\n };\n}\n","export default function(node) {\n node.x0 = Math.round(node.x0);\n node.y0 = Math.round(node.y0);\n node.x1 = Math.round(node.x1);\n node.y1 = Math.round(node.y1);\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (x1 - x0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.y0 = y0, node.y1 = y1;\n node.x0 = x0, node.x1 = x0 += node.value * k;\n }\n}\n","import roundNode from \"./treemap/round.js\";\nimport treemapDice from \"./treemap/dice.js\";\n\nexport default function() {\n var dx = 1,\n dy = 1,\n padding = 0,\n round = false;\n\n function partition(root) {\n var n = root.height + 1;\n root.x0 =\n root.y0 = padding;\n root.x1 = dx;\n root.y1 = dy / n;\n root.eachBefore(positionNode(dy, n));\n if (round) root.eachBefore(roundNode);\n return root;\n }\n\n function positionNode(dy, n) {\n return function(node) {\n if (node.children) {\n treemapDice(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n);\n }\n var x0 = node.x0,\n y0 = node.y0,\n x1 = node.x1 - padding,\n y1 = node.y1 - padding;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n };\n }\n\n partition.round = function(x) {\n return arguments.length ? (round = !!x, partition) : round;\n };\n\n partition.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy];\n };\n\n partition.padding = function(x) {\n return arguments.length ? (padding = +x, partition) : padding;\n };\n\n return partition;\n}\n","import {required} from \"./accessors.js\";\nimport {Node, computeHeight} from \"./hierarchy/index.js\";\n\nvar keyPrefix = \"$\", // Protect against keys like “__proto__”.\n preroot = {depth: -1},\n ambiguous = {};\n\nfunction defaultId(d) {\n return d.id;\n}\n\nfunction defaultParentId(d) {\n return d.parentId;\n}\n\nexport default function() {\n var id = defaultId,\n parentId = defaultParentId;\n\n function stratify(data) {\n var d,\n i,\n n = data.length,\n root,\n parent,\n node,\n nodes = new Array(n),\n nodeId,\n nodeKey,\n nodeByKey = {};\n\n for (i = 0; i < n; ++i) {\n d = data[i], node = nodes[i] = new Node(d);\n if ((nodeId = id(d, i, data)) != null && (nodeId += \"\")) {\n nodeKey = keyPrefix + (node.id = nodeId);\n nodeByKey[nodeKey] = nodeKey in nodeByKey ? ambiguous : node;\n }\n }\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], nodeId = parentId(data[i], i, data);\n if (nodeId == null || !(nodeId += \"\")) {\n if (root) throw new Error(\"multiple roots\");\n root = node;\n } else {\n parent = nodeByKey[keyPrefix + nodeId];\n if (!parent) throw new Error(\"missing: \" + nodeId);\n if (parent === ambiguous) throw new Error(\"ambiguous: \" + nodeId);\n if (parent.children) parent.children.push(node);\n else parent.children = [node];\n node.parent = parent;\n }\n }\n\n if (!root) throw new Error(\"no root\");\n root.parent = preroot;\n root.eachBefore(function(node) { node.depth = node.parent.depth + 1; --n; }).eachBefore(computeHeight);\n root.parent = null;\n if (n > 0) throw new Error(\"cycle\");\n\n return root;\n }\n\n stratify.id = function(x) {\n return arguments.length ? (id = required(x), stratify) : id;\n };\n\n stratify.parentId = function(x) {\n return arguments.length ? (parentId = required(x), stratify) : parentId;\n };\n\n return stratify;\n}\n","import {Node} from \"./hierarchy/index.js\";\n\nfunction defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\n// function radialSeparation(a, b) {\n// return (a.parent === b.parent ? 1 : 2) / a.depth;\n// }\n\n// This function is used to traverse the left contour of a subtree (or\n// subforest). It returns the successor of v on this contour. This successor is\n// either given by the leftmost child of v or by the thread of v. The function\n// returns null if and only if v is on the highest level of its subtree.\nfunction nextLeft(v) {\n var children = v.children;\n return children ? children[0] : v.t;\n}\n\n// This function works analogously to nextLeft.\nfunction nextRight(v) {\n var children = v.children;\n return children ? children[children.length - 1] : v.t;\n}\n\n// Shifts the current subtree rooted at w+. This is done by increasing\n// prelim(w+) and mod(w+) by shift.\nfunction moveSubtree(wm, wp, shift) {\n var change = shift / (wp.i - wm.i);\n wp.c -= change;\n wp.s += shift;\n wm.c += change;\n wp.z += shift;\n wp.m += shift;\n}\n\n// All other shifts, applied to the smaller subtrees between w- and w+, are\n// performed by this function. To prepare the shifts, we have to adjust\n// change(w+), shift(w+), and change(w-).\nfunction executeShifts(v) {\n var shift = 0,\n change = 0,\n children = v.children,\n i = children.length,\n w;\n while (--i >= 0) {\n w = children[i];\n w.z += shift;\n w.m += shift;\n shift += w.s + (change += w.c);\n }\n}\n\n// If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise,\n// returns the specified (default) ancestor.\nfunction nextAncestor(vim, v, ancestor) {\n return vim.a.parent === v.parent ? vim.a : ancestor;\n}\n\nfunction TreeNode(node, i) {\n this._ = node;\n this.parent = null;\n this.children = null;\n this.A = null; // default ancestor\n this.a = this; // ancestor\n this.z = 0; // prelim\n this.m = 0; // mod\n this.c = 0; // change\n this.s = 0; // shift\n this.t = null; // thread\n this.i = i; // number\n}\n\nTreeNode.prototype = Object.create(Node.prototype);\n\nfunction treeRoot(root) {\n var tree = new TreeNode(root, 0),\n node,\n nodes = [tree],\n child,\n children,\n i,\n n;\n\n while (node = nodes.pop()) {\n if (children = node._.children) {\n node.children = new Array(n = children.length);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new TreeNode(children[i], i));\n child.parent = node;\n }\n }\n }\n\n (tree.parent = new TreeNode(null, 0)).children = [tree];\n return tree;\n}\n\n// Node-link tree diagram using the Reingold-Tilford \"tidy\" algorithm\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = null;\n\n function tree(root) {\n var t = treeRoot(root);\n\n // Compute the layout using Buchheim et al.’s algorithm.\n t.eachAfter(firstWalk), t.parent.m = -t.z;\n t.eachBefore(secondWalk);\n\n // If a fixed node size is specified, scale x and y.\n if (nodeSize) root.eachBefore(sizeNode);\n\n // If a fixed tree size is specified, scale x and y based on the extent.\n // Compute the left-most, right-most, and depth-most nodes for extents.\n else {\n var left = root,\n right = root,\n bottom = root;\n root.eachBefore(function(node) {\n if (node.x < left.x) left = node;\n if (node.x > right.x) right = node;\n if (node.depth > bottom.depth) bottom = node;\n });\n var s = left === right ? 1 : separation(left, right) / 2,\n tx = s - left.x,\n kx = dx / (right.x + s + tx),\n ky = dy / (bottom.depth || 1);\n root.eachBefore(function(node) {\n node.x = (node.x + tx) * kx;\n node.y = node.depth * ky;\n });\n }\n\n return root;\n }\n\n // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is\n // applied recursively to the children of v, as well as the function\n // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the\n // node v is placed to the midpoint of its outermost children.\n function firstWalk(v) {\n var children = v.children,\n siblings = v.parent.children,\n w = v.i ? siblings[v.i - 1] : null;\n if (children) {\n executeShifts(v);\n var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n if (w) {\n v.z = w.z + separation(v._, w._);\n v.m = v.z - midpoint;\n } else {\n v.z = midpoint;\n }\n } else if (w) {\n v.z = w.z + separation(v._, w._);\n }\n v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n }\n\n // Computes all real x-coordinates by summing up the modifiers recursively.\n function secondWalk(v) {\n v._.x = v.z + v.parent.m;\n v.m += v.parent.m;\n }\n\n // The core of the algorithm. Here, a new subtree is combined with the\n // previous subtrees. Threads are used to traverse the inside and outside\n // contours of the left and right subtree up to the highest common level. The\n // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the\n // superscript o means outside and i means inside, the subscript - means left\n // subtree and + means right subtree. For summing up the modifiers along the\n // contour, we use respective variables si+, si-, so-, and so+. Whenever two\n // nodes of the inside contours conflict, we compute the left one of the\n // greatest uncommon ancestors using the function ANCESTOR and call MOVE\n // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees.\n // Finally, we add a new thread (if necessary).\n function apportion(v, w, ancestor) {\n if (w) {\n var vip = v,\n vop = v,\n vim = w,\n vom = vip.parent.children[0],\n sip = vip.m,\n sop = vop.m,\n sim = vim.m,\n som = vom.m,\n shift;\n while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) {\n vom = nextLeft(vom);\n vop = nextRight(vop);\n vop.a = v;\n shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n if (shift > 0) {\n moveSubtree(nextAncestor(vim, v, ancestor), v, shift);\n sip += shift;\n sop += shift;\n }\n sim += vim.m;\n sip += vip.m;\n som += vom.m;\n sop += vop.m;\n }\n if (vim && !nextRight(vop)) {\n vop.t = vim;\n vop.m += sim - sop;\n }\n if (vip && !nextLeft(vom)) {\n vom.t = vip;\n vom.m += sip - som;\n ancestor = v;\n }\n }\n return ancestor;\n }\n\n function sizeNode(node) {\n node.x *= dx;\n node.y = node.depth * dy;\n }\n\n tree.separation = function(x) {\n return arguments.length ? (separation = x, tree) : separation;\n };\n\n tree.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]);\n };\n\n tree.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null);\n };\n\n return tree;\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (y1 - y0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.x0 = x0, node.x1 = x1;\n node.y0 = y0, node.y1 = y0 += node.value * k;\n }\n}\n","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\n\nexport var phi = (1 + Math.sqrt(5)) / 2;\n\nexport function squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n var rows = [],\n nodes = parent.children,\n row,\n nodeValue,\n i0 = 0,\n i1 = 0,\n n = nodes.length,\n dx, dy,\n value = parent.value,\n sumValue,\n minValue,\n maxValue,\n newRatio,\n minRatio,\n alpha,\n beta;\n\n while (i0 < n) {\n dx = x1 - x0, dy = y1 - y0;\n\n // Find the next non-empty node.\n do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);\n minValue = maxValue = sumValue;\n alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n beta = sumValue * sumValue * alpha;\n minRatio = Math.max(maxValue / beta, beta / minValue);\n\n // Keep adding nodes while the aspect ratio maintains or improves.\n for (; i1 < n; ++i1) {\n sumValue += nodeValue = nodes[i1].value;\n if (nodeValue < minValue) minValue = nodeValue;\n if (nodeValue > maxValue) maxValue = nodeValue;\n beta = sumValue * sumValue * alpha;\n newRatio = Math.max(maxValue / beta, beta / minValue);\n if (newRatio > minRatio) { sumValue -= nodeValue; break; }\n minRatio = newRatio;\n }\n\n // Position and record the row orientation.\n rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)});\n if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);\n else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n value -= sumValue, i0 = i1;\n }\n\n return rows;\n}\n\nexport default (function custom(ratio) {\n\n function squarify(parent, x0, y0, x1, y1) {\n squarifyRatio(ratio, parent, x0, y0, x1, y1);\n }\n\n squarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return squarify;\n})(phi);\n","import roundNode from \"./round.js\";\nimport squarify from \"./squarify.js\";\nimport {required} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\n\nexport default function() {\n var tile = squarify,\n round = false,\n dx = 1,\n dy = 1,\n paddingStack = [0],\n paddingInner = constantZero,\n paddingTop = constantZero,\n paddingRight = constantZero,\n paddingBottom = constantZero,\n paddingLeft = constantZero;\n\n function treemap(root) {\n root.x0 =\n root.y0 = 0;\n root.x1 = dx;\n root.y1 = dy;\n root.eachBefore(positionNode);\n paddingStack = [0];\n if (round) root.eachBefore(roundNode);\n return root;\n }\n\n function positionNode(node) {\n var p = paddingStack[node.depth],\n x0 = node.x0 + p,\n y0 = node.y0 + p,\n x1 = node.x1 - p,\n y1 = node.y1 - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n if (node.children) {\n p = paddingStack[node.depth + 1] = paddingInner(node) / 2;\n x0 += paddingLeft(node) - p;\n y0 += paddingTop(node) - p;\n x1 -= paddingRight(node) - p;\n y1 -= paddingBottom(node) - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n tile(node, x0, y0, x1, y1);\n }\n }\n\n treemap.round = function(x) {\n return arguments.length ? (round = !!x, treemap) : round;\n };\n\n treemap.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];\n };\n\n treemap.tile = function(x) {\n return arguments.length ? (tile = required(x), treemap) : tile;\n };\n\n treemap.padding = function(x) {\n return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();\n };\n\n treemap.paddingInner = function(x) {\n return arguments.length ? (paddingInner = typeof x === \"function\" ? x : constant(+x), treemap) : paddingInner;\n };\n\n treemap.paddingOuter = function(x) {\n return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();\n };\n\n treemap.paddingTop = function(x) {\n return arguments.length ? (paddingTop = typeof x === \"function\" ? x : constant(+x), treemap) : paddingTop;\n };\n\n treemap.paddingRight = function(x) {\n return arguments.length ? (paddingRight = typeof x === \"function\" ? x : constant(+x), treemap) : paddingRight;\n };\n\n treemap.paddingBottom = function(x) {\n return arguments.length ? (paddingBottom = typeof x === \"function\" ? x : constant(+x), treemap) : paddingBottom;\n };\n\n treemap.paddingLeft = function(x) {\n return arguments.length ? (paddingLeft = typeof x === \"function\" ? x : constant(+x), treemap) : paddingLeft;\n };\n\n return treemap;\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n i, n = nodes.length,\n sum, sums = new Array(n + 1);\n\n for (sums[0] = sum = i = 0; i < n; ++i) {\n sums[i + 1] = sum += nodes[i].value;\n }\n\n partition(0, n, parent.value, x0, y0, x1, y1);\n\n function partition(i, j, value, x0, y0, x1, y1) {\n if (i >= j - 1) {\n var node = nodes[i];\n node.x0 = x0, node.y0 = y0;\n node.x1 = x1, node.y1 = y1;\n return;\n }\n\n var valueOffset = sums[i],\n valueTarget = (value / 2) + valueOffset,\n k = i + 1,\n hi = j - 1;\n\n while (k < hi) {\n var mid = k + hi >>> 1;\n if (sums[mid] < valueTarget) k = mid + 1;\n else hi = mid;\n }\n\n if ((valueTarget - sums[k - 1]) < (sums[k] - valueTarget) && i + 1 < k) --k;\n\n var valueLeft = sums[k] - valueOffset,\n valueRight = value - valueLeft;\n\n if ((x1 - x0) > (y1 - y0)) {\n var xk = (x0 * valueRight + x1 * valueLeft) / value;\n partition(i, k, valueLeft, x0, y0, xk, y1);\n partition(k, j, valueRight, xk, y0, x1, y1);\n } else {\n var yk = (y0 * valueRight + y1 * valueLeft) / value;\n partition(i, k, valueLeft, x0, y0, x1, yk);\n partition(k, j, valueRight, x0, yk, x1, y1);\n }\n }\n}\n","import dice from \"./dice.js\";\nimport slice from \"./slice.js\";\n\nexport default function(parent, x0, y0, x1, y1) {\n (parent.depth & 1 ? slice : dice)(parent, x0, y0, x1, y1);\n}\n","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\nimport {phi, squarifyRatio} from \"./squarify.js\";\n\nexport default (function custom(ratio) {\n\n function resquarify(parent, x0, y0, x1, y1) {\n if ((rows = parent._squarify) && (rows.ratio === ratio)) {\n var rows,\n row,\n nodes,\n i,\n j = -1,\n n,\n m = rows.length,\n value = parent.value;\n\n while (++j < m) {\n row = rows[j], nodes = row.children;\n for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value;\n if (row.dice) treemapDice(row, x0, y0, x1, y0 += (y1 - y0) * row.value / value);\n else treemapSlice(row, x0, y0, x0 += (x1 - x0) * row.value / value, y1);\n value -= row.value;\n }\n } else {\n parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1);\n rows.ratio = ratio;\n }\n }\n\n resquarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return resquarify;\n})(phi);\n","export default function(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n","import {hue} from \"./color.js\";\n\nexport default function(a, b) {\n var i = hue(+a, +b);\n return function(t) {\n var x = i(t);\n return x - 360 * Math.floor(x / 360);\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","var rho = Math.SQRT2,\n rho2 = 2,\n rho4 = 4,\n epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\n// p0 = [ux0, uy0, w0]\n// p1 = [ux1, uy1, w1]\nexport default function(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000;\n\n return i;\n}\n","import {hsl as colorHsl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hsl(hue) {\n return function(start, end) {\n var h = hue((start = colorHsl(start)).h, (end = colorHsl(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hsl(hue);\nexport var hslLong = hsl(color);\n","import {lab as colorLab} from \"d3-color\";\nimport color from \"./color.js\";\n\nexport default function lab(start, end) {\n var l = color((start = colorLab(start)).l, (end = colorLab(end)).l),\n a = color(start.a, end.a),\n b = color(start.b, end.b),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.l = l(t);\n start.a = a(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n}\n","import {hcl as colorHcl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hcl(hue) {\n return function(start, end) {\n var h = hue((start = colorHcl(start)).h, (end = colorHcl(end)).h),\n c = color(start.c, end.c),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.c = c(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hcl(hue);\nexport var hclLong = hcl(color);\n","import {cubehelix as colorCubehelix} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction cubehelix(hue) {\n return (function cubehelixGamma(y) {\n y = +y;\n\n function cubehelix(start, end) {\n var h = hue((start = colorCubehelix(start)).h, (end = colorCubehelix(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(Math.pow(t, y));\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n cubehelix.gamma = cubehelixGamma;\n\n return cubehelix;\n })(1);\n}\n\nexport default cubehelix(hue);\nexport var cubehelixLong = cubehelix(color);\n","export default function piecewise(interpolate, values) {\n var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);\n while (i < n) I[i] = interpolate(v, v = values[++i]);\n return function(t) {\n var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n return I[i](t - i);\n };\n}\n","export default function(interpolator, n) {\n var samples = new Array(n);\n for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));\n return samples;\n}\n","export default function(polygon) {\n var i = -1,\n n = polygon.length,\n a,\n b = polygon[n - 1],\n area = 0;\n\n while (++i < n) {\n a = b;\n b = polygon[i];\n area += a[1] * b[0] - a[0] * b[1];\n }\n\n return area / 2;\n}\n","export default function(polygon) {\n var i = -1,\n n = polygon.length,\n x = 0,\n y = 0,\n a,\n b = polygon[n - 1],\n c,\n k = 0;\n\n while (++i < n) {\n a = b;\n b = polygon[i];\n k += c = a[0] * b[1] - b[0] * a[1];\n x += (a[0] + b[0]) * c;\n y += (a[1] + b[1]) * c;\n }\n\n return k *= 3, [x / k, y / k];\n}\n","// Returns the 2D cross product of AB and AC vectors, i.e., the z-component of\n// the 3D cross product in a quadrant I Cartesian coordinate system (+x is\n// right, +y is up). Returns a positive value if ABC is counter-clockwise,\n// negative if clockwise, and zero if the points are collinear.\nexport default function(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\n}\n","import cross from \"./cross.js\";\n\nfunction lexicographicOrder(a, b) {\n return a[0] - b[0] || a[1] - b[1];\n}\n\n// Computes the upper convex hull per the monotone chain algorithm.\n// Assumes points.length >= 3, is sorted by x, unique in y.\n// Returns an array of indices into points in left-to-right order.\nfunction computeUpperHullIndexes(points) {\n var n = points.length,\n indexes = [0, 1],\n size = 2;\n\n for (var i = 2; i < n; ++i) {\n while (size > 1 && cross(points[indexes[size - 2]], points[indexes[size - 1]], points[i]) <= 0) --size;\n indexes[size++] = i;\n }\n\n return indexes.slice(0, size); // remove popped points\n}\n\nexport default function(points) {\n if ((n = points.length) < 3) return null;\n\n var i,\n n,\n sortedPoints = new Array(n),\n flippedPoints = new Array(n);\n\n for (i = 0; i < n; ++i) sortedPoints[i] = [+points[i][0], +points[i][1], i];\n sortedPoints.sort(lexicographicOrder);\n for (i = 0; i < n; ++i) flippedPoints[i] = [sortedPoints[i][0], -sortedPoints[i][1]];\n\n var upperIndexes = computeUpperHullIndexes(sortedPoints),\n lowerIndexes = computeUpperHullIndexes(flippedPoints);\n\n // Construct the hull polygon, removing possible duplicate endpoints.\n var skipLeft = lowerIndexes[0] === upperIndexes[0],\n skipRight = lowerIndexes[lowerIndexes.length - 1] === upperIndexes[upperIndexes.length - 1],\n hull = [];\n\n // Add upper hull in right-to-l order.\n // Then add lower hull in left-to-right order.\n for (i = upperIndexes.length - 1; i >= 0; --i) hull.push(points[sortedPoints[upperIndexes[i]][2]]);\n for (i = +skipLeft; i < lowerIndexes.length - skipRight; ++i) hull.push(points[sortedPoints[lowerIndexes[i]][2]]);\n\n return hull;\n}\n","export default function(polygon, point) {\n var n = polygon.length,\n p = polygon[n - 1],\n x = point[0], y = point[1],\n x0 = p[0], y0 = p[1],\n x1, y1,\n inside = false;\n\n for (var i = 0; i < n; ++i) {\n p = polygon[i], x1 = p[0], y1 = p[1];\n if (((y1 > y) !== (y0 > y)) && (x < (x0 - x1) * (y - y1) / (y0 - y1) + x1)) inside = !inside;\n x0 = x1, y0 = y1;\n }\n\n return inside;\n}\n","export default function(polygon) {\n var i = -1,\n n = polygon.length,\n b = polygon[n - 1],\n xa,\n ya,\n xb = b[0],\n yb = b[1],\n perimeter = 0;\n\n while (++i < n) {\n xa = xb;\n ya = yb;\n b = polygon[i];\n xb = b[0];\n yb = b[1];\n xa -= xb;\n ya -= yb;\n perimeter += Math.sqrt(xa * xa + ya * ya);\n }\n\n return perimeter;\n}\n","export default function() {\n return Math.random();\n}\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomUniform(source) {\n function randomUniform(min, max) {\n min = min == null ? 0 : +min;\n max = max == null ? 1 : +max;\n if (arguments.length === 1) max = min, min = 0;\n else max -= min;\n return function() {\n return source() * max + min;\n };\n }\n\n randomUniform.source = sourceRandomUniform;\n\n return randomUniform;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomNormal(source) {\n function randomNormal(mu, sigma) {\n var x, r;\n mu = mu == null ? 0 : +mu;\n sigma = sigma == null ? 1 : +sigma;\n return function() {\n var y;\n\n // If available, use the second previously-generated uniform random.\n if (x != null) y = x, x = null;\n\n // Otherwise, generate a new x and y.\n else do {\n x = source() * 2 - 1;\n y = source() * 2 - 1;\n r = x * x + y * y;\n } while (!r || r > 1);\n\n return mu + sigma * y * Math.sqrt(-2 * Math.log(r) / r);\n };\n }\n\n randomNormal.source = sourceRandomNormal;\n\n return randomNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\nimport normal from \"./normal\";\n\nexport default (function sourceRandomLogNormal(source) {\n function randomLogNormal() {\n var randomNormal = normal.source(source).apply(this, arguments);\n return function() {\n return Math.exp(randomNormal());\n };\n }\n\n randomLogNormal.source = sourceRandomLogNormal;\n\n return randomLogNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomIrwinHall(source) {\n function randomIrwinHall(n) {\n return function() {\n for (var sum = 0, i = 0; i < n; ++i) sum += source();\n return sum;\n };\n }\n\n randomIrwinHall.source = sourceRandomIrwinHall;\n\n return randomIrwinHall;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\nimport irwinHall from \"./irwinHall\";\n\nexport default (function sourceRandomBates(source) {\n function randomBates(n) {\n var randomIrwinHall = irwinHall.source(source)(n);\n return function() {\n return randomIrwinHall() / n;\n };\n }\n\n randomBates.source = sourceRandomBates;\n\n return randomBates;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomExponential(source) {\n function randomExponential(lambda) {\n return function() {\n return -Math.log(1 - source()) / lambda;\n };\n }\n\n randomExponential.source = sourceRandomExponential;\n\n return randomExponential;\n})(defaultSource);\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.interpolator(domain); break;\n default: this.interpolator(interpolator).domain(domain); break;\n }\n return this;\n}\n","var array = Array.prototype;\n\nexport var map = array.map;\nexport var slice = array.slice;\n","import {map} from \"d3-collection\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport var implicit = {name: \"implicit\"};\n\nexport default function ordinal() {\n var index = map(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n var key = d + \"\", i = index.get(key);\n if (!i) {\n if (unknown !== implicit) return unknown;\n index.set(key, i = domain.push(d));\n }\n return range[(i - 1) % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = map();\n var i = -1, n = _.length, d, key;\n while (++i < n) if (!index.has(key = (d = _[i]) + \"\")) index.set(key, domain.push(d));\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {range as sequence} from \"d3-array\";\nimport {initRange} from \"./init\";\nimport ordinal from \"./ordinal\";\n\nexport default function band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n range = [0, 1],\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = range[1] < range[0],\n start = range[reverse - 0],\n stop = range[1 - reverse];\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = sequence(n).map(function(i) { return start + step * i; });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = [+_[0], +_[1]], rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = [+_[0], +_[1]], round = true, rescale();\n };\n\n scale.bandwidth = function() {\n return bandwidth;\n };\n\n scale.step = function() {\n return step;\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function(_) {\n return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n };\n\n scale.align = function(_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function() {\n return band(domain(), range)\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return initRange.apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nexport function point() {\n return pointish(band.apply(null, arguments).paddingInner(1));\n}\n","export default function(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport {map, slice} from \"./array\";\nimport constant from \"./constant\";\nimport number from \"./number\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(domain) {\n var a = domain[0], b = domain[domain.length - 1], t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = map.call(_, number), clamp === identity || (clamp = clamper(domain)), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = slice.call(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? clamper(domain) : identity, scale) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous(transform, untransform) {\n return transformer()(transform, untransform);\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport tickFormat from \"./tickFormat\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain(),\n i0 = 0,\n i1 = d.length - 1,\n start = d[i0],\n stop = d[i1],\n step;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n\n step = tickIncrement(start, stop, count);\n\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = tickIncrement(start, stop, count);\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = tickIncrement(start, stop, count);\n }\n\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n domain(d);\n } else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n domain(d);\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous(identity, identity);\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","import {map} from \"./array\";\nimport {linearish} from \"./linear\";\nimport number from \"./number\";\n\nexport default function identity(domain) {\n var unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : x;\n }\n\n scale.invert = scale;\n\n scale.domain = scale.range = function(_) {\n return arguments.length ? (domain = map.call(_, number), scale) : domain.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return identity(domain).unknown(unknown);\n };\n\n domain = arguments.length ? map.call(domain, number) : [0, 1];\n\n return linearish(scale);\n}\n","export default function(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","import {ticks} from \"d3-array\";\nimport {format} from \"d3-format\";\nimport nice from \"./nice\";\nimport {copy, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformLog(x) {\n return Math.log(x);\n}\n\nfunction transformExp(x) {\n return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n return base === 10 ? pow10\n : base === Math.E ? Math.exp\n : function(x) { return Math.pow(base, x); };\n}\n\nfunction logp(base) {\n return base === Math.E ? Math.log\n : base === 10 && Math.log10\n || base === 2 && Math.log2\n || (base = Math.log(base), function(x) { return Math.log(x) / base; });\n}\n\nfunction reflect(f) {\n return function(x) {\n return -f(-x);\n };\n}\n\nexport function loggish(transform) {\n var scale = transform(transformLog, transformExp),\n domain = scale.domain,\n base = 10,\n logs,\n pows;\n\n function rescale() {\n logs = logp(base), pows = powp(base);\n if (domain()[0] < 0) {\n logs = reflect(logs), pows = reflect(pows);\n transform(transformLogn, transformExpn);\n } else {\n transform(transformLog, transformExp);\n }\n return scale;\n }\n\n scale.base = function(_) {\n return arguments.length ? (base = +_, rescale()) : base;\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.ticks = function(count) {\n var d = domain(),\n u = d[0],\n v = d[d.length - 1],\n r;\n\n if (r = v < u) i = u, u = v, v = i;\n\n var i = logs(u),\n j = logs(v),\n p,\n k,\n t,\n n = count == null ? 10 : +count,\n z = [];\n\n if (!(base % 1) && j - i < n) {\n i = Math.round(i) - 1, j = Math.round(j) + 1;\n if (u > 0) for (; i < j; ++i) {\n for (k = 1, p = pows(i); k < base; ++k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n } else for (; i < j; ++i) {\n for (k = base - 1, p = pows(i); k >= 1; --k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n }\n } else {\n z = ticks(i, j, Math.min(j - i, n)).map(pows);\n }\n\n return r ? z.reverse() : z;\n };\n\n scale.tickFormat = function(count, specifier) {\n if (specifier == null) specifier = base === 10 ? \".0e\" : \",\";\n if (typeof specifier !== \"function\") specifier = format(specifier);\n if (count === Infinity) return specifier;\n if (count == null) count = 10;\n var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n return function(d) {\n var i = d / pows(Math.round(logs(d)));\n if (i * base < base - 0.5) i *= base;\n return i <= k ? specifier(d) : \"\";\n };\n };\n\n scale.nice = function() {\n return domain(nice(domain(), {\n floor: function(x) { return pows(Math.floor(logs(x))); },\n ceil: function(x) { return pows(Math.ceil(logs(x))); }\n }));\n };\n\n return scale;\n}\n\nexport default function log() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, log()).base(scale.base());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {linearish} from \"./linear\";\nimport {copy, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformSymlog(c) {\n return function(x) {\n return Math.sign(x) * Math.log1p(Math.abs(x / c));\n };\n}\n\nfunction transformSymexp(c) {\n return function(x) {\n return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n };\n}\n\nexport function symlogish(transform) {\n var c = 1, scale = transform(transformSymlog(c), transformSymexp(c));\n\n scale.constant = function(_) {\n return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n };\n\n return linearish(scale);\n}\n\nexport default function symlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, symlog()).constant(scale.constant());\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {linearish} from \"./linear\";\nimport {copy, identity, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformPow(exponent) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n };\n}\n\nfunction transformSqrt(x) {\n return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n return x < 0 ? -x * x : x * x;\n}\n\nexport function powish(transform) {\n var scale = transform(identity, identity),\n exponent = 1;\n\n function rescale() {\n return exponent === 1 ? transform(identity, identity)\n : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n : transform(transformPow(exponent), transformPow(1 / exponent));\n }\n\n scale.exponent = function(_) {\n return arguments.length ? (exponent = +_, rescale()) : exponent;\n };\n\n return linearish(scale);\n}\n\nexport default function pow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, pow()).exponent(scale.exponent());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n\nexport function sqrt() {\n return pow.apply(null, arguments).exponent(0.5);\n}\n","import {ascending, bisect, quantile as threshold} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport default function quantile() {\n var domain = [],\n range = [],\n thresholds = [],\n unknown;\n\n function rescale() {\n var i = 0, n = Math.max(1, range.length);\n thresholds = new Array(n - 1);\n while (++i < n) thresholds[i - 1] = threshold(domain, i / n);\n return scale;\n }\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : range[bisect(thresholds, x)];\n }\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN] : [\n i > 0 ? thresholds[i - 1] : domain[0],\n i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n ];\n };\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return rescale();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.quantiles = function() {\n return thresholds.slice();\n };\n\n scale.copy = function() {\n return quantile()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {linearish} from \"./linear\";\nimport {initRange} from \"./init\";\n\nexport default function quantize() {\n var x0 = 0,\n x1 = 1,\n n = 1,\n domain = [0.5],\n range = [0, 1],\n unknown;\n\n function scale(x) {\n return x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n function rescale() {\n var i = -1;\n domain = new Array(n);\n while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n return scale;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (x0 = +_[0], x1 = +_[1], rescale()) : [x0, x1];\n };\n\n scale.range = function(_) {\n return arguments.length ? (n = (range = slice.call(_)).length - 1, rescale()) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN]\n : i < 1 ? [x0, domain[0]]\n : i >= n ? [domain[n - 1], x1]\n : [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : scale;\n };\n\n scale.thresholds = function() {\n return domain.slice();\n };\n\n scale.copy = function() {\n return quantize()\n .domain([x0, x1])\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(linearish(scale), arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport default function threshold() {\n var domain = [0.5],\n range = [0, 1],\n unknown,\n n = 1;\n\n function scale(x) {\n return x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain = slice.call(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return threshold()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = function(date) {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval.js\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nvar hour = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nvar minute = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nvar second = interval(function(date) {\n date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval.js\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {bisector, tickStep} from \"d3-array\";\nimport {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport {map} from \"./array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport nice from \"./nice\";\n\nvar durationSecond = 1000,\n durationMinute = durationSecond * 60,\n durationHour = durationMinute * 60,\n durationDay = durationHour * 24,\n durationWeek = durationDay * 7,\n durationMonth = durationDay * 30,\n durationYear = durationDay * 365;\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(year, month, week, day, hour, minute, second, millisecond, format) {\n var scale = continuous(identity, identity),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n var tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n function tickInterval(interval, start, stop, step) {\n if (interval == null) interval = 10;\n\n // If a desired tick count is specified, pick a reasonable tick interval\n // based on the extent of the domain and a rough estimate of tick size.\n // Otherwise, assume interval is already a time interval and use it.\n if (typeof interval === \"number\") {\n var target = Math.abs(stop - start) / interval,\n i = bisector(function(i) { return i[2]; }).right(tickIntervals, target);\n if (i === tickIntervals.length) {\n step = tickStep(start / durationYear, stop / durationYear, interval);\n interval = year;\n } else if (i) {\n i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n step = i[1];\n interval = i[0];\n } else {\n step = Math.max(tickStep(start, stop, interval), 1);\n interval = millisecond;\n }\n }\n\n return step == null ? interval : interval.every(step);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(map.call(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval, step) {\n var d = domain(),\n t0 = d[0],\n t1 = d[d.length - 1],\n r = t1 < t0,\n t;\n if (r) t = t0, t0 = t1, t1 = t;\n t = tickInterval(interval, t0, t1, step);\n t = t ? t.range(t0, t1 + 1) : []; // inclusive stop\n return r ? t.reverse() : t;\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval, step) {\n var d = domain();\n return (interval = tickInterval(interval, d[0], d[d.length - 1], step))\n ? domain(nice(d, interval))\n : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format));\n };\n\n return scale;\n}\n\nexport default function() {\n return initRange.apply(calendar(timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","import interval from \"./interval.js\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval.js\";\nimport {durationHour} from \"./duration.js\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval.js\";\nimport {durationMinute} from \"./duration.js\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import {calendar} from \"./time\";\nimport {utcFormat} from \"d3-time-format\";\nimport {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond} from \"d3-time\";\nimport {initRange} from \"./init\";\n\nexport default function() {\n return initRange.apply(calendar(utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\n","import {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\nimport {linearish} from \"./linear\";\nimport {loggish} from \"./log\";\nimport {symlogish} from \"./symlog\";\nimport {powish} from \"./pow\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 1,\n t0,\n t1,\n k10,\n transform,\n interpolator = identity,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? (t0 = transform(x0 = +_[0]), t1 = transform(x1 = +_[1]), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n return scale;\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .interpolator(source.interpolator())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport default function sequential() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, sequential());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialLog() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, sequentialLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSqrt() {\n return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n","import {ascending, bisect} from \"d3-array\";\nimport {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\n\nexport default function sequentialQuantile() {\n var domain = [],\n interpolator = identity;\n\n function scale(x) {\n if (!isNaN(x = +x)) return interpolator((bisect(domain, x) - 1) / (domain.length - 1));\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return scale;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.copy = function() {\n return sequentialQuantile(interpolator).domain(domain);\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n","import {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\nimport {linearish} from \"./linear\";\nimport {loggish} from \"./log\";\nimport {copy} from \"./sequential\";\nimport {symlogish} from \"./symlog\";\nimport {powish} from \"./pow\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 0.5,\n x2 = 1,\n t0,\n t1,\n t2,\n k10,\n k21,\n interpolator = identity,\n transform,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (x < t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? (t0 = transform(x0 = +_[0]), t1 = transform(x1 = +_[1]), t2 = transform(x2 = +_[2]), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), scale) : [x0, x1, x2];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1);\n return scale;\n };\n}\n\nexport default function diverging() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, diverging());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingLog() {\n var scale = loggish(transformer()).domain([0.1, 1, 10]);\n\n scale.copy = function() {\n return copy(scale, divergingLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSqrt() {\n return divergingPow.apply(null, arguments).exponent(0.5);\n}\n","export default function(specifier) {\n var n = specifier.length / 6 | 0, colors = new Array(n), i = 0;\n while (i < n) colors[i] = \"#\" + specifier.slice(i * 6, ++i * 6);\n return colors;\n}\n","import colors from \"../colors.js\";\n\nexport default colors(\"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab\");\n","import {interpolateRgbBasis} from \"d3-interpolate\";\n\nexport default function(scheme) {\n return interpolateRgbBasis(scheme[scheme.length - 1]);\n}\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"d8b365f5f5f55ab4ac\",\n \"a6611adfc27d80cdc1018571\",\n \"a6611adfc27df5f5f580cdc1018571\",\n \"8c510ad8b365f6e8c3c7eae55ab4ac01665e\",\n \"8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e\",\n \"8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e\",\n \"8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e\",\n \"5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30\",\n \"5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"af8dc3f7f7f77fbf7b\",\n \"7b3294c2a5cfa6dba0008837\",\n \"7b3294c2a5cff7f7f7a6dba0008837\",\n \"762a83af8dc3e7d4e8d9f0d37fbf7b1b7837\",\n \"762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837\",\n \"762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837\",\n \"762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837\",\n \"40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b\",\n \"40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e9a3c9f7f7f7a1d76a\",\n \"d01c8bf1b6dab8e1864dac26\",\n \"d01c8bf1b6daf7f7f7b8e1864dac26\",\n \"c51b7de9a3c9fde0efe6f5d0a1d76a4d9221\",\n \"c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221\",\n \"c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221\",\n \"c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221\",\n \"8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419\",\n \"8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"998ec3f7f7f7f1a340\",\n \"5e3c99b2abd2fdb863e66101\",\n \"5e3c99b2abd2f7f7f7fdb863e66101\",\n \"542788998ec3d8daebfee0b6f1a340b35806\",\n \"542788998ec3d8daebf7f7f7fee0b6f1a340b35806\",\n \"5427888073acb2abd2d8daebfee0b6fdb863e08214b35806\",\n \"5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806\",\n \"2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08\",\n \"2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ef8a62f7f7f767a9cf\",\n \"ca0020f4a58292c5de0571b0\",\n \"ca0020f4a582f7f7f792c5de0571b0\",\n \"b2182bef8a62fddbc7d1e5f067a9cf2166ac\",\n \"b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac\",\n \"b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac\",\n \"b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac\",\n \"67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061\",\n \"67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ef8a62ffffff999999\",\n \"ca0020f4a582bababa404040\",\n \"ca0020f4a582ffffffbababa404040\",\n \"b2182bef8a62fddbc7e0e0e09999994d4d4d\",\n \"b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d\",\n \"b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d\",\n \"b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d\",\n \"67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a\",\n \"67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf91bfdb\",\n \"d7191cfdae61abd9e92c7bb6\",\n \"d7191cfdae61ffffbfabd9e92c7bb6\",\n \"d73027fc8d59fee090e0f3f891bfdb4575b4\",\n \"d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4\",\n \"d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4\",\n \"d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4\",\n \"a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695\",\n \"a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf91cf60\",\n \"d7191cfdae61a6d96a1a9641\",\n \"d7191cfdae61ffffbfa6d96a1a9641\",\n \"d73027fc8d59fee08bd9ef8b91cf601a9850\",\n \"d73027fc8d59fee08bffffbfd9ef8b91cf601a9850\",\n \"d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850\",\n \"d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850\",\n \"a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837\",\n \"a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf99d594\",\n \"d7191cfdae61abdda42b83ba\",\n \"d7191cfdae61ffffbfabdda42b83ba\",\n \"d53e4ffc8d59fee08be6f59899d5943288bd\",\n \"d53e4ffc8d59fee08bffffbfe6f59899d5943288bd\",\n \"d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd\",\n \"d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd\",\n \"9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2\",\n \"9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e5f5f999d8c92ca25f\",\n \"edf8fbb2e2e266c2a4238b45\",\n \"edf8fbb2e2e266c2a42ca25f006d2c\",\n \"edf8fbccece699d8c966c2a42ca25f006d2c\",\n \"edf8fbccece699d8c966c2a441ae76238b45005824\",\n \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824\",\n \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e0ecf49ebcda8856a7\",\n \"edf8fbb3cde38c96c688419d\",\n \"edf8fbb3cde38c96c68856a7810f7c\",\n \"edf8fbbfd3e69ebcda8c96c68856a7810f7c\",\n \"edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b\",\n \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b\",\n \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e0f3dba8ddb543a2ca\",\n \"f0f9e8bae4bc7bccc42b8cbe\",\n \"f0f9e8bae4bc7bccc443a2ca0868ac\",\n \"f0f9e8ccebc5a8ddb57bccc443a2ca0868ac\",\n \"f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee8c8fdbb84e34a33\",\n \"fef0d9fdcc8afc8d59d7301f\",\n \"fef0d9fdcc8afc8d59e34a33b30000\",\n \"fef0d9fdd49efdbb84fc8d59e34a33b30000\",\n \"fef0d9fdd49efdbb84fc8d59ef6548d7301f990000\",\n \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000\",\n \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ece2f0a6bddb1c9099\",\n \"f6eff7bdc9e167a9cf02818a\",\n \"f6eff7bdc9e167a9cf1c9099016c59\",\n \"f6eff7d0d1e6a6bddb67a9cf1c9099016c59\",\n \"f6eff7d0d1e6a6bddb67a9cf3690c002818a016450\",\n \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450\",\n \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ece7f2a6bddb2b8cbe\",\n \"f1eef6bdc9e174a9cf0570b0\",\n \"f1eef6bdc9e174a9cf2b8cbe045a8d\",\n \"f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d\",\n \"f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e7e1efc994c7dd1c77\",\n \"f1eef6d7b5d8df65b0ce1256\",\n \"f1eef6d7b5d8df65b0dd1c77980043\",\n \"f1eef6d4b9dac994c7df65b0dd1c77980043\",\n \"f1eef6d4b9dac994c7df65b0e7298ace125691003f\",\n \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f\",\n \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fde0ddfa9fb5c51b8a\",\n \"feebe2fbb4b9f768a1ae017e\",\n \"feebe2fbb4b9f768a1c51b8a7a0177\",\n \"feebe2fcc5c0fa9fb5f768a1c51b8a7a0177\",\n \"feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"edf8b17fcdbb2c7fb8\",\n \"ffffcca1dab441b6c4225ea8\",\n \"ffffcca1dab441b6c42c7fb8253494\",\n \"ffffccc7e9b47fcdbb41b6c42c7fb8253494\",\n \"ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"f7fcb9addd8e31a354\",\n \"ffffccc2e69978c679238443\",\n \"ffffccc2e69978c67931a354006837\",\n \"ffffccd9f0a3addd8e78c67931a354006837\",\n \"ffffccd9f0a3addd8e78c67941ab5d238443005a32\",\n \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32\",\n \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fff7bcfec44fd95f0e\",\n \"ffffd4fed98efe9929cc4c02\",\n \"ffffd4fed98efe9929d95f0e993404\",\n \"ffffd4fee391fec44ffe9929d95f0e993404\",\n \"ffffd4fee391fec44ffe9929ec7014cc4c028c2d04\",\n \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04\",\n \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ffeda0feb24cf03b20\",\n \"ffffb2fecc5cfd8d3ce31a1c\",\n \"ffffb2fecc5cfd8d3cf03b20bd0026\",\n \"ffffb2fed976feb24cfd8d3cf03b20bd0026\",\n \"ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"deebf79ecae13182bd\",\n \"eff3ffbdd7e76baed62171b5\",\n \"eff3ffbdd7e76baed63182bd08519c\",\n \"eff3ffc6dbef9ecae16baed63182bd08519c\",\n \"eff3ffc6dbef9ecae16baed64292c62171b5084594\",\n \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594\",\n \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e5f5e0a1d99b31a354\",\n \"edf8e9bae4b374c476238b45\",\n \"edf8e9bae4b374c47631a354006d2c\",\n \"edf8e9c7e9c0a1d99b74c47631a354006d2c\",\n \"edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32\",\n \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32\",\n \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"f0f0f0bdbdbd636363\",\n \"f7f7f7cccccc969696525252\",\n \"f7f7f7cccccc969696636363252525\",\n \"f7f7f7d9d9d9bdbdbd969696636363252525\",\n \"f7f7f7d9d9d9bdbdbd969696737373525252252525\",\n \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525\",\n \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"efedf5bcbddc756bb1\",\n \"f2f0f7cbc9e29e9ac86a51a3\",\n \"f2f0f7cbc9e29e9ac8756bb154278f\",\n \"f2f0f7dadaebbcbddc9e9ac8756bb154278f\",\n \"f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee0d2fc9272de2d26\",\n \"fee5d9fcae91fb6a4acb181d\",\n \"fee5d9fcae91fb6a4ade2d26a50f15\",\n \"fee5d9fcbba1fc9272fb6a4ade2d26a50f15\",\n \"fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee6cefdae6be6550d\",\n \"feeddefdbe85fd8d3cd94701\",\n \"feeddefdbe85fd8d3ce6550da63603\",\n \"feeddefdd0a2fdae6bfd8d3ce6550da63603\",\n \"feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704\"\n).map(colors);\n\nexport default ramp(scheme);\n","export default function(t) {\n t = Math.max(0, Math.min(1, t));\n return \"rgb(\"\n + Math.max(0, Math.min(255, Math.round(-4.54 - t * (35.34 - t * (2381.73 - t * (6402.7 - t * (7024.72 - t * 2710.57))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(32.49 + t * (170.73 + t * (52.82 - t * (131.46 - t * (176.58 - t * 67.37))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(81.24 + t * (442.36 - t * (2482.43 - t * (6167.24 - t * (6614.94 - t * 2475.67)))))))\n + \")\";\n}\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport default interpolateCubehelixLong(cubehelix(300, 0.5, 0.0), cubehelix(-240, 0.5, 1.0));\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport var warm = interpolateCubehelixLong(cubehelix(-100, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nexport var cool = interpolateCubehelixLong(cubehelix(260, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nvar c = cubehelix();\n\nexport default function(t) {\n if (t < 0 || t > 1) t -= Math.floor(t);\n var ts = Math.abs(t - 0.5);\n c.h = 360 * t - 100;\n c.s = 1.5 - 1.5 * ts;\n c.l = 0.8 - 0.9 * ts;\n return c + \"\";\n}\n","import {rgb} from \"d3-color\";\n\nvar c = rgb(),\n pi_1_3 = Math.PI / 3,\n pi_2_3 = Math.PI * 2 / 3;\n\nexport default function(t) {\n var x;\n t = (0.5 - t) * Math.PI;\n c.r = 255 * (x = Math.sin(t)) * x;\n c.g = 255 * (x = Math.sin(t + pi_1_3)) * x;\n c.b = 255 * (x = Math.sin(t + pi_2_3)) * x;\n return c + \"\";\n}\n","export default function(t) {\n t = Math.max(0, Math.min(1, t));\n return \"rgb(\"\n + Math.max(0, Math.min(255, Math.round(34.61 + t * (1172.33 - t * (10793.56 - t * (33300.12 - t * (38394.49 - t * 14825.05))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(23.31 + t * (557.33 + t * (1225.33 - t * (3574.96 - t * (1073.77 + t * 707.56))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(27.2 + t * (3211.1 - t * (15327.97 - t * (27814 - t * (22569.18 - t * 6838.66)))))))\n + \")\";\n}\n","import colors from \"../colors.js\";\n\nfunction ramp(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n\nexport default ramp(colors(\"44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725\"));\n\nexport var magma = ramp(colors(\"00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf\"));\n\nexport var inferno = ramp(colors(\"00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4\"));\n\nexport var plasma = ramp(colors(\"0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921\"));\n","import creator from \"./creator\";\nimport select from \"./select\";\n\nexport default function(name) {\n return select(creator(name).call(document.documentElement));\n}\n","var nextId = 0;\n\nexport default function local() {\n return new Local;\n}\n\nfunction Local() {\n this._ = \"@\" + (++nextId).toString(36);\n}\n\nLocal.prototype = local.prototype = {\n constructor: Local,\n get: function(node) {\n var id = this._;\n while (!(id in node)) if (!(node = node.parentNode)) return;\n return node[id];\n },\n set: function(node, value) {\n return node[this._] = value;\n },\n remove: function(node) {\n return this._ in node && delete node[this._];\n },\n toString: function() {\n return this._;\n }\n};\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([document.querySelectorAll(selector)], [document.documentElement])\n : new Selection([selector == null ? [] : selector], root);\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node, touches) {\n if (touches == null) touches = sourceEvent().touches;\n\n for (var i = 0, n = touches ? touches.length : 0, points = new Array(n); i < n; ++i) {\n points[i] = point(node, touches[i]);\n }\n\n return points;\n}\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null;\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle.\n if (da < pi && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function line(data) {\n var i,\n n = data.length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function() {\n var x0 = pointX,\n x1 = null,\n y0 = constant(0),\n y1 = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function area(data) {\n var i,\n j,\n k,\n n = data.length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n function arealine() {\n return line().defined(defined).curve(curve).context(context);\n }\n\n area.x = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n };\n\n area.x0 = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n };\n\n area.x1 = function(_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n };\n\n area.y = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n };\n\n area.y0 = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n };\n\n area.y1 = function(_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n };\n\n area.lineX0 =\n area.lineY0 = function() {\n return arealine().x(x0).y(y0);\n };\n\n area.lineY1 = function() {\n return arealine().x(x0).y(y1);\n };\n\n area.lineX1 = function() {\n return arealine().x(x1).y(y0);\n };\n\n area.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n };\n\n area.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n\n area.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n\n return area;\n}\n","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(d) {\n return d;\n}\n","import constant from \"./constant.js\";\nimport descending from \"./descending.js\";\nimport identity from \"./identity.js\";\nimport {tau} from \"./math.js\";\n\nexport default function() {\n var value = identity,\n sortValues = descending,\n sort = null,\n startAngle = constant(0),\n endAngle = constant(tau),\n padAngle = constant(0);\n\n function pie(data) {\n var i,\n n = data.length,\n j,\n k,\n sum = 0,\n index = new Array(n),\n arcs = new Array(n),\n a0 = +startAngle.apply(this, arguments),\n da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)),\n a1,\n p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n pa = p * (da < 0 ? -1 : 1),\n v;\n\n for (i = 0; i < n; ++i) {\n if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n sum += v;\n }\n }\n\n // Optionally sort the arcs by previously-computed values or by data.\n if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\n // Compute the arcs! They are stored in the original data's order.\n for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n data: data[j],\n index: i,\n value: v,\n startAngle: a0,\n endAngle: a1,\n padAngle: p\n };\n }\n\n return arcs;\n }\n\n pie.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), pie) : value;\n };\n\n pie.sortValues = function(_) {\n return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n };\n\n pie.sort = function(_) {\n return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n };\n\n pie.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : startAngle;\n };\n\n pie.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : endAngle;\n };\n\n pie.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : padAngle;\n };\n\n return pie;\n}\n","import curveLinear from \"./linear.js\";\n\nexport var curveRadialLinear = curveRadial(curveLinear);\n\nfunction Radial(curve) {\n this._curve = curve;\n}\n\nRadial.prototype = {\n areaStart: function() {\n this._curve.areaStart();\n },\n areaEnd: function() {\n this._curve.areaEnd();\n },\n lineStart: function() {\n this._curve.lineStart();\n },\n lineEnd: function() {\n this._curve.lineEnd();\n },\n point: function(a, r) {\n this._curve.point(r * Math.sin(a), r * -Math.cos(a));\n }\n};\n\nexport default function curveRadial(curve) {\n\n function radial(context) {\n return new Radial(curve(context));\n }\n\n radial._curve = curve;\n\n return radial;\n}\n","import curveRadial, {curveRadialLinear} from \"./curve/radial.js\";\nimport line from \"./line.js\";\n\nexport function lineRadial(l) {\n var c = l.curve;\n\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n\n l.curve = function(_) {\n return arguments.length ? c(curveRadial(_)) : c()._curve;\n };\n\n return l;\n}\n\nexport default function() {\n return lineRadial(line().curve(curveRadialLinear));\n}\n","import curveRadial, {curveRadialLinear} from \"./curve/radial.js\";\nimport area from \"./area.js\";\nimport {lineRadial} from \"./lineRadial.js\";\n\nexport default function() {\n var a = area().curve(curveRadialLinear),\n c = a.curve,\n x0 = a.lineX0,\n x1 = a.lineX1,\n y0 = a.lineY0,\n y1 = a.lineY1;\n\n a.angle = a.x, delete a.x;\n a.startAngle = a.x0, delete a.x0;\n a.endAngle = a.x1, delete a.x1;\n a.radius = a.y, delete a.y;\n a.innerRadius = a.y0, delete a.y0;\n a.outerRadius = a.y1, delete a.y1;\n a.lineStartAngle = function() { return lineRadial(x0()); }, delete a.lineX0;\n a.lineEndAngle = function() { return lineRadial(x1()); }, delete a.lineX1;\n a.lineInnerRadius = function() { return lineRadial(y0()); }, delete a.lineY0;\n a.lineOuterRadius = function() { return lineRadial(y1()); }, delete a.lineY1;\n\n a.curve = function(_) {\n return arguments.length ? c(curveRadial(_)) : c()._curve;\n };\n\n return a;\n}\n","export default function(x, y) {\n return [(y = +y) * Math.cos(x -= Math.PI / 2), y * Math.sin(x)];\n}\n","export var slice = Array.prototype.slice;\n","import {path} from \"d3-path\";\nimport {slice} from \"../array.js\";\nimport constant from \"../constant.js\";\nimport {x as pointX, y as pointY} from \"../point.js\";\nimport pointRadial from \"../pointRadial.js\";\n\nfunction linkSource(d) {\n return d.source;\n}\n\nfunction linkTarget(d) {\n return d.target;\n}\n\nfunction link(curve) {\n var source = linkSource,\n target = linkTarget,\n x = pointX,\n y = pointY,\n context = null;\n\n function link() {\n var buffer, argv = slice.call(arguments), s = source.apply(this, argv), t = target.apply(this, argv);\n if (!context) context = buffer = path();\n curve(context, +x.apply(this, (argv[0] = s, argv)), +y.apply(this, argv), +x.apply(this, (argv[0] = t, argv)), +y.apply(this, argv));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n link.source = function(_) {\n return arguments.length ? (source = _, link) : source;\n };\n\n link.target = function(_) {\n return arguments.length ? (target = _, link) : target;\n };\n\n link.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), link) : x;\n };\n\n link.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), link) : y;\n };\n\n link.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), link) : context;\n };\n\n return link;\n}\n\nfunction curveHorizontal(context, x0, y0, x1, y1) {\n context.moveTo(x0, y0);\n context.bezierCurveTo(x0 = (x0 + x1) / 2, y0, x0, y1, x1, y1);\n}\n\nfunction curveVertical(context, x0, y0, x1, y1) {\n context.moveTo(x0, y0);\n context.bezierCurveTo(x0, y0 = (y0 + y1) / 2, x1, y0, x1, y1);\n}\n\nfunction curveRadial(context, x0, y0, x1, y1) {\n var p0 = pointRadial(x0, y0),\n p1 = pointRadial(x0, y0 = (y0 + y1) / 2),\n p2 = pointRadial(x1, y0),\n p3 = pointRadial(x1, y1);\n context.moveTo(p0[0], p0[1]);\n context.bezierCurveTo(p1[0], p1[1], p2[0], p2[1], p3[0], p3[1]);\n}\n\nexport function linkHorizontal() {\n return link(curveHorizontal);\n}\n\nexport function linkVertical() {\n return link(curveVertical);\n}\n\nexport function linkRadial() {\n var l = link(curveRadial);\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n return l;\n}\n","import {pi, tau} from \"../math.js\";\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / pi);\n context.moveTo(r, 0);\n context.arc(0, 0, r, 0, tau);\n }\n};\n","export default {\n draw: function(context, size) {\n var r = Math.sqrt(size / 5) / 2;\n context.moveTo(-3 * r, -r);\n context.lineTo(-r, -r);\n context.lineTo(-r, -3 * r);\n context.lineTo(r, -3 * r);\n context.lineTo(r, -r);\n context.lineTo(3 * r, -r);\n context.lineTo(3 * r, r);\n context.lineTo(r, r);\n context.lineTo(r, 3 * r);\n context.lineTo(-r, 3 * r);\n context.lineTo(-r, r);\n context.lineTo(-3 * r, r);\n context.closePath();\n }\n};\n","var tan30 = Math.sqrt(1 / 3),\n tan30_2 = tan30 * 2;\n\nexport default {\n draw: function(context, size) {\n var y = Math.sqrt(size / tan30_2),\n x = y * tan30;\n context.moveTo(0, -y);\n context.lineTo(x, 0);\n context.lineTo(0, y);\n context.lineTo(-x, 0);\n context.closePath();\n }\n};\n","import {pi, tau} from \"../math.js\";\n\nvar ka = 0.89081309152928522810,\n kr = Math.sin(pi / 10) / Math.sin(7 * pi / 10),\n kx = Math.sin(tau / 10) * kr,\n ky = -Math.cos(tau / 10) * kr;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size * ka),\n x = kx * r,\n y = ky * r;\n context.moveTo(0, -r);\n context.lineTo(x, y);\n for (var i = 1; i < 5; ++i) {\n var a = tau * i / 5,\n c = Math.cos(a),\n s = Math.sin(a);\n context.lineTo(s * r, -c * r);\n context.lineTo(c * x - s * y, s * x + c * y);\n }\n context.closePath();\n }\n};\n","export default {\n draw: function(context, size) {\n var w = Math.sqrt(size),\n x = -w / 2;\n context.rect(x, x, w, w);\n }\n};\n","var sqrt3 = Math.sqrt(3);\n\nexport default {\n draw: function(context, size) {\n var y = -Math.sqrt(size / (sqrt3 * 3));\n context.moveTo(0, y * 2);\n context.lineTo(-sqrt3 * y, -y);\n context.lineTo(sqrt3 * y, -y);\n context.closePath();\n }\n};\n","var c = -0.5,\n s = Math.sqrt(3) / 2,\n k = 1 / Math.sqrt(12),\n a = (k / 2 + 1) * 3;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / a),\n x0 = r / 2,\n y0 = r * k,\n x1 = x0,\n y1 = r * k + r,\n x2 = -x1,\n y2 = y1;\n context.moveTo(x0, y0);\n context.lineTo(x1, y1);\n context.lineTo(x2, y2);\n context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n context.closePath();\n }\n};\n","import {path} from \"d3-path\";\nimport circle from \"./symbol/circle.js\";\nimport cross from \"./symbol/cross.js\";\nimport diamond from \"./symbol/diamond.js\";\nimport star from \"./symbol/star.js\";\nimport square from \"./symbol/square.js\";\nimport triangle from \"./symbol/triangle.js\";\nimport wye from \"./symbol/wye.js\";\nimport constant from \"./constant.js\";\n\nexport var symbols = [\n circle,\n cross,\n diamond,\n square,\n star,\n triangle,\n wye\n];\n\nexport default function() {\n var type = constant(circle),\n size = constant(64),\n context = null;\n\n function symbol() {\n var buffer;\n if (!context) context = buffer = path();\n type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n symbol.type = function(_) {\n return arguments.length ? (type = typeof _ === \"function\" ? _ : constant(_), symbol) : type;\n };\n\n symbol.size = function(_) {\n return arguments.length ? (size = typeof _ === \"function\" ? _ : constant(+_), symbol) : size;\n };\n\n symbol.context = function(_) {\n return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n };\n\n return symbol;\n}\n","export default function() {}\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nexport function Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // proceed\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new Basis(context);\n}\n","import noop from \"../noop.js\";\nimport {point} from \"./basis.js\";\n\nfunction BasisClosed(context) {\n this._context = context;\n}\n\nBasisClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x2, this._y2);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x2, this._y2);\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisClosed(context);\n}\n","import {point} from \"./basis.js\";\n\nfunction BasisOpen(context) {\n this._context = context;\n}\n\nBasisOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisOpen(context);\n}\n","import {Basis} from \"./basis.js\";\n\nfunction Bundle(context, beta) {\n this._basis = new Basis(context);\n this._beta = beta;\n}\n\nBundle.prototype = {\n lineStart: function() {\n this._x = [];\n this._y = [];\n this._basis.lineStart();\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n j = x.length - 1;\n\n if (j > 0) {\n var x0 = x[0],\n y0 = y[0],\n dx = x[j] - x0,\n dy = y[j] - y0,\n i = -1,\n t;\n\n while (++i <= j) {\n t = i / j;\n this._basis.point(\n this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),\n this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)\n );\n }\n }\n\n this._x = this._y = null;\n this._basis.lineEnd();\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\nexport default (function custom(beta) {\n\n function bundle(context) {\n return beta === 1 ? new Basis(context) : new Bundle(context, beta);\n }\n\n bundle.beta = function(beta) {\n return custom(+beta);\n };\n\n return bundle;\n})(0.85);\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n that._x1 + that._k * (that._x2 - that._x0),\n that._y1 + that._k * (that._y2 - that._y0),\n that._x2 + that._k * (that._x1 - x),\n that._y2 + that._k * (that._y1 - y),\n that._x2,\n that._y2\n );\n}\n\nexport function Cardinal(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: point(this, this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new Cardinal(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import noop from \"../noop.js\";\nimport {point} from \"./cardinal.js\";\n\nexport function CardinalClosed(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalClosed(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {point} from \"./cardinal.js\";\n\nexport function CardinalOpen(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalOpen(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {epsilon} from \"../math.js\";\nimport {Cardinal} from \"./cardinal.js\";\n\nexport function point(that, x, y) {\n var x1 = that._x1,\n y1 = that._y1,\n x2 = that._x2,\n y2 = that._y2;\n\n if (that._l01_a > epsilon) {\n var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n }\n\n if (that._l23_a > epsilon) {\n var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n }\n\n that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\n\nfunction CatmullRom(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRom.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: this.point(this._x2, this._y2); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalClosed} from \"./cardinalClosed.js\";\nimport noop from \"../noop.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomClosed(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalOpen} from \"./cardinalOpen.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomOpen(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import noop from \"../noop.js\";\n\nfunction LinearClosed(context) {\n this._context = context;\n}\n\nLinearClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._point) this._context.closePath();\n },\n point: function(x, y) {\n x = +x, y = +y;\n if (this._point) this._context.lineTo(x, y);\n else this._point = 1, this._context.moveTo(x, y);\n }\n};\n\nexport default function(context) {\n return new LinearClosed(context);\n}\n","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","function Natural(context) {\n this._context = context;\n}\n\nNatural.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = [];\n this._y = [];\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n n = x.length;\n\n if (n) {\n this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n if (n === 2) {\n this._context.lineTo(x[1], y[1]);\n } else {\n var px = controlPoints(x),\n py = controlPoints(y);\n for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n }\n }\n }\n\n if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n this._line = 1 - this._line;\n this._x = this._y = null;\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n var i,\n n = x.length - 1,\n m,\n a = new Array(n),\n b = new Array(n),\n r = new Array(n);\n a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n a[n - 1] = r[n - 1] / b[n - 1];\n for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n b[n - 1] = (x[n] + a[n - 1]) / 2;\n for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n return [a, b];\n}\n\nexport default function(context) {\n return new Natural(context);\n}\n","function Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n","export default function(series, order) {\n if (!((n = series.length) > 1)) return;\n for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {\n s0 = s1, s1 = series[order[i]];\n for (j = 0; j < m; ++j) {\n s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];\n }\n }\n}\n","export default function(series) {\n var n = series.length, o = new Array(n);\n while (--n >= 0) o[n] = n;\n return o;\n}\n","import {slice} from \"./array.js\";\nimport constant from \"./constant.js\";\nimport offsetNone from \"./offset/none.js\";\nimport orderNone from \"./order/none.js\";\n\nfunction stackValue(d, key) {\n return d[key];\n}\n\nexport default function() {\n var keys = constant([]),\n order = orderNone,\n offset = offsetNone,\n value = stackValue;\n\n function stack(data) {\n var kz = keys.apply(this, arguments),\n i,\n m = data.length,\n n = kz.length,\n sz = new Array(n),\n oz;\n\n for (i = 0; i < n; ++i) {\n for (var ki = kz[i], si = sz[i] = new Array(m), j = 0, sij; j < m; ++j) {\n si[j] = sij = [0, +value(data[j], ki, j, data)];\n sij.data = data[j];\n }\n si.key = ki;\n }\n\n for (i = 0, oz = order(sz); i < n; ++i) {\n sz[oz[i]].index = i;\n }\n\n offset(sz, oz);\n return sz;\n }\n\n stack.keys = function(_) {\n return arguments.length ? (keys = typeof _ === \"function\" ? _ : constant(slice.call(_)), stack) : keys;\n };\n\n stack.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), stack) : value;\n };\n\n stack.order = function(_) {\n return arguments.length ? (order = _ == null ? orderNone : typeof _ === \"function\" ? _ : constant(slice.call(_)), stack) : order;\n };\n\n stack.offset = function(_) {\n return arguments.length ? (offset = _ == null ? offsetNone : _, stack) : offset;\n };\n\n return stack;\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) {\n for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0;\n if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y;\n }\n none(series, order);\n}\n","export default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, j = 0, d, dy, yp, yn, n, m = series[order[0]].length; j < m; ++j) {\n for (yp = yn = 0, i = 0; i < n; ++i) {\n if ((dy = (d = series[order[i]][j])[1] - d[0]) > 0) {\n d[0] = yp, d[1] = yp += dy;\n } else if (dy < 0) {\n d[1] = yn, d[0] = yn += dy;\n } else {\n d[0] = 0, d[1] = dy;\n }\n }\n }\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) {\n for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0;\n s0[j][1] += s0[j][0] = -y / 2;\n }\n none(series, order);\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return;\n for (var y = 0, j = 1, s0, m, n; j < m; ++j) {\n for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) {\n var si = series[order[i]],\n sij0 = si[j][1] || 0,\n sij1 = si[j - 1][1] || 0,\n s3 = (sij0 - sij1) / 2;\n for (var k = 0; k < i; ++k) {\n var sk = series[order[k]],\n skj0 = sk[j][1] || 0,\n skj1 = sk[j - 1][1] || 0;\n s3 += skj0 - skj1;\n }\n s1 += sij0, s2 += s3 * sij0;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n if (s1) y -= s2 / s1;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n none(series, order);\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n var peaks = series.map(peak);\n return none(series).sort(function(a, b) { return peaks[a] - peaks[b]; });\n}\n\nfunction peak(series) {\n var i = -1, j = 0, n = series.length, vi, vj = -Infinity;\n while (++i < n) if ((vi = +series[i][1]) > vj) vj = vi, j = i;\n return j;\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n var sums = series.map(sum);\n return none(series).sort(function(a, b) { return sums[a] - sums[b]; });\n}\n\nexport function sum(series) {\n var s = 0, i = -1, n = series.length, v;\n while (++i < n) if (v = +series[i][1]) s += v;\n return s;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function(series) {\n return ascending(series).reverse();\n}\n","import appearance from \"./appearance.js\";\nimport {sum} from \"./ascending.js\";\n\nexport default function(series) {\n var n = series.length,\n i,\n j,\n sums = series.map(sum),\n order = appearance(series),\n top = 0,\n bottom = 0,\n tops = [],\n bottoms = [];\n\n for (i = 0; i < n; ++i) {\n j = order[i];\n if (top < bottom) {\n top += sums[j];\n tops.push(j);\n } else {\n bottom += sums[j];\n bottoms.push(j);\n }\n }\n\n return bottoms.reverse().concat(tops);\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n return none(series).reverse();\n}\n","import {utcFormat} from \"./defaultLocale.js\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat.js\";\nimport {utcParse} from \"./defaultLocale.js\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","import {Timer, now} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer, total = delay;\n if (delay == null) return t.restart(callback, delay, time), t;\n delay = +delay, time = time == null ? now() : +time;\n t.restart(function tick(elapsed) {\n elapsed += total;\n t.restart(tick, total += delay, time);\n callback(elapsed);\n }, delay, time);\n return t;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export function x(d) {\n return d[0];\n}\n\nexport function y(d) {\n return d[1];\n}\n","function RedBlackTree() {\n this._ = null; // root node\n}\n\nexport function RedBlackNode(node) {\n node.U = // parent node\n node.C = // color - true for red, false for black\n node.L = // left node\n node.R = // right node\n node.P = // previous node\n node.N = null; // next node\n}\n\nRedBlackTree.prototype = {\n constructor: RedBlackTree,\n\n insert: function(after, node) {\n var parent, grandpa, uncle;\n\n if (after) {\n node.P = after;\n node.N = after.N;\n if (after.N) after.N.P = node;\n after.N = node;\n if (after.R) {\n after = after.R;\n while (after.L) after = after.L;\n after.L = node;\n } else {\n after.R = node;\n }\n parent = after;\n } else if (this._) {\n after = RedBlackFirst(this._);\n node.P = null;\n node.N = after;\n after.P = after.L = node;\n parent = after;\n } else {\n node.P = node.N = null;\n this._ = node;\n parent = null;\n }\n node.L = node.R = null;\n node.U = parent;\n node.C = true;\n\n after = node;\n while (parent && parent.C) {\n grandpa = parent.U;\n if (parent === grandpa.L) {\n uncle = grandpa.R;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.R) {\n RedBlackRotateLeft(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n RedBlackRotateRight(this, grandpa);\n }\n } else {\n uncle = grandpa.L;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.L) {\n RedBlackRotateRight(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n RedBlackRotateLeft(this, grandpa);\n }\n }\n parent = after.U;\n }\n this._.C = false;\n },\n\n remove: function(node) {\n if (node.N) node.N.P = node.P;\n if (node.P) node.P.N = node.N;\n node.N = node.P = null;\n\n var parent = node.U,\n sibling,\n left = node.L,\n right = node.R,\n next,\n red;\n\n if (!left) next = right;\n else if (!right) next = left;\n else next = RedBlackFirst(right);\n\n if (parent) {\n if (parent.L === node) parent.L = next;\n else parent.R = next;\n } else {\n this._ = next;\n }\n\n if (left && right) {\n red = next.C;\n next.C = node.C;\n next.L = left;\n left.U = next;\n if (next !== right) {\n parent = next.U;\n next.U = node.U;\n node = next.R;\n parent.L = node;\n next.R = right;\n right.U = next;\n } else {\n next.U = parent;\n parent = next;\n node = next.R;\n }\n } else {\n red = node.C;\n node = next;\n }\n\n if (node) node.U = parent;\n if (red) return;\n if (node && node.C) { node.C = false; return; }\n\n do {\n if (node === this._) break;\n if (node === parent.L) {\n sibling = parent.R;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n RedBlackRotateLeft(this, parent);\n sibling = parent.R;\n }\n if ((sibling.L && sibling.L.C)\n || (sibling.R && sibling.R.C)) {\n if (!sibling.R || !sibling.R.C) {\n sibling.L.C = false;\n sibling.C = true;\n RedBlackRotateRight(this, sibling);\n sibling = parent.R;\n }\n sibling.C = parent.C;\n parent.C = sibling.R.C = false;\n RedBlackRotateLeft(this, parent);\n node = this._;\n break;\n }\n } else {\n sibling = parent.L;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n RedBlackRotateRight(this, parent);\n sibling = parent.L;\n }\n if ((sibling.L && sibling.L.C)\n || (sibling.R && sibling.R.C)) {\n if (!sibling.L || !sibling.L.C) {\n sibling.R.C = false;\n sibling.C = true;\n RedBlackRotateLeft(this, sibling);\n sibling = parent.L;\n }\n sibling.C = parent.C;\n parent.C = sibling.L.C = false;\n RedBlackRotateRight(this, parent);\n node = this._;\n break;\n }\n }\n sibling.C = true;\n node = parent;\n parent = parent.U;\n } while (!node.C);\n\n if (node) node.C = false;\n }\n};\n\nfunction RedBlackRotateLeft(tree, node) {\n var p = node,\n q = node.R,\n parent = p.U;\n\n if (parent) {\n if (parent.L === p) parent.L = q;\n else parent.R = q;\n } else {\n tree._ = q;\n }\n\n q.U = parent;\n p.U = q;\n p.R = q.L;\n if (p.R) p.R.U = p;\n q.L = p;\n}\n\nfunction RedBlackRotateRight(tree, node) {\n var p = node,\n q = node.L,\n parent = p.U;\n\n if (parent) {\n if (parent.L === p) parent.L = q;\n else parent.R = q;\n } else {\n tree._ = q;\n }\n\n q.U = parent;\n p.U = q;\n p.L = q.R;\n if (p.L) p.L.U = p;\n q.R = p;\n}\n\nfunction RedBlackFirst(node) {\n while (node.L) node = node.L;\n return node;\n}\n\nexport default RedBlackTree;\n","import {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createEdge(left, right, v0, v1) {\n var edge = [null, null],\n index = edges.push(edge) - 1;\n edge.left = left;\n edge.right = right;\n if (v0) setEdgeEnd(edge, left, right, v0);\n if (v1) setEdgeEnd(edge, right, left, v1);\n cells[left.index].halfedges.push(index);\n cells[right.index].halfedges.push(index);\n return edge;\n}\n\nexport function createBorderEdge(left, v0, v1) {\n var edge = [v0, v1];\n edge.left = left;\n return edge;\n}\n\nexport function setEdgeEnd(edge, left, right, vertex) {\n if (!edge[0] && !edge[1]) {\n edge[0] = vertex;\n edge.left = left;\n edge.right = right;\n } else if (edge.left === right) {\n edge[1] = vertex;\n } else {\n edge[0] = vertex;\n }\n}\n\n// Liang–Barsky line clipping.\nfunction clipEdge(edge, x0, y0, x1, y1) {\n var a = edge[0],\n b = edge[1],\n ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (!(t0 > 0) && !(t1 < 1)) return true; // TODO Better check?\n\n if (t0 > 0) edge[0] = [ax + t0 * dx, ay + t0 * dy];\n if (t1 < 1) edge[1] = [ax + t1 * dx, ay + t1 * dy];\n return true;\n}\n\nfunction connectEdge(edge, x0, y0, x1, y1) {\n var v1 = edge[1];\n if (v1) return true;\n\n var v0 = edge[0],\n left = edge.left,\n right = edge.right,\n lx = left[0],\n ly = left[1],\n rx = right[0],\n ry = right[1],\n fx = (lx + rx) / 2,\n fy = (ly + ry) / 2,\n fm,\n fb;\n\n if (ry === ly) {\n if (fx < x0 || fx >= x1) return;\n if (lx > rx) {\n if (!v0) v0 = [fx, y0];\n else if (v0[1] >= y1) return;\n v1 = [fx, y1];\n } else {\n if (!v0) v0 = [fx, y1];\n else if (v0[1] < y0) return;\n v1 = [fx, y0];\n }\n } else {\n fm = (lx - rx) / (ry - ly);\n fb = fy - fm * fx;\n if (fm < -1 || fm > 1) {\n if (lx > rx) {\n if (!v0) v0 = [(y0 - fb) / fm, y0];\n else if (v0[1] >= y1) return;\n v1 = [(y1 - fb) / fm, y1];\n } else {\n if (!v0) v0 = [(y1 - fb) / fm, y1];\n else if (v0[1] < y0) return;\n v1 = [(y0 - fb) / fm, y0];\n }\n } else {\n if (ly < ry) {\n if (!v0) v0 = [x0, fm * x0 + fb];\n else if (v0[0] >= x1) return;\n v1 = [x1, fm * x1 + fb];\n } else {\n if (!v0) v0 = [x1, fm * x1 + fb];\n else if (v0[0] < x0) return;\n v1 = [x0, fm * x0 + fb];\n }\n }\n }\n\n edge[0] = v0;\n edge[1] = v1;\n return true;\n}\n\nexport function clipEdges(x0, y0, x1, y1) {\n var i = edges.length,\n edge;\n\n while (i--) {\n if (!connectEdge(edge = edges[i], x0, y0, x1, y1)\n || !clipEdge(edge, x0, y0, x1, y1)\n || !(Math.abs(edge[0][0] - edge[1][0]) > epsilon\n || Math.abs(edge[0][1] - edge[1][1]) > epsilon)) {\n delete edges[i];\n }\n }\n}\n","import {createBorderEdge} from \"./Edge\";\nimport {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createCell(site) {\n return cells[site.index] = {\n site: site,\n halfedges: []\n };\n}\n\nfunction cellHalfedgeAngle(cell, edge) {\n var site = cell.site,\n va = edge.left,\n vb = edge.right;\n if (site === vb) vb = va, va = site;\n if (vb) return Math.atan2(vb[1] - va[1], vb[0] - va[0]);\n if (site === va) va = edge[1], vb = edge[0];\n else va = edge[0], vb = edge[1];\n return Math.atan2(va[0] - vb[0], vb[1] - va[1]);\n}\n\nexport function cellHalfedgeStart(cell, edge) {\n return edge[+(edge.left !== cell.site)];\n}\n\nexport function cellHalfedgeEnd(cell, edge) {\n return edge[+(edge.left === cell.site)];\n}\n\nexport function sortCellHalfedges() {\n for (var i = 0, n = cells.length, cell, halfedges, j, m; i < n; ++i) {\n if ((cell = cells[i]) && (m = (halfedges = cell.halfedges).length)) {\n var index = new Array(m),\n array = new Array(m);\n for (j = 0; j < m; ++j) index[j] = j, array[j] = cellHalfedgeAngle(cell, edges[halfedges[j]]);\n index.sort(function(i, j) { return array[j] - array[i]; });\n for (j = 0; j < m; ++j) array[j] = halfedges[index[j]];\n for (j = 0; j < m; ++j) halfedges[j] = array[j];\n }\n }\n}\n\nexport function clipCells(x0, y0, x1, y1) {\n var nCells = cells.length,\n iCell,\n cell,\n site,\n iHalfedge,\n halfedges,\n nHalfedges,\n start,\n startX,\n startY,\n end,\n endX,\n endY,\n cover = true;\n\n for (iCell = 0; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n site = cell.site;\n halfedges = cell.halfedges;\n iHalfedge = halfedges.length;\n\n // Remove any dangling clipped edges.\n while (iHalfedge--) {\n if (!edges[halfedges[iHalfedge]]) {\n halfedges.splice(iHalfedge, 1);\n }\n }\n\n // Insert any border edges as necessary.\n iHalfedge = 0, nHalfedges = halfedges.length;\n while (iHalfedge < nHalfedges) {\n end = cellHalfedgeEnd(cell, edges[halfedges[iHalfedge]]), endX = end[0], endY = end[1];\n start = cellHalfedgeStart(cell, edges[halfedges[++iHalfedge % nHalfedges]]), startX = start[0], startY = start[1];\n if (Math.abs(endX - startX) > epsilon || Math.abs(endY - startY) > epsilon) {\n halfedges.splice(iHalfedge, 0, edges.push(createBorderEdge(site, end,\n Math.abs(endX - x0) < epsilon && y1 - endY > epsilon ? [x0, Math.abs(startX - x0) < epsilon ? startY : y1]\n : Math.abs(endY - y1) < epsilon && x1 - endX > epsilon ? [Math.abs(startY - y1) < epsilon ? startX : x1, y1]\n : Math.abs(endX - x1) < epsilon && endY - y0 > epsilon ? [x1, Math.abs(startX - x1) < epsilon ? startY : y0]\n : Math.abs(endY - y0) < epsilon && endX - x0 > epsilon ? [Math.abs(startY - y0) < epsilon ? startX : x0, y0]\n : null)) - 1);\n ++nHalfedges;\n }\n }\n\n if (nHalfedges) cover = false;\n }\n }\n\n // If there weren’t any edges, have the closest site cover the extent.\n // It doesn’t matter which corner of the extent we measure!\n if (cover) {\n var dx, dy, d2, dc = Infinity;\n\n for (iCell = 0, cover = null; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n site = cell.site;\n dx = site[0] - x0;\n dy = site[1] - y0;\n d2 = dx * dx + dy * dy;\n if (d2 < dc) dc = d2, cover = cell;\n }\n }\n\n if (cover) {\n var v00 = [x0, y0], v01 = [x0, y1], v11 = [x1, y1], v10 = [x1, y0];\n cover.halfedges.push(\n edges.push(createBorderEdge(site = cover.site, v00, v01)) - 1,\n edges.push(createBorderEdge(site, v01, v11)) - 1,\n edges.push(createBorderEdge(site, v11, v10)) - 1,\n edges.push(createBorderEdge(site, v10, v00)) - 1\n );\n }\n }\n\n // Lastly delete any cells with no edges; these were entirely clipped.\n for (iCell = 0; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n if (!cell.halfedges.length) {\n delete cells[iCell];\n }\n }\n }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {circles, epsilon2} from \"./Diagram\";\n\nvar circlePool = [];\n\nexport var firstCircle;\n\nfunction Circle() {\n RedBlackNode(this);\n this.x =\n this.y =\n this.arc =\n this.site =\n this.cy = null;\n}\n\nexport function attachCircle(arc) {\n var lArc = arc.P,\n rArc = arc.N;\n\n if (!lArc || !rArc) return;\n\n var lSite = lArc.site,\n cSite = arc.site,\n rSite = rArc.site;\n\n if (lSite === rSite) return;\n\n var bx = cSite[0],\n by = cSite[1],\n ax = lSite[0] - bx,\n ay = lSite[1] - by,\n cx = rSite[0] - bx,\n cy = rSite[1] - by;\n\n var d = 2 * (ax * cy - ay * cx);\n if (d >= -epsilon2) return;\n\n var ha = ax * ax + ay * ay,\n hc = cx * cx + cy * cy,\n x = (cy * ha - ay * hc) / d,\n y = (ax * hc - cx * ha) / d;\n\n var circle = circlePool.pop() || new Circle;\n circle.arc = arc;\n circle.site = cSite;\n circle.x = x + bx;\n circle.y = (circle.cy = y + by) + Math.sqrt(x * x + y * y); // y bottom\n\n arc.circle = circle;\n\n var before = null,\n node = circles._;\n\n while (node) {\n if (circle.y < node.y || (circle.y === node.y && circle.x <= node.x)) {\n if (node.L) node = node.L;\n else { before = node.P; break; }\n } else {\n if (node.R) node = node.R;\n else { before = node; break; }\n }\n }\n\n circles.insert(before, circle);\n if (!before) firstCircle = circle;\n}\n\nexport function detachCircle(arc) {\n var circle = arc.circle;\n if (circle) {\n if (!circle.P) firstCircle = circle.N;\n circles.remove(circle);\n circlePool.push(circle);\n RedBlackNode(circle);\n arc.circle = null;\n }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {createCell} from \"./Cell\";\nimport {attachCircle, detachCircle} from \"./Circle\";\nimport {createEdge, setEdgeEnd} from \"./Edge\";\nimport {beaches, epsilon} from \"./Diagram\";\n\nvar beachPool = [];\n\nfunction Beach() {\n RedBlackNode(this);\n this.edge =\n this.site =\n this.circle = null;\n}\n\nfunction createBeach(site) {\n var beach = beachPool.pop() || new Beach;\n beach.site = site;\n return beach;\n}\n\nfunction detachBeach(beach) {\n detachCircle(beach);\n beaches.remove(beach);\n beachPool.push(beach);\n RedBlackNode(beach);\n}\n\nexport function removeBeach(beach) {\n var circle = beach.circle,\n x = circle.x,\n y = circle.cy,\n vertex = [x, y],\n previous = beach.P,\n next = beach.N,\n disappearing = [beach];\n\n detachBeach(beach);\n\n var lArc = previous;\n while (lArc.circle\n && Math.abs(x - lArc.circle.x) < epsilon\n && Math.abs(y - lArc.circle.cy) < epsilon) {\n previous = lArc.P;\n disappearing.unshift(lArc);\n detachBeach(lArc);\n lArc = previous;\n }\n\n disappearing.unshift(lArc);\n detachCircle(lArc);\n\n var rArc = next;\n while (rArc.circle\n && Math.abs(x - rArc.circle.x) < epsilon\n && Math.abs(y - rArc.circle.cy) < epsilon) {\n next = rArc.N;\n disappearing.push(rArc);\n detachBeach(rArc);\n rArc = next;\n }\n\n disappearing.push(rArc);\n detachCircle(rArc);\n\n var nArcs = disappearing.length,\n iArc;\n for (iArc = 1; iArc < nArcs; ++iArc) {\n rArc = disappearing[iArc];\n lArc = disappearing[iArc - 1];\n setEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n }\n\n lArc = disappearing[0];\n rArc = disappearing[nArcs - 1];\n rArc.edge = createEdge(lArc.site, rArc.site, null, vertex);\n\n attachCircle(lArc);\n attachCircle(rArc);\n}\n\nexport function addBeach(site) {\n var x = site[0],\n directrix = site[1],\n lArc,\n rArc,\n dxl,\n dxr,\n node = beaches._;\n\n while (node) {\n dxl = leftBreakPoint(node, directrix) - x;\n if (dxl > epsilon) node = node.L; else {\n dxr = x - rightBreakPoint(node, directrix);\n if (dxr > epsilon) {\n if (!node.R) {\n lArc = node;\n break;\n }\n node = node.R;\n } else {\n if (dxl > -epsilon) {\n lArc = node.P;\n rArc = node;\n } else if (dxr > -epsilon) {\n lArc = node;\n rArc = node.N;\n } else {\n lArc = rArc = node;\n }\n break;\n }\n }\n }\n\n createCell(site);\n var newArc = createBeach(site);\n beaches.insert(lArc, newArc);\n\n if (!lArc && !rArc) return;\n\n if (lArc === rArc) {\n detachCircle(lArc);\n rArc = createBeach(lArc.site);\n beaches.insert(newArc, rArc);\n newArc.edge = rArc.edge = createEdge(lArc.site, newArc.site);\n attachCircle(lArc);\n attachCircle(rArc);\n return;\n }\n\n if (!rArc) { // && lArc\n newArc.edge = createEdge(lArc.site, newArc.site);\n return;\n }\n\n // else lArc !== rArc\n detachCircle(lArc);\n detachCircle(rArc);\n\n var lSite = lArc.site,\n ax = lSite[0],\n ay = lSite[1],\n bx = site[0] - ax,\n by = site[1] - ay,\n rSite = rArc.site,\n cx = rSite[0] - ax,\n cy = rSite[1] - ay,\n d = 2 * (bx * cy - by * cx),\n hb = bx * bx + by * by,\n hc = cx * cx + cy * cy,\n vertex = [(cy * hb - by * hc) / d + ax, (bx * hc - cx * hb) / d + ay];\n\n setEdgeEnd(rArc.edge, lSite, rSite, vertex);\n newArc.edge = createEdge(lSite, site, null, vertex);\n rArc.edge = createEdge(site, rSite, null, vertex);\n attachCircle(lArc);\n attachCircle(rArc);\n}\n\nfunction leftBreakPoint(arc, directrix) {\n var site = arc.site,\n rfocx = site[0],\n rfocy = site[1],\n pby2 = rfocy - directrix;\n\n if (!pby2) return rfocx;\n\n var lArc = arc.P;\n if (!lArc) return -Infinity;\n\n site = lArc.site;\n var lfocx = site[0],\n lfocy = site[1],\n plby2 = lfocy - directrix;\n\n if (!plby2) return lfocx;\n\n var hl = lfocx - rfocx,\n aby2 = 1 / pby2 - 1 / plby2,\n b = hl / plby2;\n\n if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n\n return (rfocx + lfocx) / 2;\n}\n\nfunction rightBreakPoint(arc, directrix) {\n var rArc = arc.N;\n if (rArc) return leftBreakPoint(rArc, directrix);\n var site = arc.site;\n return site[1] === directrix ? site[0] : Infinity;\n}\n","import {addBeach, removeBeach} from \"./Beach\";\nimport {sortCellHalfedges, cellHalfedgeStart, clipCells} from \"./Cell\";\nimport {firstCircle} from \"./Circle\";\nimport {clipEdges} from \"./Edge\";\nimport RedBlackTree from \"./RedBlackTree\";\n\nexport var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var beaches;\nexport var cells;\nexport var circles;\nexport var edges;\n\nfunction triangleArea(a, b, c) {\n return (a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1]);\n}\n\nfunction lexicographic(a, b) {\n return b[1] - a[1]\n || b[0] - a[0];\n}\n\nexport default function Diagram(sites, extent) {\n var site = sites.sort(lexicographic).pop(),\n x,\n y,\n circle;\n\n edges = [];\n cells = new Array(sites.length);\n beaches = new RedBlackTree;\n circles = new RedBlackTree;\n\n while (true) {\n circle = firstCircle;\n if (site && (!circle || site[1] < circle.y || (site[1] === circle.y && site[0] < circle.x))) {\n if (site[0] !== x || site[1] !== y) {\n addBeach(site);\n x = site[0], y = site[1];\n }\n site = sites.pop();\n } else if (circle) {\n removeBeach(circle.arc);\n } else {\n break;\n }\n }\n\n sortCellHalfedges();\n\n if (extent) {\n var x0 = +extent[0][0],\n y0 = +extent[0][1],\n x1 = +extent[1][0],\n y1 = +extent[1][1];\n clipEdges(x0, y0, x1, y1);\n clipCells(x0, y0, x1, y1);\n }\n\n this.edges = edges;\n this.cells = cells;\n\n beaches =\n circles =\n edges =\n cells = null;\n}\n\nDiagram.prototype = {\n constructor: Diagram,\n\n polygons: function() {\n var edges = this.edges;\n\n return this.cells.map(function(cell) {\n var polygon = cell.halfedges.map(function(i) { return cellHalfedgeStart(cell, edges[i]); });\n polygon.data = cell.site.data;\n return polygon;\n });\n },\n\n triangles: function() {\n var triangles = [],\n edges = this.edges;\n\n this.cells.forEach(function(cell, i) {\n if (!(m = (halfedges = cell.halfedges).length)) return;\n var site = cell.site,\n halfedges,\n j = -1,\n m,\n s0,\n e1 = edges[halfedges[m - 1]],\n s1 = e1.left === site ? e1.right : e1.left;\n\n while (++j < m) {\n s0 = s1;\n e1 = edges[halfedges[j]];\n s1 = e1.left === site ? e1.right : e1.left;\n if (s0 && s1 && i < s0.index && i < s1.index && triangleArea(site, s0, s1) < 0) {\n triangles.push([site.data, s0.data, s1.data]);\n }\n }\n });\n\n return triangles;\n },\n\n links: function() {\n return this.edges.filter(function(edge) {\n return edge.right;\n }).map(function(edge) {\n return {\n source: edge.left.data,\n target: edge.right.data\n };\n });\n },\n\n find: function(x, y, radius) {\n var that = this, i0, i1 = that._found || 0, n = that.cells.length, cell;\n\n // Use the previously-found cell, or start with an arbitrary one.\n while (!(cell = that.cells[i1])) if (++i1 >= n) return null;\n var dx = x - cell.site[0], dy = y - cell.site[1], d2 = dx * dx + dy * dy;\n\n // Traverse the half-edges to find a closer cell, if any.\n do {\n cell = that.cells[i0 = i1], i1 = null;\n cell.halfedges.forEach(function(e) {\n var edge = that.edges[e], v = edge.left;\n if ((v === cell.site || !v) && !(v = edge.right)) return;\n var vx = x - v[0], vy = y - v[1], v2 = vx * vx + vy * vy;\n if (v2 < d2) d2 = v2, i1 = v.index;\n });\n } while (i1 !== null);\n\n that._found = i0;\n\n return radius == null || d2 <= radius * radius ? cell.site : null;\n }\n}\n","import constant from \"./constant\";\nimport {x as pointX, y as pointY} from \"./point\";\nimport Diagram, {epsilon} from \"./Diagram\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n extent = null;\n\n function voronoi(data) {\n return new Diagram(data.map(function(d, i) {\n var s = [Math.round(x(d, i, data) / epsilon) * epsilon, Math.round(y(d, i, data) / epsilon) * epsilon];\n s.index = i;\n s.data = d;\n return s;\n }), extent);\n }\n\n voronoi.polygons = function(data) {\n return voronoi(data).polygons();\n };\n\n voronoi.links = function(data) {\n return voronoi(data).links();\n };\n\n voronoi.triangles = function(data) {\n return voronoi(data).triangles();\n };\n\n voronoi.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), voronoi) : x;\n };\n\n voronoi.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), voronoi) : y;\n };\n\n voronoi.extent = function(_) {\n return arguments.length ? (extent = _ == null ? null : [[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]], voronoi) : extent && [[extent[0][0], extent[0][1]], [extent[1][0], extent[1][1]]];\n };\n\n voronoi.size = function(_) {\n return arguments.length ? (extent = _ == null ? null : [[0, 0], [+_[0], +_[1]]], voronoi) : extent && [extent[1][0] - extent[0][0], extent[1][1] - extent[0][1]];\n };\n\n return voronoi;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function ZoomEvent(target, type, transform) {\n this.target = target;\n this.type = type;\n this.transform = transform;\n}\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolateZoom} from \"d3-interpolate\";\nimport {event, customEvent, select, mouse, touch} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport ZoomEvent from \"./event.js\";\nimport {Transform, identity} from \"./transform.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var e = this;\n if (e instanceof SVGElement) {\n e = e.ownerSVGElement || e;\n if (e.hasAttribute(\"viewBox\")) {\n e = e.viewBox.baseVal;\n return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n }\n return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n }\n return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta() {\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002);\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n return transform.translate(\n dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n );\n}\n\nexport default function() {\n var filter = defaultFilter,\n extent = defaultExtent,\n constrain = defaultConstrain,\n wheelDelta = defaultWheelDelta,\n touchable = defaultTouchable,\n scaleExtent = [0, Infinity],\n translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n duration = 250,\n interpolate = interpolateZoom,\n listeners = dispatch(\"start\", \"zoom\", \"end\"),\n touchstarting,\n touchending,\n touchDelay = 500,\n wheelDelay = 150,\n clickDistance2 = 0;\n\n function zoom(selection) {\n selection\n .property(\"__zoom\", defaultTransform)\n .on(\"wheel.zoom\", wheeled)\n .on(\"mousedown.zoom\", mousedowned)\n .on(\"dblclick.zoom\", dblclicked)\n .filter(touchable)\n .on(\"touchstart.zoom\", touchstarted)\n .on(\"touchmove.zoom\", touchmoved)\n .on(\"touchend.zoom touchcancel.zoom\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n zoom.transform = function(collection, transform, point) {\n var selection = collection.selection ? collection.selection() : collection;\n selection.property(\"__zoom\", defaultTransform);\n if (collection !== selection) {\n schedule(collection, transform, point);\n } else {\n selection.interrupt().each(function() {\n gesture(this, arguments)\n .start()\n .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n .end();\n });\n }\n };\n\n zoom.scaleBy = function(selection, k, p) {\n zoom.scaleTo(selection, function() {\n var k0 = this.__zoom.k,\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return k0 * k1;\n }, p);\n };\n\n zoom.scaleTo = function(selection, k, p) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t0 = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n p1 = t0.invert(p0),\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n }, p);\n };\n\n zoom.translateBy = function(selection, x, y) {\n zoom.transform(selection, function() {\n return constrain(this.__zoom.translate(\n typeof x === \"function\" ? x.apply(this, arguments) : x,\n typeof y === \"function\" ? y.apply(this, arguments) : y\n ), extent.apply(this, arguments), translateExtent);\n });\n };\n\n zoom.translateTo = function(selection, x, y, p) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n typeof y === \"function\" ? -y.apply(this, arguments) : -y\n ), e, translateExtent);\n }, p);\n };\n\n function scale(transform, k) {\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n }\n\n function translate(transform, p0, p1) {\n var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n }\n\n function centroid(extent) {\n return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n }\n\n function schedule(transition, transform, point) {\n transition\n .on(\"start.zoom\", function() { gesture(this, arguments).start(); })\n .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).end(); })\n .tween(\"zoom\", function() {\n var that = this,\n args = arguments,\n g = gesture(that, args),\n e = extent.apply(that, args),\n p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n a = that.__zoom,\n b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n return function(t) {\n if (t === 1) t = b; // Avoid rounding error on end.\n else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n g.zoom(null, t);\n };\n });\n }\n\n function gesture(that, args, clean) {\n return (!clean && that.__zooming) || new Gesture(that, args);\n }\n\n function Gesture(that, args) {\n this.that = that;\n this.args = args;\n this.active = 0;\n this.extent = extent.apply(that, args);\n this.taps = 0;\n }\n\n Gesture.prototype = {\n start: function() {\n if (++this.active === 1) {\n this.that.__zooming = this;\n this.emit(\"start\");\n }\n return this;\n },\n zoom: function(key, transform) {\n if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n this.that.__zoom = transform;\n this.emit(\"zoom\");\n return this;\n },\n end: function() {\n if (--this.active === 0) {\n delete this.that.__zooming;\n this.emit(\"end\");\n }\n return this;\n },\n emit: function(type) {\n customEvent(new ZoomEvent(zoom, type, this.that.__zoom), listeners.apply, listeners, [type, this.that, this.args]);\n }\n };\n\n function wheeled() {\n if (!filter.apply(this, arguments)) return;\n var g = gesture(this, arguments),\n t = this.__zoom,\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n p = mouse(this);\n\n // If the mouse is in the same location as before, reuse it.\n // If there were recent wheel events, reset the wheel idle timeout.\n if (g.wheel) {\n if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n g.mouse[1] = t.invert(g.mouse[0] = p);\n }\n clearTimeout(g.wheel);\n }\n\n // If this wheel event won’t trigger a transform change, ignore it.\n else if (t.k === k) return;\n\n // Otherwise, capture the mouse point and location at the start.\n else {\n g.mouse = [p, t.invert(p)];\n interrupt(this);\n g.start();\n }\n\n noevent();\n g.wheel = setTimeout(wheelidled, wheelDelay);\n g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n function wheelidled() {\n g.wheel = null;\n g.end();\n }\n }\n\n function mousedowned() {\n if (touchending || !filter.apply(this, arguments)) return;\n var g = gesture(this, arguments, true),\n v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n p = mouse(this),\n x0 = event.clientX,\n y0 = event.clientY;\n\n dragDisable(event.view);\n nopropagation();\n g.mouse = [p, this.__zoom.invert(p)];\n interrupt(this);\n g.start();\n\n function mousemoved() {\n noevent();\n if (!g.moved) {\n var dx = event.clientX - x0, dy = event.clientY - y0;\n g.moved = dx * dx + dy * dy > clickDistance2;\n }\n g.zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = mouse(g.that), g.mouse[1]), g.extent, translateExtent));\n }\n\n function mouseupped() {\n v.on(\"mousemove.zoom mouseup.zoom\", null);\n dragEnable(event.view, g.moved);\n noevent();\n g.end();\n }\n }\n\n function dblclicked() {\n if (!filter.apply(this, arguments)) return;\n var t0 = this.__zoom,\n p0 = mouse(this),\n p1 = t0.invert(p0),\n k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, arguments), translateExtent);\n\n noevent();\n if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0);\n else select(this).call(zoom.transform, t1);\n }\n\n function touchstarted() {\n if (!filter.apply(this, arguments)) return;\n var touches = event.touches,\n n = touches.length,\n g = gesture(this, arguments, event.changedTouches.length === n),\n started, i, t, p;\n\n nopropagation();\n for (i = 0; i < n; ++i) {\n t = touches[i], p = touch(this, touches, t.identifier);\n p = [p, this.__zoom.invert(p), t.identifier];\n if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n }\n\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n if (started) {\n if (g.taps < 2) touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n interrupt(this);\n g.start();\n }\n }\n\n function touchmoved() {\n if (!this.__zooming) return;\n var g = gesture(this, arguments),\n touches = event.changedTouches,\n n = touches.length, i, t, p, l;\n\n noevent();\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n g.taps = 0;\n for (i = 0; i < n; ++i) {\n t = touches[i], p = touch(this, touches, t.identifier);\n if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n }\n t = g.that.__zoom;\n if (g.touch1) {\n var p0 = g.touch0[0], l0 = g.touch0[1],\n p1 = g.touch1[0], l1 = g.touch1[1],\n dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n t = scale(t, Math.sqrt(dp / dl));\n p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n }\n else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n else return;\n g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n }\n\n function touchended() {\n if (!this.__zooming) return;\n var g = gesture(this, arguments),\n touches = event.changedTouches,\n n = touches.length, i, t;\n\n nopropagation();\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, touchDelay);\n for (i = 0; i < n; ++i) {\n t = touches[i];\n if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n }\n if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n else {\n g.end();\n // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n if (g.taps === 2) {\n var p = select(this).on(\"dblclick.zoom\");\n if (p) p.apply(this, arguments);\n }\n }\n }\n\n zoom.wheelDelta = function(_) {\n return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom) : wheelDelta;\n };\n\n zoom.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), zoom) : filter;\n };\n\n zoom.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom) : touchable;\n };\n\n zoom.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n };\n\n zoom.scaleExtent = function(_) {\n return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n };\n\n zoom.translateExtent = function(_) {\n return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n };\n\n zoom.constrain = function(_) {\n return arguments.length ? (constrain = _, zoom) : constrain;\n };\n\n zoom.duration = function(_) {\n return arguments.length ? (duration = +_, zoom) : duration;\n };\n\n zoom.interpolate = function(_) {\n return arguments.length ? (interpolate = _, zoom) : interpolate;\n };\n\n zoom.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? zoom : value;\n };\n\n zoom.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n };\n\n return zoom;\n}\n","/**\n * @license\n * Lodash \n * Copyright OpenJS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.21';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function',\n INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading whitespace. */\n var reTrimStart = /^\\s+/;\n\n /** Used to match a single whitespace character. */\n var reWhitespace = /\\s/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /**\n * Used to validate the `validate` option in `_.template` variable.\n *\n * Forbids characters which could potentially change the meaning of the function argument definition:\n * - \"(),\" (modification of function parameters)\n * - \"=\" (default value)\n * - \"[]{}\" (destructuring of function parameters)\n * - \"/\" (beginning of a comment)\n * - whitespace\n */\n var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\n function baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\n function trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n var low = 0,\n high = array == null ? 0 : array.length;\n if (high === 0) {\n return 0;\n }\n\n value = iteratee(value);\n var valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '

    ' + func(text) + '

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

    fred, barney, & pebbles

    '\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<%- value %>');\n * compiled({ 'value': '